一起Talk Android吧(第三百九十三回:从drawable中获取Bitmap)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起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"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第三百九十三回:从drawable中获取Bitmap)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第二百九十三回:Android中的BLE开发:注册特征值通知二)
一起Talk Android吧(第三百九十五回:从本地存储中获取Bitmap一)
一起Talk Android吧(第三百九十七回:从网络中获取Bitmap一)
一起Talk Android吧(第三百九十八回:从网络中获取Bitmap二)