今天练习了书上的一个涂鸦Android程序,因为是初学,好多内容不是太清楚就去查了下资料,把其中Bitmap中的一些类和方法的含义和用法记录下来,方便记录和以后的使用。
首先看一句代码:
Bitmap originalBitmap=BitmapFactory
.decodeResource(getResources(),R.drawable.img1)
.copy(Bitmap.Config.ARGB_8888,true);
- 其中BitmapFactory类,是一个工具类,用于从不同的数据源解析、创建Bitmap的对象。而decodeResource()是BitmapFactory类中的一个方法:如上述代码中的有两个参数的BitmapFactory.decodeResource(?,?),第一个参数是包含你要加载的位图资源文件的对象(一般写成 getResources()就ok了);第二个是需要加载的位图资源的id。
- Bitmap.Config是指使用指定的选项创建图像的副本,"true"是指可变的。其中Bitmap.Config的参数ARGB_8888是指一种色彩模式存储透明度和色彩信息:A代表Alpha也就是透明度、R表示red红色、G表示green绿色、B表示blue蓝色,我们都知道所有的可见色都是右红绿蓝组成的,所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值。还有另外可选的两个:ARGB_4444,RGB_565。
- RGB_565 代表每个像素red占5位、green占6位、blue占5位共16位即2个字节的RGB位图,但是只有颜色,没有透明度
- ARGB_4444代表每个像素alpha、red、green、blue各占4位共16位即2个字节的ARGB位图
- ARGB_8888代表每个像素alpha、red、green、blue各占8位共32位即4个字节的ARGB位图
而在Android中界面显示图片时,需要的内存空间不是按图片的实际大小来计算的,而是按像素点的多少乘以每个像素点占用的空间大小来计算的。比如一个400*800的图片以ARGB_8888形式显示则占用:(400*800*4)/1024=1500kb的内存。
位图位数越高代表其可以存储的颜色信息越多,图像也就越逼真。现在手机内存都比较大,所以一般默认使用的都是ARGB_8888,显示的会比较清晰当然占用的内存就比较高,比如同样的一张图用ARGB_8888比用ARGB_4444显示要高一倍的内存。