Home Drawable
Post
Cancel

Drawable

Drawable

이미지나 그래픽을 사용해서 좀 더 다양한 효과를 줄 수 있다 예를 들어,

버튼의 배경을 이미지로 지정하고 버튼을 클릭하면 그 이미지는 아무런 변화가 없다.

이럴 때 버튼을 클릭한것 같은 효과를 주는게 드로어블이다.

종류

드로어블설명
Bitmap Drawable이미지 파일을 보여줄 때 사용함
StateList Drawable상태별로 다른 비트맵 그래픽을 참조함
Transition Drawable두 개의 드러어블을 서로 전환할 수 있음
Shape Drawable색상과 그라데이션을 포함하여 도형 모양을 정의할 수 있음
Inset Drawable지정된 거리만큼 다른 드러어블을 들어서 보여 줄 수 있음
Clip Drawable레벨 값을 기준으로 다른 드로어블을 클리핑할 수 있음
Scale Drawable레벨 값을 기준으로 다른 드로어블의 크기를 변경할 수 있음

가장 많이 사용되는 드로어블은 상태 드로어블과 셰이프 드로어블이다.


StateList Drawable 만들기

새로운 Drawable resource file을 만들어준다.

1

2

그 후 xml 코드를 아래와 같이 수정한다.

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

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

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


</selector>

selector 태그 안에 item 태그를 넣을 수 있으며,

item 태그의 drawable 속성에는 이미지나 다른 그래픽을 설정하여 화면에 보여 줄 수 있다.

state_로 시작하는 속성은 상태를 나타내는 간단한 예로 state_pressed 속성은 눌린 상태를 의미하고

sate_focused는 포커스를 받은 상태를 의미한다.

그 후 activity_main.xml 파일에서 background 속성의 값을 @drawable/finger_drawable로 변경한다.

1
2
3
4
5
6
7
8
9
10
11
12
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button6"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/finger_drawable"
        android:text="" />
</RelativeLayout>

결과

ezgif com-gif-maker


Shape Drawble 만들기

위의 상태 드로어블 만든것 처럼 xml 파일을 만들어 준 뒤 아래와 같이 수정한다.

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

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

shape 태그의 속성값을 rectangle로 입력하였는데 이렇게 하면 사각형을 그릴 수 있다.

size 태그는 도형의 크기를 지정하는 태그이고, stroke 태그는 테두리선 속성을 지정하는 것 이고

solid 태그는 도형의 안쪽을 채울 때 사용한다.

padding 태그는 테두리 안쪽 공간을 띄우고 싶을 때 사용한다.

XML 파일을 수정 하였으면 activity_main.xml 파일에서 backgroud 속성을 @drawale/rect_drawable로 설정한 후,

backgroundTint 속성 값은 #00000000, backgroundTintMode 속성 값은 Add로 설정하면 버튼의 모양이 바뀌는것을 확인 할 수 있다.

This post is licensed under CC BY 4.0 by the author.