Android使用LayerDrawable资源(附源代码)

来源:互联网 发布:软件著作权登记数量 编辑:程序博客网 时间:2024/06/15 14:09

Android中LayerDrawable的使用详解。
1.在Android项目开发的时候,经常看到很漂亮的UI界面,比如,当你点击一张图片被选中的时候,覆上一张透明的图片。表示被选中,区别与那些没有被选中的。这种是如何实现的呢?答案是LayerDrawable的使用出现的效果。下面是LayerDrawable的总结,若有不正确的地方,请大家指正。
2.简单的来说,LayerDrawable继承与Drawable,Drawable就是一个可画的对象,可能是一张位图BitmapDrawable,也可能是一个图形ShapeDrawable,还有可能是一个图层LayerDrawable。根据不同的画图需求创建相应的可画对象。
LayerDrawable系统将会按这些Drawable对象的数组顺序来绘制它们,索引最大的Drawable对象将会被绘制在最上面,定义LayerDrawable对象的XML文件的根元素layer-list ,该元素可以包含多个item元素。


3.代码实现如下:
方法一:XML方式:

<?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_03" />    </item>    <item        android:left="25dp"        android:top="25dp">        <bitmap            android:gravity="center"            android:src="@drawable/ic_03" />    </item>    <item        android:left="50dp"        android:top="50dp">        <bitmap            android:gravity="center"            android:src="@drawable/ic_03" />    </item></layer-list>

方法二:代码方式:MainActivity.java类:

package com.scd.layerdrawabledemo;import android.app.Activity;import android.content.res.Resources;import android.graphics.drawable.Drawable;import android.graphics.drawable.LayerDrawable;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ImageView;public class MainActivity extends Activity {    private ImageView mView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mView = (ImageView) findViewById(R.id.imageView1);        // 创建资源对象        Resources resources = getResources();        // 创建数组对象        Drawable[] layers = new Drawable[2];        layers[0] = resources.getDrawable(R.drawable.ic_01);        layers[1] = resources.getDrawable(R.drawable.ic_02);        LayerDrawable layerDrawable = new LayerDrawable(layers);        // 设置背景        mView.setImageDrawable(layerDrawable);    }}
0 0
原创粉丝点击