(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区别相关推荐

  1. android imageview src获取,Android ImageView Src 和Background 区别

    之前使用Glide的时候被ImageView的图片设置弄混了(很低级的问题,确是经常犯的问题),所以就去看了一下ImageView,补补基础. 首先ImageView有两个显示图片的属性,分别是src ...

  2. 认识Android(常用布局,控件,四大组件,动画,自定义控件及异常消息处理机制)

    目录 一.布局 1.LinearLayout(线性布局): 2.相对布局(RelativeLayout) 3.GridLayout(网格布局) 4.FrameLayout(帧布局): 二.控件 1.T ...

  3. ImageView设置图片的几种方式

    ImageView设置图片的方式有很多种 一:在xml里面设置 设置前景:android:src="@drawable/xxx" 设置背景:android:background=& ...

  4. Android的ImageView背后的绘制原理

    作者:木有粗面_9602 链接:https://www.jianshu.com/p/171fdd0db870 来源:简书 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前言 上 ...

  5. 打造一个简单的万能适配器

    将优化后的BaseAdapter封装成一个通用的万能适配器,第一次的封装还不够完善,以后将改进和优化. package com.xspacing.commonadapter;import java.u ...

  6. 使用Gilde加载图片时裁剪大小异常

    LT.ee("px="+ConvertUtils.dp2px(24));Glide.with(mActivity)//打印出48px.load("http://attac ...

  7. android 下的网络图片加载

    2019独角兽企业重金招聘Python工程师标准>>> Android图片的异步加载,主要原理: 加载图片时先查看缓存中时候存在该图片,如果存在则返回该图片,否则先加载载一个默认的占 ...

  8. Android 系统性能优化(42)---Android代码内存优化建议-Android资源篇

    Android代码内存优化建议-Android资源篇 这篇文章主要介绍在实际Android应用程序的开发中,容易导致内存泄露的一些情况.开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么写 ...

  9. android中怎么播放本地视频播放器,安卓之播放本地视频讲解

    第一种形式:(网络的URL) Intent it = new Intent(); it.setAction(Intent.ACTION_VIEW); it.setData(Uri.parse(&quo ...

  10. android 仿去哪儿首页效果

    首先上效果图 第一张图是进入该界面的效果,顶部是一个viewpager,下面每个块都是自定义的view HomeButton,第二张图是点击右边第一个方块的效果,点击时方块整体有收缩的效果,中间会显示 ...

最新文章

  1. php如何定时执行任务
  2. 一天star量破千,300行代码,特斯拉AI总监Karpathy写了个GPT的Pytorch训练库
  3. el replace 表达式_EL表达式截取字符串 各种字符串操作的方式全解 泽0715新浪博客...
  4. eclipse 的习惯配置
  5. 会话技术 —— Cookie 实现原理 || 在idea编辑器中设置代码的模板
  6. scrapy从入门到放弃 学习项目2
  7. 【POJ - 3177】Redundant Paths(边双连通分量,去重边)
  8. jsp网页上实现计算圆面积小程序
  9. 猎豹移动傅盛:区块链将重塑整个社会关系,CEO恐将职位不保
  10. Android Studio解决:Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed
  11. RedisTemplate和StringRedisTemplate在项目中应用
  12. form 表单添加请求头_Golang GinWeb框架5-绑定多种请求类型的数据
  13. 华中师范大学计算机学院在哪个校区,关于《计科,你的力量在哪里?》★华师计算机科学系★研究生情况~~过来人指点下...
  14. 在FL Studio中如何制作白噪音的转场效果
  15. Windows如何强制关闭电脑全部代理
  16. 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest:Gym 101667L
  17. 获取最新、最全的小红书地理位置签到数据。
  18. html文件转md文件
  19. Windows系统中哪些文件夹可以删除
  20. java构造函数的调用

热门文章

  1. android怎么监听多点触摸_android 多点触控
  2. 家乡的春节html,家乡的春节日记
  3. LC053-最大子序和
  4. 做最好的自己(李开复)
  5. 【微信小程序】关于getCurrentPages()的使用
  6. lattice planner
  7. mybatis获取map中的key和value
  8. Python sys模块常见函数
  9. 鼠标控制c语言扫雷程序,【源码项目】C语言/C+开发,打造一个小项目扫雷小游戏!...
  10. go语言教程哪里有?go 语言优秀开源项目汇总