用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又相当于是桥梁。大家都懂得。
相关推荐
使用ImageView显示图片很简单,下面的教程在布局文件中直接通过布局属性将图片布局了,so easy的~~教程见:http://www.ourunix.org/android/post/125.html
该自定义ImageView除了可以显示png图片,还可以显示gif图片的动画效果
当系统scaleType,显示图片方式满足不了我们时,自定义view显示任意图片指定区域
裁剪图片,通过imageView显示,调用intent
通过图片的url获取到图片,并显示到imageview中,本实例中选择的图片的百度官网的logo。仅提供一种获取网络图片的方法。
Android实现imageView显示圆角图片、描边图片效果,具体效果请参见运行截图所示。用在你的android APP中,可美化图片,让图片的显示更漂亮。这个例子主要是让大家熟悉imageView控件的用法技巧,除了可以实现圆形图片...
Android ImageView实现是对图片放大后可以局部的拉伸放大,双击放大
Android应用源码之android端用于异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画。.zip
Android imageview,imageswitcher显示SD卡上图片,并彻底解决imageview out of memory,记过这两天多次反复查找资源及测试,可以使用
1.通过图片的名字加载图片 2.加载加载src下面的图片
适用于初学者,ImageView联网显示图片。耗时操作必须开启线程。将图片用流的方式读进来。
自定义带边框ImageView
Android通过ImageView控件实现图片资源的显示,通过Button控制上一张、下一张图片的切换
一个可以实现从本地图片库读取文件并在imageview显示,还可以实现裁剪功能并显示出来。
ImageView以淡入淡出的方式切换显示的图片
这个可以实现ImageView异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画。解决了:1. listview加载oom问题 2. listview加载时卡顿的现象 3. listview加载时item中图片重复错位等情况 可以...
这是我找了半天的demo,自定义的ImageView从网络获取图片在显示到手机上缩放,再改成适合自己的缩放图片,公布给需要找图片缩放功能的小伙伴。
自定义圆角图片,能设置任意圆角角度显示.翻遍用户的开发和使用
在Android中ImageView无法显示加载的本地SDCard图片:过程为先调用本地照相机程序摄像,然后将拍摄的图片加载在ImageView中显示,具体解决方法如下,感兴趣的朋友可以参考下哈
这个本人封装的用2张imageView就实现的轮播图,里面有两个文件夹,一个加载本地图片的封装,一个是加载网络图片的封装。本人为每一个封装都留有了一个block块接口,使用其可以做到与外界其他类配合实现自定义功能,...