欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android LayerDrawable使用实例

程序员文章站 2023-08-29 18:17:43
1.在android项目开发的时候,经常看到很漂亮的ui界面,比如,当你点击一张图片被选中的时候,覆上一张透明的图片。表示被选中,区别与那些没有被选中的。这种是如何实现的呢...

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

    }
}