LAndroid LayerDrawable层叠样式layer-list

layer-list可以将多个图片按照顺序层叠起来。 

语法:在drawalbe/drawable-layer.xml中 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />
    <item android:drawable="@drawable/logo_overlay" />
</layer-list>

使用方式像其他图片一样: 
如在样式中引用: 

<resources>
    <style name="LookupTheme" parent="@android:style/Theme.Light.NoTitleBar">
        <item name="android:windowBackground">@drawable/drawable-layer</item>
    </style>
</resources>

在java代码中引用: 
((ImageView) findViewById(R.id.imageview)).setImageDrawable(getResources().getDrawable(R.drawable.drawable-layer) 

在代码中实现: 

Resources resources = getResources();
Drawable[] layers = new Drawable[2];
layers[0] = r.getDrawable(R.drawable.white);
layers[1] = r.getDrawable(R.drawable.logo_overlay);
LayerDrawable layerDrawable = new LayerDrawable(layers)
((ImageView) findViewById(R.id.imageview)).setImageDrawable(layerDrawable);

再举一个例子: 
要用2张图片叠加起来,看上去形成一张图片 

首先创建一个drawalbe/login_head.xml的文件,内容如下: 

<?xml version="1.0" encoding="UTF-8"?>
<layer-list
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/user_faceback_drawable" android:drawable="@drawable/faceback" />
    <item android:id="@+id/user_face_drawable" android:drawable="@drawable/h001" android:left="10.0dip" android:top="18.0dip" android:right="25.0dip" android:bottom="35.0dip" />
</layer-list>

然后就可以使用这个组合的图片了,比如在ImageView中显示: 
<ImageView android:id="@+id/faceImg" android:background="@drawable/login_head" 
android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

使用java代码: 
如何使多个Drawable叠加(合成图片)? 
大家可能知道Bitmap的叠加处理在Android平台中可以通过Canvas一层一层的画就行了,而Drawable中如何处理呢? 除了使用BitmapDrawable的getBitmap方法将Drawable转换为Bitmap外,今天Android123给大家说下好用简单的LayerDrawable类,LayerDrawable顾名思义就是层图形对象。下面直接用一个简单的代码表示: 

Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.cwj);
    Drawable[] array = new Drawable[3];
     array[0] = new PaintDrawable(Color.BLACK); //黑色
     array[1] = new PaintDrawable(Color.WHITE); //白色
     array[2] = new BitmapDrawable(bm); //位图资源
    LayerDrawable ld = new LayerDrawable(array); //参数为上面的Drawable数组
    ld.setLayerInset(1, 1, 1, 1, 1);  //第一个参数1代表数组的第二个元素,为白色
    ld.setLayerInset(2, 2, 2, 2, 2); //第一个参数2代表数组的第三个元素,为位图资源
    mImageView.setImageDrawable(ld); 

上面的方法中LayerDrawable是关键,setLayerInset方法原型为public void setLayerInset (int index, int l, int t, int r, int b) 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom。对于简单的图片合成我们可以将第一和第二层的PaintDrawable换成BitmapDrawable即可实现简单的图片合成。

时间: 2024-08-02 20:16:11

LAndroid LayerDrawable层叠样式layer-list的相关文章

LayerDrawable层叠样式layer-list

原文:http://gundumw100.iteye.com/blog/896923 layer-list可以将多个图片按照顺序层叠起来. 语法:在drawalbe/drawable-layer.xml中  Java代码   <layer-list xmlns:android="http://schemas.android.com/apk/res/android">       <item android:drawable="@android:color/w

Jquery date picker z-index 问题,Timepicker,层叠样式z-index

