Glide 判断图片是否存在 以及获得宽高

来源:互联网 发布:淘宝卖包包的好店 编辑:程序博客网 时间:2024/06/17 23:57

Glide作为一个网络记载框架,功能强大自然不用说。前段时间产品要求获得图片之后,按照屏幕的宽度去计算高度。而后台告诉我们,只给Url 不保证图片真实存在。扎心了,老铁。
我一阵百度,一阵谷歌。没有找到(谁找得到了给我说一下,谢谢)。
没办法,我想了一下,转换思路,先将图片转成bitmap,如果bitmap不为空的话,是不是就可以判断图片真实存在了。按照这个思路。我找到了Glide一个东西 RequestListener接口。可以打开看看。有两个需要实现的方法:onException和onResourceReady这里写图片描述
我猜的:第一个方法就是发生异常进入的,第二个方法中的bitmap 就是真实存在的。通过设置发现确实如此。` /**
* TODO:上线前记得修改
*/
public static void loadMessageImage(Context context, int defaultId, String resourceId, final ImageView imageView, RequestListener listener) {
Glide.with(context)
.load(BASE_URL_IMG + resourceId).asBitmap()
.placeholder(defaultId)
.listener(listener)
.into(imageView);
Log.e(“jxx245”, BASE_URL_IMG + resourceId);

}`上面这个是封装的方法下面是应用的
    GlideManager.loadMessageImage(context, R.drawable.shape_white_xian, "/msg/" + entity.getId() + "/title.png", holder.imageIv, new RequestListener<String, Bitmap>() {            @Override            public boolean onException(Exception e, String model, Target<Bitmap> target, boolean isFirstResource) {                holder.imageIv.setVisibility(View.GONE);                return false;            }            @Override            public boolean onResourceReady(Bitmap resource, String model, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) {                if (resource!=null){                    holder.imageIv.setVisibility(View.VISIBLE);                    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) holder.imageIv.getLayoutParams();                    float resource_width = (float) resource.getWidth();                    float resource_height = (float) resource.getHeight();                    params.width = imageviewWidth;                    float height = (imageviewWidth / resource_width) * resource_height;                    params.height = (int)height;                    params.setMargins(15, 15, 15, 0);                    holder.imageIv.setLayoutParams(params);                    holder.imageIv.setImageBitmap(resource);                }else {//                    holder.imageIv.setVisibility(View.GONE);                    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) holder.imageIv.getLayoutParams();                    float resource_width = (float) resource.getWidth();                    float resource_height = (float) resource.getHeight();                    params.width = imageviewWidth;                    float height = 1;                    params.height = (int)height;//                    params.setMargins(0, 0, 15, 0);                    holder.imageIv.setLayoutParams(params);                }                return false;            }        }); 

大功告成。

原创粉丝点击