공부/안드로이드

[안드로이드] 드로어블

ghhong 2021. 8. 10. 14:03

드로어블(Drawable)

드로어블은 뷰에 설정할 수 있는 객체이며 그래픽으로 그릴 수 있다.

드로어블은 소스코드에서 만들 수도 있고 XML에서 정의할 수도 있는데 XML로 만들어 사용하는 경우가 많다.

드로어블 XML파일은 /res/drawable 폴더 안에 넣어서 마치 이미지처럼 뷰의 배경으로 설정할 수 있다.

 

비트맵 드로어블(BitmapDrawable) : 이미지 파일을 보여줄 때 사용한다.

상태 드로어블(StateListDrawable) : 상태별로 다른 그래픽을 참조할 수 있다.

전환 드로어블(TransitionDrawable) : 두 개의 드로어블 간에 바뀌도록 한다.

쉐이프 드로어블(ShapeDrawable) : 색상과 그라데이션을 포함하여 도형 모양을 정의할 수 있다.

인셋 드로어블(InsetDrawable) : 지정한 거리만큼 안쪽으로 들어오도록 만들 수 있다. 뷰가 실제 범위보다 작은 백그라운드가 필요한 경우 사용한다.

클립 드로어블(ClipDrawable) : 다른 드로어블을 클리핑한다. 진행률 표시줄과 같은 항목을 구현하는데 사용한다.

스케일 드로어블(ScaleDrawable) : 다른 드로어블의 크기를 바꿀 수 있다.

 

상태 드로어블

thumb_up

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"  
android:drawable="@drawable/ic_thumb_up_selected" />

    <item android:drawable="@drawable/ic_thumb_up" />

</selector>
<Button
    android:id="@+id/button"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:background="@drawable/thumb_up"
    />

 

쉐이프 드로어블

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

    <size android:height="120dp"
        android:width="200dp"/>
    <stroke android:width="1dp"
        android:color="#0000ff"/>
    <solid android:color="#aaddff"/>
    <padding android:bottom="10dp"/>

    <gradient
        android:startColor="#7288DB"
        android:centerColor="#3250B4"
        android:endColor="#254095"
        android:angle="0"
        android:centerY="0.5"
        />

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

    <item>
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#000000" />
            <solid android:color="#00000000" />
        </shape>
    </item>

    <item android:top="1dp" android:bottom="1dp"
        android:right="1dp" android:left="1dp">
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#BE55DA" />
            <solid android:color="#00000000" />
        </shape>
    </item>

</layer-list>