android LayerDrawable 图层的实现

本文介绍了如何在Android中创建和使用LayerDrawable,通过代码动态创建和XML方式配置多个图层,展示了如何设置图层的边距以实现叠加效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.demo.laydrable;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.PaintDrawable;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class LayerDrawableDemoActivity extends Activity {
	/** Called when the activity is first created. */
	private ImageView mImageView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mImageView = (ImageView) this.findViewById(R.id.imageView);
		//分层图像的使用
		Bitmap bm = BitmapFactory.decodeResource(getResources(),
				R.drawable.ic_launcher);
		Drawable[] array = new Drawable[3];
		array[0] = new PaintDrawable(Color.RED); // 黑色
		array[1] = new PaintDrawable(Color.WHITE); // 白色
		array[2] = new BitmapDrawable(bm); // 位图资源
		LayerDrawable ld = new LayerDrawable(array); // 参数为上面的Drawable数组
		//这个方法用于设置指定索引Drawble的边界
		//(int index, int l, int t, int r, int b) 
		ld.setLayerInset(1, 1, 1, 1, 1);   
		ld.setLayerInset(2, 2, 2, 2, 2);  
		
		mImageView.setImageDrawable(ld);
		
		//当然也可以使用xml实现,放在drawble资源文件夹下
		/*
		 * <?xml version="1.0" encoding="utf-8"?>
		 * <layer-list xmlns:android="http://schemas.android.com/apk/res/android">    
		 * 		<item>      
		 * 			<bitmap android:src="@drawable/android_red"        
		 * 					android:gravity="center" />    
		 * 			</item>    
		 * 			<item android:top="10dp" android:left="10dp">      
		 * 				<bitmap android:src="@drawable/android_green"        
		 * 					android:gravity="center" />    
		 * 			</item>    
		 * 			<item android:top="20dp" android:left="20dp">      
		 * 				<bitmap android:src="@drawable/android_blue"        
		 * 				android:gravity="center" />    
		 * 			</item>
		 * </layer-list>
		 */
		 
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值