一起Talk Android吧(第三百九十三回:从drawable中获取Bitmap)

各位看官们,大家好,上一回中咱们说的是"适配全屏幕"的例子,这一回中咱们介绍的例子是"从drawable中获取Bitmap"。闲话休提,言归正转,让我们一起Talk Android吧!

使用背景

我们在程序中经常使用图片资源,常用的做法是在布局文件中添加ImageView,然后在xml中给它的src属性赋值,示例如下:

<ImageView
    android:src="@drawable/ic_face"
</ImageView>

或者在java代码中通过相关方法来添加位于drawable中的资源文件,示例代码如下:

mImageView.setImageResource(R.drawable.ic_face);

使用Bitmap

我们刚才介绍的使用方法都是直接从drawable资源文件中加载资源,接下来将介绍如何从drawable中获取bitmap,然后再把bitmap加载到ImageView上。

我们可以通过BitmapFactory.decodeResource()方法从drawable资源中获取bitmap文件,该方法有三个参数,第一个参数是Context对象,这个是经常使用的内容,第二参数是资源文件的名称,第三个参数是BitmapFactory.Options类型的对象,它主要用来控制控制bitmap的大小。下面是是示例代码:

BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap mBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_face,options);
mImageView.setImageBitmap(mBitmap);

使用总结

有看官说,直接从drawable中加载图片就可以呀,为什么还要先获取bitmap再把bitmap加载到ImageView上?这样是不是绕弯路了?其实这么做主要是为了有效地控制图片资源的大小,比如我们直接从drawable中加载图片资源时不能调整图片的大小,我们只能通过调整ImageView的大小间接调整图片资源的大小,这时会产生缩放,进而影响图片的显示效果。而使用bitmap的方法可以直接控制图片的大小,具体的控制方法就在第三个参数中,详细的内容我们会在后面的章回中做介绍。

此外,decodeResource()方法是一个重载方法,第三个参数可以省略,这时会调用只有两个参数的重载方法,不使用第三个参数的情况下采用默认的缩放原则来缩放bitmap文件,它会从drawablexxx目录中找一个与当前屏幕密度匹配的目录,然后从匹配目录中加载bitmap,进而实现缩放bitmap的目的。有看官不理解这是什么原因,因为drawablexxx目录中的图片大小不一样,所以从不同目录获取到的bitmap大小也不一样。

看官们,关于Android中"从drawable中获取Bitmap"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值