Android Bitmap和Drawable的对比
Android Bitmap和Drawable的对比
Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。
Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。
A bitmap is a Drawable. A Drawable is not necessarily a bitmap. Like all thumbs are fingers but not all fingers are thumbs.
Bitmap是Drawable . Drawable不一定是Bitmap .就像拇指是指头,但不是所有的指头都是拇指一样.
The API dictates: API规定:
Though usually not visible to the application, Drawables may take a variety of forms: 尽管通常情况下对于应用是不可见的,Drawables 可以采取很多形式: Bitmap: the simplest Drawable, a PNG or JPEG image. Bitmap: 简单化的Drawable, PNG 或JPEG图像. Nine Patch: an extension to the PNG format allows it to specify information about how to stretch it and place things inside of it. Shape: contains simple drawing commands instead of a raw bitmap, allowing it to resize better in some cases. Layers: a compound drawable, which draws multiple underlying drawables on top of each other. States: a compound drawable that selects one of a set of drawables based on its state. Levels: a compound drawable that selects one of a set of drawables based on its level. Scale: a compound drawable with a single child drawable, whose overall size is modified based on the current level.
对比项 | 显示清晰度 | 支持透明色 | 支持色相色差调整 | 支持像素操作 |
---|---|---|---|---|
Bitmap | 相同 | 是 | 是 | 是 |
Drawable | 相同 | 是 | 否 | 否 |
Drawable在内存占用和绘制速度这两个非常关键的点上胜过Bitmap
- Drawable和Bitmap之间可以互相转换,Drawable占用内存远小于Bitmap。
- setImageDrawable使用资源文件;setImageBitmap使用bitmap图片,该图片可能是读取本地相册,或者从资源文件转换而来。
- setImageResource()和setImageBitmap()
//setImageResource() public void setImageResource (int resId)//占用UI thread; // setImageBitmap() ImageView iv; String fileName = "/data/data/com.test/aa.png"; Bitmap bm = BitmapFactory.decodeFile(fileName); iv.setImageBitmap(bm); //占用内存 // setImageBitmap() Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); imageView.setImageBitmap(image); // Bitmap转换成Drawable Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); BitmapDrawable bitmapDrawable = new BitmapDrawable(image); imageView.setImageDrawable(bitmapDrawable); // 结论:Bitmap是Drawable . Drawable不一定是Bitmap
小结
Bitmap: 简单化的Drawable, PNG 或JPEG图像.
Drawable在内存占用和绘制速度这两个非常关键的点上胜过Bitmap
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
- Android中一种巧妙的drawable.xml替代方案分享
- Android RippleDrawable 水波纹/涟漪效果的实现
- Android自定义Drawable之在Drawable中部指定透明区域方法示例
- 浅谈Android中Drawable使用知识总结
- Android开发基于Drawable实现圆角矩形的方法
- Android自定义Drawable实现圆角效果
- Android Drawable和Bitmap的转换实例详解
- Android DrawableTextView图片文字居中显示实例
- Android Drawable必备知识小结
- Android drawable微技巧,你不知道的drawable细节
相关文章
一篇文章弄懂Android自定义viewgroup的相关难点
这篇文章主要给大家介绍了关于如何通过一篇文章弄懂Android中自定义viewgroup的一些相关难点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2018-06-06android用java和c实现查找sd卡挂载路径(sd卡路径)的方法
这篇文章主要介绍了android用java和c实现查找sd卡挂载路径(sd卡路径)的方法,需要的朋友可以参考下2014-02-02Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解
本文通过实例代码给大家讲解android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下2016-09-09为Android Studio编写自定义Gradle插件的教程
这篇文章主要介绍了为Android Studio编写自定义Gradle插件的教程,Android Studio现在基本上已经成为了安卓开发的标配IDE,友可以参考下2016-02-02Android控件系列之RadioButton与RadioGroup使用方法
本文介绍了Android中如何使用RadioGroup和RadioButton,对比了RadioButton和CheckBox的区别,并实现了自定义的RadioGroup中被选中RadioButton的变更监听事件2012-11-11
最新评论