android drawable繪制組合圖形


最近碰到個給edittext設置背景,背景圖類似記事本一樣一行一行的。之前的處理方式是自定義一個view,然后在onDraw方法中繪制背景。后來一想覺得這種方式擴展性不是很強,如果下次改變背景的話還需修改onDraw方法中的代碼。想到Drawable中的xml也可以繪制圖形,不過之前繪制的都是單個圖形,比如圓角矩形,圓形這類的,現在需要繪制的是矩形和線條組合的圖形。可以用到LayerList來實現多個圖形的繪制。如下xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#FFFFFF" />
            <corners android:radius="3dip" />
            <stroke
                android:width="1dip"
                android:color="#7DD43B" />
        </shape>
    </item>
    <item
        android:top="-140dp" >
        <shape android:shape="line">
            <stroke
                android:width="1dp"
                android:color="#FF0000"
                android:dashGap="8dp"
                android:dashWidth="1dp" />
        </shape>
    </item>
    
    <item
        android:top="-60dp" >
        <shape android:shape="line">
            <stroke
                android:width="1dp"
                android:color="#FF0000"
                android:dashGap="8dp"
                android:dashWidth="1dp" />
        </shape>
    </item>
    
    <item
        android:top="20dp" >
        <shape android:shape="line">
            <stroke
                android:width="1dp"
                android:color="#FF0000"
                android:dashGap="8dp"
                android:dashWidth="1dp" />
        </shape>
    </item>
    
    <item
        android:top="100dp" >
        <shape android:shape="line">
            <stroke
                android:width="1dp"
                android:color="#FF0000"
                android:dashGap="8dp"
                android:dashWidth="1dp" />
        </shape>
    </item>
    
    <item
        android:top="180dp" >
        <shape android:shape="line">
            <stroke
                android:width="1dp"
                android:color="#FF0000"
                android:dashGap="8dp"
                android:dashWidth="1dp" />
        </shape>
    </item>
    
    <item
        android:top="260dp" >
        <shape android:shape="line">
            <stroke
                android:width="1dp"
                android:color="#FF0000"
                android:dashGap="8dp"
                android:dashWidth="1dp" />
        </shape>
    </item>

    
    <item
        android:top="340dp" >
        <shape android:shape="line">
            <stroke
                android:width="1dp"
                android:color="#FF0000"
                android:dashGap="8dp"
                android:dashWidth="1dp" />
        </shape>
    </item>
</layer-list>

上面的xml就是繪制出來的組合圖形,效果如下圖所示

 

 綠色矩形區域和紅色線條的圖形組合,調用時直接設置EditText的background

 

就可以達到圖中效果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM