ImageView显示不出来图片
问题??
用ImageView控件方法:public void setImageBitmap(Bitmap bm)
来显示生成的bimap,结果在图片显示区域显示一片空白,而且其他控件颜色没变化,造成Imageveiw显示图片不出来的假象。
问题原因是:
布局背景我设置为白色,而解码生成的bitmap刚好在白色背景下显示看不到一点图片痕迹,在显示图片的区域看到的只是一片空白,至于为什么bitmap在白色先显示不出来的原因暂还没想通。若你也遇到类似问题建议跟换背景试试。
解决方法是:
将布局文件中ImageView所在的LinearLayout或其他Layout布局的背景颜色设置为黑色,这样之前一直显示图片不出来的图片终于露出原形。
小结:
这个问题算是个怪胎了,用H264解码生成的Bitmap放上去显示没一点问题,而MPEG4解码出来的Bitmap放上去就是显示不出来,之前怀疑解码生成的Bitmap有问题,经过反复验证,确认解码生成的Bitmap没有问题,才猜测Imageview显示有问题,费劲脑汁的跟换Imageview显示图片的方法。转来转去,搞了半天还是木有解决问题,后堡垒灵光一线,把布局背景颜色设置为黑色,结果图片显示出来了,太诡异了。搞了半天还是碰运气解决滴。
其实在我确认解码生成的Bitmap没问题之后,我应该想到为什么图片在默认的黑色背景下显示没一点问题,估计是被H264解码生成Bitmap显示没问题跟忽悠了,跟我定位问题时带了干扰。直接省去了那一环节。看来还是要程序化。
当问题找不到原因时,一定要每一个环节去对比验证,即使是最不可能发生的环节,往往这就是问题原因所在。
遇到问题,不用怕,解决它,仅此而已。
在此小结记录下byte[] 、Bitmap与Drawbale 三者直接的转换
1、byte[] ->Bitmap
Bitmap Bitmap = BitmapFactory.decodeByteArray(data, offset, length);
2、Bitmap->byte[] 这种转换我们应该将Bitmap看成是一张图片,这样我们想获取它的数据,就知道要通过流,而且是byte类型流,于是很容易记住转换方法 。
(1)ByteArrayOutputStream out = new ByteArrayOutputStream();//获取流
(2)bitmap.compress(CompressFormat.JPEG, 100, out);//将图片数据按照指定格式和质量压缩到某个流中,
(3)byte[] buf = out.toByteArray();//将流转换为byte[]
Bitmap 、Drawbale直接的转换方法特别好记,只有利用他们之间搭建着桥梁,BitmapDrawable,剩下的就是利用向上转型和向下转型的思路就可以搞定。
3、Bitmap->Drawbale 向上转型,因为Drawbale更靠近图片文件。
Drawable drawable = new BitmapDrawable(bitmap);
4、Drawbale->Bitmap 向下转型
Bitmap bitma = ((BitmapDrawable) bit).getBitmap();
至于byte[] 与Drawbale之间的转换,那么Bitmap又相当于是桥梁。大家都懂得。
http://blog.csdn.net/sunnyfans/article/details/7914219
ImageView显示不出来图片的更多相关文章
- [Android]异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3574131.html 这个可以实现ImageView异步加载 ...
- Android ImageView显示本地图片
Android ImageView 显示本地图片 布局文件 <?xml version="1.0" encoding="utf-8"?> <R ...
- Android imageview显示圆形图片
需要ImageView显示圆形图片做法如下 public static Bitmap toRoundCorner(Bitmap bitmap, float ratio) { System.out.pr ...
- 设置ImageView显示的图片铺满全屏
转自:http://m.blog.csdn.net/blog/wjwj1203/32334459 为适应不同屏幕的手机,ImageView显示的图片可能不铺满屏幕,如果定高的话,两边可能会出现空白 ...
- 同一个ImageView根据xml文件来显示不同的图片--level-list
感谢:http://blog.sina.com.cn/s/blog_6111ce890100psq9.html 有时候,我们为了在一个ImageView中显示不同的图片,平时往往会使用: if (条件 ...
- ImageView显示网络上的图片
ImageView显示网络上的图片 一.简介 二.方法 1)ImageView显示网络上的图片方法 第一步:从网络上下载图片 byte[] byteArr = downImage();//这个是自己写 ...
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
- 关于UIImageView的显示问题——居中显示或者截取图片的中间部分显示
我们都知道在ios中,每一个UIImageView都有他的frame大小,但是如果图片的大小和这个frame的大小不符合的时候会怎么样呢?在默认情况,图片会被压缩或者拉伸以填满整个区域. 通过查看UI ...
- Android—基于GifView显示gif动态图片
android中显示gif动态图片用到了开源框架GifView 1.拷GifView.jar到自己的项目中. 2.将自己的gif图片拷贝到drawable文件夹 3.在xml文件中设置基本属性: &l ...
随机推荐
- 关于mysql的自增
http://my.oschina.net/zimingforever/blog/136599 http://flandycheng.blog.51cto.com/855176/280224 http ...
- elasticsearch 重启后,需要的操作
如果elasticsearch 集群挂了,请勿开启Logstash 同步数据,需等待elasticsearch集群恢复后,在继续写入
- 【转】listView中,checkBox的显示和隐藏
原文网址:http://www.cnblogs.com/vicma/p/3460500.html 在listView中,每个item都有一个ChexBox,当显示的时候在listView外面设置一个按 ...
- 笔记:java并发实践2
public interface Executor { void execute(Runnable command); } 虽然Executor是一个简单的接口,但它为灵活且强大的异步任务框架提供了基 ...
- HDU_2029——回文串的判断
Problem Description “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串.请写一个程序判断读入的字符串是否是“回文”. Input 输入包 ...
- angular 数据加载动画 longding
由于公司服务器架构不行,每次加载数据都要很久,但是都是使用angular来渲染数据,不像jquery有beforsend什么的方法, 这是一个github上找的,很轻使用也很简单 1.安装 npm ...
- iOS获取设备唯一编号,就算删除app从新安装也不变的方法
第三方开源代码 https://github.com/soffes/SAMKeychain 使用方法 //获取设备信息32 位字符串 -(NSString *)getDeviceString{ NSS ...
- Maven相关介绍
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Depen ...
- 移动端页面V2.0项目改版总结
移动端页面已经进行的第三次改版,这个版本遇到的最大难题就是页面跳转的问题. 项目需求: 页面上有分别有优惠估价.我要估价.历史竞拍这三个Tab选项卡,当用户点击估价,选择品牌以后,前端需要去请求品牌接 ...
- JavaScript 单例模式实现
Singleton模式指的是调用一个类,任何时候返回的都是同一个实例. 对于Node来说,模块文件可以看成是一个类.怎么保证每次执行这个模块文件,返回的都是同一个实例呢? 很容易想到,可以把实例放到顶 ...