现在的位置: 首页 > 综合 > 正文

使用Drawable资源–在xml中定义

2018年05月27日 ⁄ 综合 ⁄ 共 4766字 ⁄ 字号 评论关闭

在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);
				}
			}
			
		}, 0, 20);
	}


}

抱歉!评论已关闭.