读书人

运用Layer List实现多图层叠加

发布时间: 2012-07-01 13:15:00 作者: rapoo

使用Layer List实现多图层叠加

我的需求很简单:使用重叠的小图来代替一张大图作为背景,因为大图很占内存,这个在移动开发中是不能容忍的(当然前提是该图可以通过小片的图重叠得到)。但是还有额外的要求就是原先的大图是有stroke的,就是边框,我用重叠的图片必须没有边框(可以选择高度保持,宽度截取一部分,这样左右两边就没有边框)。

?

解决方案也很简单,比较容易想到,就是使用Layer List:定义一个item为shape,用来添加stroke做为重叠后的图片的边框,再定义一个item为bitmap,设置tileMode为repeat,并且为了保证图片不被拉伸变形之类的,设置gravity为center,另外设定一些left,right的偏移,以便能显示出来shape的stroke。

?

之所以需要在此记录一下,就是我碰到一个超级恶心的问题,就是在3.0以下的系统,重叠的图片之间会有很明显的线。。。这个纠结我好久了。。害我差点放弃这个解决方案,而用一个么有边框的难看的背景。。还好我隔了一段时间又开始看这个问题(好长好多废话。。)。分析之后发现好像是定义的shape默认会是黑色,可能我之前的图片是有一定透明度的,所以会显示出来,但是至于为什么只在图片之间能明显的看出来我就不清楚了。。所以,将shape的颜色设定为透明的就可以了。。

?

下面是定义的xml:

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" ><item><shape>            <!-- define border-->    <stroke         android:width="*dp"        android:color="#********"/>                    <!--set color-->    <solid        android:color="#00******" /></shape></item>    <item     android:left="*dp"     android:right="*dp">        <!--repeat bitmap-->    <bitmap     android:src="@drawable/****"     android:tileMode="repeat"     android:gravity="center" />    </item></layer-list>
?

读书人网 >移动开发

热点推荐