前言 有时候需要获取网络图片的宽高来设置图片显示的大小,很多人会直接利用Glide的加载监听去拿图片的宽高,但是这样拿到的不是图片真正的宽高,而是图片显示在ImageView后的宽高。如下: //获取图片显示在ImageView后的宽高 Glide.with(this) .load(imgUrl) .asBitmap()//强制Glide返回一个Bitmap对象 .listener(new RequestListener<String>() { @Override publ 在Android开发中,Glide是一个非常流行的图片加载库,它提供了高效、流畅的图片加载体验。然而,在实际应用中,我们有时需要获取网络图片的实际尺寸(即宽度和高度)以便进行自定义布局或优化显示。从给定的描述中,我们可以看到两种不同的方式来获取图片的宽高,一种是通过监听器,另一种是通过自定义Target。 让我们讨论通过监听器获取图片宽高的方法。通常,开发者可能会这样做: ```java Glide.with(this) .load(imgUrl) .asBitmap() .listener(new RequestListener<String, Bitmap>() { @Override public boolean onException(Exception e, String model, Target<Bitmap> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(Bitmap bitmap, String model, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); Log.d(TAG, "width " + width); Log.d(TAG, "height " + height); return false; } }) .into(mIv_img); ``` 在这个例子中,我们使用了`RequestListener`来监听图片加载完成的事件。然而,`onResourceReady`方法中获取到的宽度和高度实际上是图片在ImageView中的尺寸,这是经过缩放后的尺寸,可能与原始图片尺寸不同。 要获取图片的真实尺寸,我们需要使用`SimpleTarget`。`SimpleTarget`允许我们定义一个接收资源的回调方法,其中资源在准备好后会被传入。这样,我们可以在资源加载完成后获取到未被处理过的原始Bitmap,从而得到图片的真实尺寸: ```java Glide.with(this) .load(imgUrl) .asBitmap() .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); Log.d(TAG, "width " + width); Log.d(TAG, "height " + height); } }); ``` 在这个实现中,`onResourceReady`方法会在图片下载并解码为Bitmap之后被调用,这时候的宽度和高度就是图片的原始尺寸,不受ImageView或其他布局的影响。 总结来说,当需要获取网络图片的真实宽高时,应该使用`Glide`的`SimpleTarget`,而不是通过监听器。这是因为监听器返回的是适应于目标View的尺寸,而`SimpleTarget`则能提供图片原始的尺寸信息。这对于需要精确控制图片显示效果或者根据图片尺寸进行动态布局的场景至关重要。在使用`Glide`时,理解这些细微的差别可以帮助我们更有效地进行图片加载和管理。


















- 粉丝: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 配电自动化在配电管理系统中的应用1.docx
- 桩基础工程造价审查案例.doc
- 项目单片机相关知识介绍.doc
- 浅论计算机平面设计教学策略.docx
- 2011年我国互联网网络安全态势综述.doc
- 给排水安装工程施工图预算的编制(共83页).ppt
- 防台防汛施工方案.docx
- 多媒体技术在高职计算机教学中的问题探讨.docx
- “目标管理法”培训.ppt
- 电脑基本概念MEMORY.ppt
- 7-河南油田起重作业安全管理规定.pptx
- PLC在机械手运物控制系统中的应用(西门子).doc
- 网络攻击技术与中教网络安全探析.doc
- 第8章-项目的优化.ppt
- 网络安全年检信息表.doc
- 基于卷积神经网络的在线盲孔深度预测模型.docx



评论0