Drawable资源类型详述 (2)
Drawable资源是一个很泛的概念,它是指可以被画到屏幕上的,可以通过getDrawable()获取,或者通过android:drawable引用到其它xml文件的资源,资源的类型有很多种:
Bitmap File: 一般是以.png, .jpg, .gif结尾的,可以创建一个BitmapDrawable对象。
Nine-Patch File: 是一个可以根据内容进行扩充的PNG资源,创建一个NinePatchDrawable对象。
Layer List: 管理一组drawable资源的xml文件,他们通过在数组中的顺序进行绘制,因此最大下标绘制在最上面,返回一个LayerDrawable对象。
State List: 一个包含不同状态的bitmap图形的xml文件,比如不同状态下的按钮图片,返回一个StateListDrawable对象。
Level List: 定义一组可供选择的Drawable的xml文件,返回LevelListDrawable对象。
还有Transition Drawable, Inset Drawable, Clip Drawable, Scale Drawable Shape Drawable。
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:id="@[+][package:]id/resource_name"
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension" />
</layer-list>
可以看到每个xml文件都有很多的属性值可以设置,用举例的形式为每个drawable举个例子。
更多灵活的使用,以及其它的炫酷的效果需要更多的实践。
源码在appresources目录里面。
这些都是可以定义成xml格式,在代码中返回类似InsetDrawable, ClipDrawable, ScaleDrawable, ShapeShape的对象,从而调用setBackground进行设置。
本例子中使用了DrawerLayout进行布局,这种布局的好处就是将所有的drawable可以由列表的形式显示出来,选择相应的一个layout就会有相关的图像显示。
上图是使用Shape新建一个矩形,xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>