使用Layer List实现多图层叠加

我的需求很简单:使用重叠的小图来代替一张大图作为背景,因为大图很占内存,这个在移动开发中是不能容忍的(当然前提是该图可以通过小片的图重叠得到)。但是还有额外的要求就是原先的大图是有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. <!-- define border-->

  6. <stroke

  7. android:width="*dp"

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

  9. <!--set color-->

  10. <solid

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

  12. </shape>

  13. </item>

  14. <item

  15. android:left="*dp"

  16. android:right="*dp">

  17. <!--repeat bitmap-->

  18. <bitmap

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

  20. android:tileMode="repeat"

  21. android:gravity="center"/>

  22. </item>

  23. </layer-list>

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章