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


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


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


下面是定义的xml:


Xml代码  
  1. xmlversion="1.0"encoding="utf-8"?>

  2. <layer-listxmlns:android="http://schemas.android.com/apk/res/android">

  3. <item>

  4. <shape>

  5. <stroke

  6. android:width="*dp"

  7. android:color="#********"/>

  8. <solid

  9. android:color="#00******"/>

  10. shape>

  11. item>

  12. <item

  13. android:left="*dp"

  14. android:right="*dp">

  15. <bitmap

  16. android:src="@drawable/****"

  17. android:tileMode="repeat"

  18. android:gravity="center"/>

  19. item>

  20. layer-list>

http://michellewang.iteye.com/blog/1416754