Drawable资源

1、StateListDawable资源

定义StateListDawable对象的XML文件的根元素为<selector.../>,该元素可以包含多个<item.../>元素,该元素可指定如下属性。

android:color或android:drawable指定颜色或Drawable对象

android:state_xxx指定一个特定状态

如: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="#eee"/>
</selector>
<!-- 使用StateListDrawable资源 -->
<EditText  
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:textColor="@drawable/my_image"
	/>

2、LayerDrawable资源

定义LayerDrawable对象的XML文件的根元素为<layout-list.../>,该元素可以包含多个<item.../>元素,该元素可指定如下属性。

android:drawable指定作为LayerDrawable元素之一的Drawable元素之一的Drawable对象。

android:id为该Drawable对象指定一个标识

android:buttom|top|left|button他们勇于指定一个长度值,用于指定将该Drawable对象绘制到目标组件的指定位置。

如:my_bar

<?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> 


layout_logo

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item>
      <bitmap android:src="@drawable/ic_launcher"
        android:gravity="center" />
    </item>
    <item android:top="25dp" android:left="25dp">
      <bitmap android:src="@drawable/ic_launcher"
        android:gravity="center" />
    </item>
    <item android:top="50dp" android:left="50dp">
      <bitmap android:src="@drawable/ic_launcher"
        android:gravity="center" />
    </item>
</layer-list>


应用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<!-- 定义一个拖动条,并改变轨道外观 -->
<SeekBar
 	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:max="100"
	android:progressDrawable="@drawable/my_bar"
	/>
<ImageView
 	android:layout_width="wrap_content" 
	android:layout_height="wrap_content"
	android:src="@drawable/layout_logo"
	/>
</LinearLayout>


3、ShapeDrawable资源

my_shape_1

<?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="3dip" android:color="#ff0" />
</shape>


my_shape_2

<?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>


my_shape_3

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
	android:shape="oval">
	<!-- 定义填充渐变颜色 -->
	<gradient 
		android:startColor="#ff0" 
		android:endColor="#00f" 
		android:angle="45"
		android:type="sweep"/> 
	<!-- 设置内填充 -->
	<padding android:left="7dp" 
		android:top="7dp" 
		android:right="7dp" 
		android:bottom="7dp" />
	<!-- 设置圆角矩形 -->
	<corners android:radius="8dp" /> 
</shape>


应用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<EditText
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:background="@drawable/my_shape_1"
	/>
<EditText
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:background="@drawable/my_shape_2"
	/>	
<EditText
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:background="@drawable/my_shape_3"
	/>
</LinearLayout>


4、ClipDrawable资源

一个徐徐渐进展开的风景画

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<ImageView  
	android:id="@+id/image"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:scaleType="fitStart"
	android:src="@drawable/my_clip"
	/>
</LinearLayout>


 

<?xml version="1.0" encoding="UTF-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android" 
    android:drawable="@drawable/shuangta" 
    android:clipOrientation="horizontal" 
    android:gravity="center"> 
</clip>


 

public class ClipDrawableTest extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		ImageView imageview = (ImageView) findViewById(R.id.image);
		// 获取图片所显示的ClipDrawable对象
		final ClipDrawable drawable = (ClipDrawable)
			imageview.getDrawable();
		final Handler handler = new Handler()
		{
			@Override
			public void handleMessage(Message msg)
			{
				// 如果该消息是本程序所发送的
				if (msg.what == 0x1233)
				{
					// 修改ClipDrawable的level值
					drawable.setLevel(drawable.getLevel() + 200);
				}
			}
		};
		final Timer timer = new Timer();
		timer.schedule(new TimerTask()
		{
			@Override
			public void run()
			{
				Message msg = new Message();
				msg.what = 0x1233;
				// 发送消息,通知应用修改ClipDrawable对象的level值。
				handler.sendMessage(msg);
				// 取消定时器
				if (drawable.getLevel() >= 10000)
				{
					timer.cancel();
				}
			}
		}, 0, 300);
	}
}

5、AnimationDrawable资源

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<ImageView 
	android:id="@+id/image"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:src="@drawable/java"
	/>
<Button 
	android:id="@+id/bn"
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:text="开始动画"
	/>
</LinearLayout>


 

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 bn = (Button) findViewById(R.id.bn);
		bn.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View arg0)
			{
				// 开始动画
				image.startAnimation(anim);
			}
		});
	}
}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值