ImageView 加载图片方法

关于ImageView,常很容易混淆background 和 src 两个属性的特征:
(1)background通常指的都是背景,而src指的是内容
(2)当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸。

代码用法设置:

一.设置ImageView的src:

1.image.setImageDrawable(getResources().getDrawable(R.drawable.vod_detail_actor_default));

2.String path=Environment.getExternalStorageDirectory()+File.separator+”test.jpg”;

Bitmap bm = BitmapFactory.decodeFile(path);

image.setImageBitmap(bm);

3.image.setImageBitmap(BitmapFactory.decodeResource(page.getContext().getResources(), R.drawable.vod_detail_actor_default));

4.image.setImageResource(R.drawable.vod_detail_actor_default);

注:

setImageResource(id)会根据设备分辨率进行图片大小缩放适配。

源码中对该接口的注释:

在UI线程中处理bitmap,这可能造成主线程的延迟(如导致Activity启动延迟等情况)。

可以考虑使用setImageDrawable(Drawable)或setImageBitmap(Bitmap)代替。

setImageBitmap(BitmapFactory.decodeResource(res, id))大小需要手动调试。

setImageBitmap实际还是调用的setImageDrawable,但是强制setImageDrawble执行完整的setImageDrawable而不是做对象引用比较。setImageBitmap将Bitmap对象封装成Drawable对象,如果提供了完整的各种分辨率下的图片,两种方法没有区别。

另外:setImageDrawable(null)可以清除一个ImageView控件设置的图片。

因此综合来看,setImageDrawable是最省内存最高效的,如果担心图片过大或者图片过多影响内存和加载效率,可以自己解析图片然后通过调用setImageDrawable方法进行设置。

二.设置ImageView的background:

1.image.setBackground(getResources().getDrawable(R.drawable.vod_detail_actor_default));

2.image.setBackgroundResource(R.drawable.vod_detail_actor_default);

3.image.setBackgroundDrawable(getResources().getDrawable(R.drawable.vod_detail_actor_default));

在ImageView中,可以同时设置src和background属性(为了减少绘制,可以根据使用场景来设置相应属性);另外还有一个混淆的地方就是:android:scaleTyle这个属性(scaleType 只对src属性有效)如果需要对其进行不同图片的样式展示,就需要使用android:scaleTyle这个属性。

这里就只列出scaleType 相关值定义,实际效果相信大家本地实践就清楚了:

1.fitXY:对图像的横向与纵向进行独立缩放,使得该图片完全适应ImageView,但是图片的横纵比可能会发生改变;
2. fitStart:保持纵横比缩放图片,直到较长的边与Image的边长相等,缩放完成后将图片放在ImageView的左上角 ;
3.fitCenter:同上,缩放后放于中间;
4. fitEnd:同上,缩放后放于右下角; 
5.center:保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size,超过部分裁剪处理;
6. centerCrop:保持横纵比缩放图片,直到完全覆盖ImageView,可能会出现图片的显示不完全;
7. centerInside:保持横纵比缩放图片,直到ImageView能够完全地显示图片;
8. matrix:默认值,不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值