在使用 Jquery date Timepicker 时候 由于还使用了其他弹出层,导致层叠样式出现些问题. 总结下解决方法 方法一:css里加入这么一行  代码如下 复制代码 .ui-datepicker { z-index:9999 !important} 方法二:  代码如下 复制代码 $('#timepicker').datetimepicker({     beforeShow: function() {         setTimeout(function(){          

CSS层叠样式的学习[2]

css 1.规则 选择符 任何HTML元素都可以是一个CSS1的选择符.选择符仅仅是指向特别样式的元素.例如, P { text-indent: 3em } 当中的选择符是P. 类选择符 单一个选择符能有不同的CLASS(类),因而允许同一元素有不同样式.例如,一个网页制作者也许希望视其语言而定,用不同的颜色显示代码 : code.html { color: #191970 }code.css { color: #4b0082 } 以上的例子建立了两个类,css和html,供HTML的CODE元

CSS层叠样式的主次顺序

css 当使用了多个样式表,样式表需要争夺特定选择符的控制权.在这些情况下,总会有样式表的规则能获得控制权.以下的特性将决定互相对立的样式表的结果. 正如以前所提及的,网页制作者和读者都有能力去指定样式表.当两者的规则发生冲突,网页制作者的规则会凌驾于读者的其它相同权重的规则.而网页制作者和读者的样式表都超越浏览器的内置样式表. 网页制作者应该小心地使用! important 规则,因为它们会超越用户任何的! important 规则.例如,一个用户由于视觉关系,会要求大字体或指定的颜色,而且这

CSS层叠样式的学习[1]

css 1.连接到一个外部的样式表 将一个外部的样式表加入到HTML网页中使用下列的格式: <LINK REF=  HREF=  TYPE=   MEDIA=> <LINK>标记放置到文档的head部分. 其中REF属性用于定义的连接文件与HTML文档之间的联系.REL=StyleSheet指定一个固定的首选样式.固定样式在样式表被激活时总是被应用.网页制作者不能指定多于一个的首选样式. 交互样式通过REL="Alternate StyleSheet"指出.例子

Android TransitionDrawable&amp;amp;StateListDrawable的使用

这个SDK里面的一段代码:  比较适合来做一个简单的动画(比如文字的渐变放大效果等)  Resources res = getResources(); TransitionDrawable transition = (TransitionDrawable) res .getDrawable(R.drawable.expand_collapse); ImageView image = (ImageView) findViewById(R.id.toggle_image); image.setIma

前端最好用弹框组件-layer

layer是一款近年来备受青睐的web弹层组件,它甚至兼容了包括IE6在内的所有主流浏览器;而且layer采用MIT开源许可证,将会永久性提供无偿服务.现在你肯定对layer充满了兴趣,首先,了解layer肯定避不开layui,layui是一个集合多个组件,例如:layer/laypage/laydate等的前端框架,和Bootstrap是同类别的,而layer一直是layui的代表作.如果舍弃layui单独使用layer的话,他需要依赖于jq1.8以上版本引入:废话不多说,直接能进入layer

创建并引用样式类

创建     在用CSS进行网站设计时,会遇到一种情况:相同的标志可能在不同的地方显示的效果不一样.怎么办呢,有一种办法即是采用上节所讲的直接插入式,逐个逐个地进行属性设置,如果该类标志比较少,这倒还可以:如果多了,可就有点令人厌烦了. 解决的办法就是采用样式类. 样式类,顾名思义是样式的分类,它可以根据不同的风格需要对某一类型的标志设置几种不同的CSS属性,也可以对整个风格分成几个类而不是只针对某一种类型的标志. 一.样式类的建立 样式类可在我们上节讲的外部文件与文档头方式中建立,而不能在直接

Photoshop教程:图层样式制作漂亮的手镯

本教程主要使用Photoshop绘制漂亮的手镯效果. 仅仅利用Photoshop7.0中的图层样式(Layer Style)功能制作的手镯效果! 图1 1. 新建一个文件,在背景层中填充深红色,然后依次使用Filter/Noise/Add Noise(滤镜/杂色/添加杂色)滤镜和Filter/Blur/Gaussian Blur(滤镜/模糊/高斯模糊)滤镜,设置合适的参数后确定(因为这两个滤镜实现比较简单,就不单独制作过程,不明白的朋友可以参考本站其它教程).为背景制作红色的毛毯效果,如图2所示