关于安卓使用glide加载得出drawable,bitmap

简介: 关于安卓使用glide加载得出drawable,bitmap

背景

recyclerview中,IamgeView的高度根据glide加载图片返回的宽高进行配置,会偶发,glide加载生成的drawable宽高混乱,代码如下:

            Glide.with(context.getApplicationContext())
                    .load(img == null ? t : img)
                    .apply(options)
                    .addListener(new RequestListener<Drawable>() {
                        @Override
                        public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                            if (listener != null) {
                                listener.onLoadFailed(e, model, target, isFirstResource);
                            }
                            return false;
                        }

                        @Override
                        public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                            if (listener != null) {
                                listener.onResourceReady(resource, model, target, dataSource, isFirstResource);
                            }
                            return false;
                        }
                    })
                    .into(imageView);

实际开发中,发现onResourceReady的resource,宽高会偶发错乱,因此,换一种方法实现,内容如下:

 Glide.with(context.getApplicationContext())
                    .asBitmap()
                    .load(img == null ? t : img)
                    .apply(options)
                    .into(new CustomTarget<Bitmap>() {
                        @Override
                        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                            if (listener != null) {
                                int width = resource.getWidth();
                                int height = resource.getHeight();
                                LogUtils.d("onResourceReady url: " + finalImg + " width: " + width + " height: " + height);
                                listener.ready((width >= height), width, height, resource);
                            }
                        }

                        @Override
                        public void onLoadCleared(@Nullable Drawable placeholder) {
                            if (listener != null) {
                                listener.loadFailed();
                            }
                        }
                    });

这种情况下,bitmap经过实测,它的宽高是准确的,所以目前换成了这种方法实现。

原因是因为recyclerview中,imageview的复用问题,导致了drawable的问题,最后加载完图片也是有问题的。该问题需要结合复用,与ImageView进行思路。

目录
相关文章
|
7月前
|
API Android开发 数据安全/隐私保护
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
249 0
|
12天前
|
Android开发
Android Mediatek NVRAM 加载 MAC 地址并禁用 MAC 地址更新
Android Mediatek NVRAM 加载 MAC 地址并禁用 MAC 地址更新
6 0
|
2月前
|
Android开发
[Android jni] Bitmap与Mat对象的相互转换
[Android jni] Bitmap与Mat对象的相互转换
57 0
|
4月前
|
存储 缓存 编解码
Android 性能优化: 解释Bitmap的优化策略。
Android 性能优化: 解释Bitmap的优化策略。
42 1
|
4月前
|
XML 编解码 Android开发
Android各种各样的Drawable-更新中
Android各种各样的Drawable-更新中
59 0
|
5月前
|
API Android开发
[Android]图片加载库Glide
[Android]图片加载库Glide
56 0
|
5月前
|
Android开发
[Android]Layer Drawable
[Android]Layer Drawable
24 0
|
5月前
|
Android开发
[Android]Shape Drawable
[Android]Shape Drawable
42 0
|
5月前
|
XML Android开发 数据格式
[Android]Bitmap Drawable
[Android]Bitmap Drawable
29 0
|
5月前
|
XML 算法 Java
Android App开发之位图加工Bitmap中转换位图的像素色彩、裁剪内部区域、利用矩阵变换位图的讲解及实战(附源码和演示)
Android App开发之位图加工Bitmap中转换位图的像素色彩、裁剪内部区域、利用矩阵变换位图的讲解及实战(附源码和演示)
31 0