setImageResource和setImageDrawable和setImageBitMap区别
来源:互联网 发布:java版本 编辑:程序博客网 时间:2024/06/04 14:18
(1)setImageResource的参数是resId,必须是drawable目录下的资源.另外,在setImageResource方法中有写明了注释
* <pclass="note">This does Bitmap reading and decoding on the UI* thread, which can cause a latency hiccup.If that's a concern,* consider using {@link #setImageDrawable(android.graphics.drawable.Drawable)}or* {@link #setImageBitmap(android.graphics.Bitmap)} and* {@link android.graphics.BitmapFactory} instead.</p>
这个方法是在UI线程中对图片读取和解析的,所以有可能对一个Activity的启动造成延迟。所以如果顾虑到这个官方建议用setImageDrawable和setImageBitmap来代替。
(2)setImageBitmap参数是Bitmap,可以解析不同来源的图片再进行设置。不过我们看看setImageBitmap的源码:
@android.view.RemotableViewMethodpublic void setImageBitmap(Bitmap bm) {// if this is used frequently, mayhandle bitmaps explicitly// to reduce the intermediate drawable objectsetImageDrawable(newBitmapDrawable(mContext.getResources(), bm));}
实际上setImageBitmap做的事情就是把Bitmap对象封装成Drawable对象,然后调用setImageDrawable来设置图片。因此代码里面才写上了建议,如果需要频繁调用这个方法的话最好自己封装个固定的Drawable对象,直接调用setImageDrawable,这样可以减少Drawable对象。因为每次调用setImageBitmap方法都会对Bitmap对象new出一个Drawable。
(3)setImageDrawable参数是Drawable,也是可以接受不同来源的图片,方法中所做的事情就是更新ImageView的图片。上面两个方法实际上最后调用的都是setImageDrawable(setImageResource没有直接调用,不过更新的方法与setImageDrawable一样)。
所以综合来看setImageDrawable是最省内存高效的,如果担心图片过大或者图片过多影响内存和加载效率,可以自己解析图片然后通过调用setImageDrawable方法进行设置。
0 0
- setImageResource和setImageDrawable和setImageBitMap区别
- setImageResource(),setImageBitmap()和setImageDrawable()的区别
- setImageResource和setImageDrawable区别
- setImageResource和setImageDrawable区别
- setImageResource和setImageDrawable区别
- setImageResource和setImageDrawable区别
- setImageResource和setImageDrawable区别
- setImageResource和setImageDrawable区别
- Android setImageResource、setImageBitmap、setImageDrawable区别
- Android setImageResource、setImageBitmap、setImageDrawable区别
- setImageResource和setImageDrawable区别(转)
- setImageResource和setImageBitmap详解。
- Glide获取图片宽高以及setImageDrawable和setImageBitmap区别
- android ImageView 赋值问题setImageResource和setImageBitmap
- setImageResource与setImageBitmap的区别
- setImageResource与setImageBitmap的区别
- setImageResource与setImageBitmap的区别
- Android setImageResource与setImageBitmap的区别
- 程序返回值
- HTTP协议、简介、会话方式
- Raneto部署
- XCode 添加复制/删除行快捷键
- ASP.NET笔记
- setImageResource和setImageDrawable和setImageBitMap区别
- Logstash and Log4j
- curl、wget命令总结
- linux系统中的进程通信(管道和有名管道)
- 程序员常去网站
- TCP三次握手和四次挥手以及缺陷(详细)
- Cocos2d-x-3.10 addImageAsync异步加载图片
- viewDidLoad 和 loadView 的区别,并且viewDidLoad可能被调用两次(或者多次)
- 或计算机体系结构