安卓 总结:写在drawable文件夹中的 xml 图形资源文件

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);
			}
		});
	}

}


















  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值