使用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

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