안드로이드(Android)에는 Shape Drawable이라는 것이 있습니다. 코드상에서 다양한 모양의 Drawable 을 만들 수 있는 방법도 제공하지만 XML로 쉽게 배경이미지를 만드는데도 사용합니다. 실제 비트맵을 사용하지 않아도 되므로 apk의 용량도 줄여주고 쉽게 모양을 바꿀수도 있으니 편리합니다. 그런데 아직 제대로 문서화되어있지 않지만 활용도가 높아서 정리해놓습니다.

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FF0000FF"/>
    <stroke android:width="4dp" android:color="#FFFFFFFF"
            android:dashWidth="1dp" android:dashGap="2dp" />
    <padding android:left="7dp" android:top="7dp"
            android:right="7dp" android:bottom="7dp" />
    <corners android:radius="4dp" />
</shape>

res/drawable/some_name.xml 으로 저장하면 다른 Bitmap Drawable과 동일하게 사용할 수 있습니다. 

solid       : 단색으로 채워넣습니다.
stroke     : 테두리를 그려넣습니다. dashWidth와 dashGap은 점선을 그릴 때 사용합니다.
corners  : 가장자리를 둥글게 처리합니다.
padding : 패딩

    <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF"
            android:angle="270"/>

gradient를 solid대신 넣을수도 있습니다. 단색이아니라 gradient 효과(서서히 색이 변하는)로 채워집니다.

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <solid android:color="#00000000"/>
    <stroke android:width="4dp" android:color="#99000000"
            android:dashWidth="4dp" android:dashGap="2dp" />
    <padding android:left="7dp" android:top="7dp"
            android:right="7dp" android:bottom="7dp" />
    <corners android:radius="4dp" />
</shape>

shape를 oval로 지정하면 타원형의 형태로 만들수가 있습니다.

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line">
    <stroke android:width="1dp" android:color="#FF000000"
            android:dashWidth="1dp" android:dashGap="2dp" />
</shape>

shape를 line으로 지정하여 단순한 선을 만들수도 있습니다.


XML로 그려진 Drawable들 예제..