1、StateListDrawable 资源:
作用:比如按钮在“按下去”和“没按下去”时颜色的差别。
根标签:<selector> ... </selector>
实例代码:创建资源文件 my_image.xml
<?xml version="1.0" encoding="utf-8">
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 指定获得焦点时的颜色 -- >
<item android:state_focused="true" android:color = "#f44" />
<!-- 指定失去焦点时的颜色 -- >
<item android:state_focused="false" android:color = "#111" />
</selector>
引用该资源代码:
<EditText
.......
android:textColor= "@drawable/my_image" />
总结一下 StateListDrawable 支持的状态:
android: state_checkable —— 表示是否处于可勾选状态
android: state_checked —— 表示是否处于已勾选状态
android: state_enabled —— 表示是否处于可用
android: state_first —— 表示是否处于开始
android: state_focused —— 表示是否处于已获得焦点
android: state_last —— 表示是否处于结束状态
android: state_middle —— 表示是否处于中间状态
android: state_pressed —— 表示是否处于按下状态
android: state_selected —— 表示是否处于被选中状态
android: state_window_focused —— 表示窗口是否获得焦点状态
2、LayerDrawable 资源:
作用:它包含一个Drawable数组,系统会按这个对象数组顺序绘制它们。
根元素:<layer-list> ... </layer-list>
示例代码:在drawable文件夹中创建 seekBar 的样式代码 my_bar.xml
<?xml version= "1.0" encoding="utf-8"?>
<layer-list xmlns:android:"http://schemas.android.com/apk/res/android">
<!-- 定义轨道背景 -->
<item android:id="@android:id/background" android:drawable="@drawable/grow" />
<!-- 定义轨道上已完成部分的外观 -->
<item android:id="@android:id/progress" android:drawable="@drawable/ok" />
<layer-list>
在 SeekBar 控件中调用 my_bar.xml 文件
<SeekBar
android:id="@+id/bar"
android:progressDrawable="@drawable/my_bar"
/>
3、ShapeDrawable 资源:
作用:用来定义基本的几何图形(比如 矩形,圆形,线条等)
根元素:<shape> ... </shape>
示例代码:
<?xml version="1.0" encoding="utf-8">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle | oval | line | ring" >
<!-- 定义几何图形四个角的弧度 -- >
<corners
android:radius="integer"
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer"
/>
<!-- 定义填充渐变色 -- >
<gradient
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:startColor="integer"
android:centerColor="integer"
android:endColor="integer"
android:gradientRadius="integer"
android:type="linear | radial | sweep"
android:usersLevel="true"
/>
<!-- 定义几何图形内边距 -- >
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer"
/>
<!-- 定义几何形状大小 -- >
<size
android:width="integer"
android:color="integer"
android:dashWidth="integer"
android:dashGap="integer"
/>
<!-- 定义使用单种颜色填充 -- >
<solid
android:color="color"
/>
<!-- 定义为几何形状绘制边框 -- >
<stroke
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer"
/>
</shape>
案例:椭圆形、渐变背景的文本框
my_shape_1.xml
<?xml version="1.0" encoding="utf-8">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- 定义使用单种颜色填充 -- >
<solid
android:color="#fff" />
<!-- 定义几何图形内边距 -- >
<padding
android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<!-- 定义边框 -- >
<stroke
android:width="3dp"
android:color="#ff0" />
</shape>
my_shape_2.xml
<?xml version="1.0" encoding="utf-8">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- 定义渐变色填充 -- >
<gradient
android:startColor="integer"
android:endColor="integer"
android:angle="45"
/>
<!-- 定义几何图形内边距 -- >
<padding
android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<!-- 定义圆角矩形 -- >
<corners
android:radius="8dp" />
</shape>
4、ClipDrawable 资源:
作用:从其他位图上截取的一个“图片片段”
根节点:<clip> ... </clip>
5、AnimationDrawable 资源:
作用:动画效果
根节点:<set > ... </set>
包含元素:
alpha:设置透明图
scale:缩放图片
translate:图片位移变换
rotate:图片旋转
示例代码:
<?xml version="1.0" encoding="utf-8">
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@anim/interpolator_resource"
android;shareInterPolator="true | false" >
<alpha
android:fromAlpha="float"
android:toAlpha="float" />
<scale
android:fromXScale="float"
android:toXScale="float"
android:fromYScale="float"
android:toYScale="float"
android:pivotX="float"
android:pivotY="float" />
<translate
android:fromX="float"
android:toX="float"
android:fromY="float"
android:toY="float" />
<rotate
android:fromDegrees="float"
android:toDegrees="float"
android:pivotX="float"
android:pivotY="float" />
</set>
Java调用代码:
public class AnimationDrawable extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageView image = (ImageView)findViewById(R.id.image);
//加载动画资源
final Animation anim = AnimationUtils.loadAnimation(this,R.anim.my_anim);
//设置动画结束保留结束状态
anim.setFillAfter(true);
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view){
//开始动画
image.startAnimation(anim);
}
});
}
}