微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Drawable资源--在xml中定义

在Drawable中有多种图片作为资源.jpg,.png,.gif,.9.png等,我们也可以使用.xml作为drawable资源 。xml文件可以被编译成Drawable子类的对象。

总共4个.mxl资源类型 优化UI界面

* 1:StateListDrawable的应用

随着目标控件的不同状态而显示出不同的背景或者前景。

selector.mxl中的元素:

<item android:drawable

android:state_xxx/>

state_xxx所支持的状态:



demo1:state_list_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 不同状态下不同的颜色效果 -->
    <!-- 得到焦点时候的颜色 -->
    <item
        android:state_focused="true"
        android:drawable="@drawable/a"/>
        <!-- 失去焦点时候的颜色 -->
        <item
        android:state_focused="false"
         android:drawable="@drawable/e"/>
     
</selector>

main.xml

</pre><pre name="code" class="java"><!-- 1:StateListDrawable的应用演示 -->
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="20dp"
        android:background="@drawable/state_list_drawable" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="20dp"
        android:background="@drawable/state_list_drawable" />
效果图:




* 2:layerListDrawable的层次应用

层次资源,针对已经完成的和未完成的不同背景;层次的图片布局设置

demo2:

layer_list_drawable.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/e"/>

    <!-- 定义已经完成的背景图片 -->
    <item
        android:id="@android:id/progress"
        android:drawable="@drawable/b"/>

</layer-list>

<span style="font-size:18px;color:#006600;"><strong>layer_list_drawable1.xml</strong></span>

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/ic_launcher" >
        </bitmap>
    </item>
    
    <item
        android:left="25dp"
        android:top="25dp">
        <bitmap
            android:gravity="center"
            android:src="@drawable/ic_launcher" >
        </bitmap>
    </item>
    
    <item
        android:left="50dp"
        android:top="50dp">
        <bitmap
            android:gravity="center"
            android:src="@drawable/ic_launcher" >
        </bitmap>
    </item>

</layer-list>
main.xml


<!--  * 2:layerListDrawable的层次应用演示 -->
    <SeekBar
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginTop="30dp"
        android:progressDrawable="@drawable/layer_list_drawable" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="30dp"
        android:background="@drawable/layer_list1_drawable" />





* 3:shapeDrawable的应用 绘制一些背景图形状 边框

在btn.xml中

<?xml version="1.0" encoding="utf-8"?>
<!--     android:shape="oval" -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" >"
    <!-- 边框颜色 -->
    <stroke android:width="7dp"
        android:color="#f0f"
        android:dashWidth="7dp"/>
    <!-- 背景色 -->
    <solid android:color="#0ff"/>
    <!-- 弧度 -->
    <corners android:radius="45dp"/>
    
    <gradient
        android:startColor="#f00"
        android:centerColor="#0f0"
        android:endColor="#00f"
        android:centerX="80%"
        />

</shape>
在main.xml中:

<!--3 shapeDrawable的应用演示  绘制一些背景图形状  边框 -->    
    <Button 
         android:layout_width="150dp"
        android:layout_height="50dp"
        android:layout_marginLeft="30dp"
        android:background="@drawable/btn" />




* 4:ClipDrawable 徐徐展开的风景效果

在xml中含有的元素:

<span style="font-size:18px;color:#006600;"><strong> android:clipOrientation展开的方法</strong></span>
<span style="font-size:18px;color:#006600;"><strong> android:drawable打算展开的图片</strong></span>
<span style="font-size:18px;color:#006600;"><strong> android:gravity 位置</strong></span>
<span style="font-size:18px;color:#006600;"><strong>ClipDrawable含有一个setLevel(int)方法 ,可以用来设置展开的范围。</strong></span><span style="font-size:24px;">
</span>


在clip_drawable.xml中:

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

</clip>

在main.xml中:

    <ImageView
        android:id="@+id/image_clip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:background="@drawable/clip_drawable" />
在主.java中:

import java.util.Timer;
import java.util.TimerTask;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.graphics.drawable.ClipDrawable;
import android.view.Menu;
import android.widget.ImageView;
/**
 * 在xml中
 * 1:StateListDrawable的应用演示
 * 效果  在不同的状态下背景不同  如得到焦点与失去焦点  点击和未点击   
 * 2:layerListDrawable的层次应用演示
 * 效果:拖动进度条,已经完成的进度背景与未完成的不同  
 * 3:shapeDrawable的应用演示  绘制一些背景图形状  边框
 * 
 * 4:ClipDrawable  
 * 演示效果:徐徐展开的风景
 * @author LiTing
 *
 */
public class MainActivity extends Activity {

	ClipDrawable clip;
	Timer time;
	ImageView image_clip;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		image_clip=(ImageView) findViewById(R.id.image_clip);
		
		clip=(ClipDrawable) image_clip.getBackground();
		
		final Handler handler=new Handler(){

			@Override
			public void handleMessage(Message msg) {
				// Todo Auto-generated method stub
				if(msg.what==123)
				{
					clip.setLevel(clip.getLevel()+100);
				}
			}
			
			
		};
		
		
		
		
		time=new Timer();
		time.schedule(new TimerTask(){

			@Override
			public void run() {
				// Todo Auto-generated method stub
				if(clip.getLevel()<=10000)
				{
					handler.sendEmptyMessage(123);
				}
			}
			
		},20);
	}


}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。