android 中遇到 imageView getWidth 始终为0 时 ,设置 setImageBitmap 的方法
先说说我的遇到的问题:
1. 我在activity里写一个 fragment
2.这个fragment里有个 imageView ,用于显示图片。
我使用 asyncTask获得图片,并准备在这个imageView 中显示该图片的缩略图,我准备使用 ThumbnailUtils.extractThumbnail 方法生成缩略图。
我们先看看ThumbnailUtils.extractThumbnail(source, width, height); 这个方法的参数
source 源文件(Bitmap类型)
width 压缩成的宽度
height 压缩成的高度
这里需要一个宽度和高度的参数。。要想再imageView里填满图片的话,这里就应该传入imageView的宽度和高度。
然而问题来了:在这里,使用imageView.getWidth方法获得宽度始终为0
经过一番搜索,终于找到解决方法,如下:
private void showImage(final File resultFileArg) {
if (resultFileArg != null && resultFileArg.exists()) {
// 添加下载图片至 imageView
ViewTreeObserver vto2 = imageView1.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < 16) {
imageView1.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
imageView1.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
Bitmap bm = BitmapFactory.decodeFile(resultFileArg.getPath());
Bitmap thumbnailImg = ThumbnailUtils.extractThumbnail(bm,
imageView1.getMeasuredWidth(),
imageView1.getMeasuredHeight());
bm.recycle();
imageView1.setImageBitmap(thumbnailImg);
// imageView1.setImageBitmap(bm);
}
});
}
}
使用步骤:
1.先获得imageView 的 一个ViewTreeObserver 对象。方法: imageView1.getViewTreeObserver()
2.为这个ViewTreeObserver 对象添加监听器(比如叫OnGlobalLayoutListener),方法:vto2.addOnGlobalLayoutListener
3.完成这个 OnGlobalLayoutListener的具体实现,在这个实现方法里就可以调用 imageView.getWidth方法 了。在这里完成我们需要的功能。
android 中遇到 imageView getWidth 始终为0 时 ,设置 setImageBitmap 的方法的更多相关文章
- Android中Listview点击item不变颜色以及设置listselector 无效
Android中Listview点击item不变颜色以及设置listselector 无效 这是同一个问题,Listview中点击item是会变颜色的,因为listview设置了默认的listsele ...
- Android中View窗口getWidth和getMeasuredWidth的差别
今天在研究自己定义listview的下拉刷新的效果.想移植到项目需求中,再看自己定义源代码时发现了一个问题就是getWidth和getMeasuredWidth两个方法有什么差别,求教万能的百度,经调 ...
- Android中的ImageView的scaleType属性详解
ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等. 设置的方式包括: 1. 在layout xml中定义android:s ...
- Android中UI线程与后台线程交互设计的5种方法
我想关于这个话题已经有很多前辈讨论过了.今天算是一次学习总结吧. 在android的设计思想中,为了确保用户顺滑的操作体验.一 些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必 ...
- Android中UI线程与后台线程交互设计的6种方法
在android的设计思想中,为了确保用户顺滑的操作体验.一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必须要重新开启 一个后台线程运行这些任务.然而,往往这些任务最终又会直 ...
- Android中的gen文件为空或者不存在的处理方法
Android中的gen文件时链接程序和XML中资源定义的桥梁,所以如果gen文件夹为空可能有以下的几个原因: 1.XML文件错误,这时可以检查res文件夹中的文件是否有错误 2.导入新的Androi ...
- Android中同一个ImageView中根据状态显示不同图片
一般: if(条件1) { image.setBackground(R.id.xxx1); } else if (条件2) { image.setBackground(R.id.xxx2); } 实际 ...
- Android中的ImageView的getDrawableCache获取背景图片的时候注意的问题
获取ImageView的背景图片使用getDrawableCache方法,不要使用getDrawable方法,后者获取不到图片的. 1.在调用imageView.getDrawableCache()之 ...
- 关于android中出现failed to read row 0,column -1错误
该错误出现的原因是Cursor.getColumnIndex()的参数列名不存在或者错误,这时返回值为-1.出现该错误
随机推荐
- jmeter http协议---cookie处理
使用jmeter测试的http接口的时候,经常遇到需要cookie做免登录等作用的情况,jmeter如何在测试http接口的时候加载所需cookie呢?主要分两步 一. 收集对应站点的cookie 1 ...
- 快速开方法(c语言)译文
人们最早就在Quake3源代码中发现了类似如下的C代码,它可以快速的求1/sqrt(x),在3D图形向量计算方面应用很广. float invSqrt(float x) { float xhalf = ...
- 移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?
HTTP 是应用层协议,TCP 是传输层协议(位于应用层之下),放在一起类比并不合适.不过猜测楼主是想对比 “标准 HTTP 协议” 还是 “自定义的协议(基于 TCP Socket)” . 一般来说 ...
- lame,把ios录音转换为mp3格式
在ios设备中进行录音,录音文件的格式为caf.但这种格式在很多设备中没法播放.为了适应终端的播放功能,特将caf转换为mp3格式文件来使用. 在录制caf文件时,需要使用双通道,否则在转换为MP3格 ...
- [svc]NFS存储企业场景及nfs最佳实战探究
办公网络里人一般系统用共享,尤其是财务, 他们喜欢直接点开编辑. 而不喜欢ftp nfs在网站架构中的用途 注: 如果pv量少,则放在一台机器上速度更快,如果几千万pv,则存储分布式部署. 网站架构中 ...
- 获取IOS屏幕尺寸大小
转自:http://www.open-open.com/lib/view/open1395752090322.html 1.app尺寸,去掉状态栏 CGRect r = [ UIScreen main ...
- IOC的实现原理—反射与工厂模式的结合
反射机制概念 我们考虑一个场景,如果我们在程序运行时,一个对象想要检视自己所拥有的成员属性,该如何操作?再考虑另一个场景,如果我们想要在运行期获得某个类的Class信息如它的属性.构造方法.一般方 ...
- spark on alluxio和MR on alluxio测试(改进版)【转】
转自:http://kaimingwan.com/post/alluxio/spark-on-alluxiohe-mr-on-alluxioce-shi-gai-jin-ban 1. 介绍 2. 准备 ...
- mybatis使用注解往postgresql数据库表insert数据[主键自增]的写法
建表SQL: DROP TABLE IF EXISTS person; CREATE TABLE person( person_id serial PRIMARY KEY NOT NULL, pers ...
- flash object实现视频播放效果
html: <!--视频缩略图开始--> <div class="fresh-media fresh-type-video"> ...