标签:
在Android中操作图片是通过Drawable类来完成的,Drawable类有很多子类,如BitmapDrawable类用于操作位图,ColorDrawable类用于操作颜色,ShapeDrawable类用于操作形状,AnimationDrawable类用于操作逐帧动画。
在Android应用的drawable-hdpi 、drawable-ldpi 、drawable-mdpi或drawable-xhdpi任一文件夹中添加一个图片资源文件(例如draw1.jpg)后,在R.java文件中会自动创建一个索引项:R.drawable.draw1,这几个drawable文件夹用于存放不同分辨率的图片,在这些文件夹中可以存放相同名称的文件,但是在R.java中只会生成一个资源索引项,那么引用的时候,系统究竟会使用哪一个呢?系统会根据运行程序的设备的分辨率进行选择,自动选择和设备分辨率最接近的图片,如果只在一个文件夹中包含图片文件,那么系统别无选择,只能使用该文件,即使它的分辨率与设备的分辨率相去甚远,也就是说这几个文件夹的存在主要是为了在不同的设备上使用不同分辨率但内容相同的图片,使应用程序具有更好的灵活性和适应性。这几个Drawable文件夹中图片之间的尺寸关系如下图所示:
生成资源索引后,既可以在XML资源文件中通过“@drawable/draw1”来引用该Drawable对象,也可以在Java代码中通过R.drawable.draw1来访问该图片。
注意:Android中不允许图片资源文件名出现大写字母,且文件名不能以数字开头。
需要指出的是,R.drawable.draw1只是一个int类型的常量,代表该Drawable对象的资源ID,如果在Java程序中需要获得实际的Drawable对象,则可以调用Activity从android.content.ContextWrapper继承的getResources()方法获取所有的资源,再调用Resources的getDrawable(intid)方法来获取。
getResources().getDrawable(intid);
标签:
原文地址:http://www.cnblogs.com/zrui513/p/4922412.html