setImageResource和setImageDrawable和setImageBitMap区别
(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方法进行设置。
setImageResource和setImageDrawable和setImageBitMap区别相关推荐
- android imageview src获取,Android ImageView Src 和Background 区别
之前使用Glide的时候被ImageView的图片设置弄混了(很低级的问题,确是经常犯的问题),所以就去看了一下ImageView,补补基础. 首先ImageView有两个显示图片的属性,分别是src ...
- 认识Android(常用布局,控件,四大组件,动画,自定义控件及异常消息处理机制)
目录 一.布局 1.LinearLayout(线性布局): 2.相对布局(RelativeLayout) 3.GridLayout(网格布局) 4.FrameLayout(帧布局): 二.控件 1.T ...
- ImageView设置图片的几种方式
ImageView设置图片的方式有很多种 一:在xml里面设置 设置前景:android:src="@drawable/xxx" 设置背景:android:background=& ...
- Android的ImageView背后的绘制原理
作者:木有粗面_9602 链接:https://www.jianshu.com/p/171fdd0db870 来源:简书 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前言 上 ...
- 打造一个简单的万能适配器
将优化后的BaseAdapter封装成一个通用的万能适配器,第一次的封装还不够完善,以后将改进和优化. package com.xspacing.commonadapter;import java.u ...
- 使用Gilde加载图片时裁剪大小异常
LT.ee("px="+ConvertUtils.dp2px(24));Glide.with(mActivity)//打印出48px.load("http://attac ...
- android 下的网络图片加载
2019独角兽企业重金招聘Python工程师标准>>> Android图片的异步加载,主要原理: 加载图片时先查看缓存中时候存在该图片,如果存在则返回该图片,否则先加载载一个默认的占 ...
- Android 系统性能优化(42)---Android代码内存优化建议-Android资源篇
Android代码内存优化建议-Android资源篇 这篇文章主要介绍在实际Android应用程序的开发中,容易导致内存泄露的一些情况.开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么写 ...
- android中怎么播放本地视频播放器,安卓之播放本地视频讲解
第一种形式:(网络的URL) Intent it = new Intent(); it.setAction(Intent.ACTION_VIEW); it.setData(Uri.parse(&quo ...
- android 仿去哪儿首页效果
首先上效果图 第一张图是进入该界面的效果,顶部是一个viewpager,下面每个块都是自定义的view HomeButton,第二张图是点击右边第一个方块的效果,点击时方块整体有收缩的效果,中间会显示 ...
最新文章
- php如何定时执行任务
- 一天star量破千,300行代码,特斯拉AI总监Karpathy写了个GPT的Pytorch训练库
- el replace 表达式_EL表达式截取字符串 各种字符串操作的方式全解 泽0715新浪博客...
- eclipse 的习惯配置
- 会话技术 —— Cookie 实现原理 || 在idea编辑器中设置代码的模板
- scrapy从入门到放弃 学习项目2
- 【POJ - 3177】Redundant Paths(边双连通分量,去重边)
- jsp网页上实现计算圆面积小程序
- 猎豹移动傅盛:区块链将重塑整个社会关系,CEO恐将职位不保
- Android Studio解决:Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed
- RedisTemplate和StringRedisTemplate在项目中应用
- form 表单添加请求头_Golang GinWeb框架5-绑定多种请求类型的数据
- 华中师范大学计算机学院在哪个校区,关于《计科,你的力量在哪里?》★华师计算机科学系★研究生情况~~过来人指点下...
- 在FL Studio中如何制作白噪音的转场效果
- Windows如何强制关闭电脑全部代理
- 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest:Gym 101667L
- 获取最新、最全的小红书地理位置签到数据。
- html文件转md文件
- Windows系统中哪些文件夹可以删除
- java构造函数的调用