출처 : http://www.edwith.org/boostcourse-android/lecture/20420/
상태 드로어블
상태 드로어블은 뷰의 상태에 따라 뷰에 보여줄 그래픽을 다르게 지정할 수 있도록 합니다.
/res/drawable 폴더 안에 새로운 XML 파일을 만들면 최상위 태그는 <selector>가 됩니다.
그 안에 <item> 태그를 넣을 수 있으며 drawable 속성에는 이미지나 다른 그래픽을 설정하여 화면에 보이도록 할 수 있습니다.
state_ 로 시작하는 속성은 상태를 나타내는데 예를 들어 state_pressed 속성은 눌린 상태를 의미하고 state_focused는 포커스를 받은 상태를 의미합니다.
<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>
상태 속성이 지정되지 않은 <item> 태그에는 drawable 속성에 ic_thumb_up 이미지가 설정되어 있으므로 디폴트 이미지로 보이게 됩니다.
state_pressed 속성이 설정된 <item> 태그에는 ic_thumb_up_selected 이미지가 설정되어 있으며 이 이미지는 뷰가 눌렸을 때 보이게 됩니다.
이렇게 만든 XML 파일은 뷰의 background 속성으로 설정될 수 있습니다.
/res/drawable 폴더 안에 thumb_up.xml 이라는 이름의 파일을 만들었다면 다음과 같이 버튼의 배경으로 설정할 수 있습니다.
<Button
android:id="@+id/button"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/thumb_up"
/>
생각해보기
- 소스 코드로 드로어블을 만드는 것보다 XML로 드로어블을 만들어 사용하면 얼마나 더 편리해지는 걸까요?
- 확실히 편하다. 소스에서 조건문을걸거나 그럴필요없이 바로 xml에서 할수 있기 때문에 한눈에 알아보기 편하다. - XML로 드로어블을 만들고 레이아웃의 배경으로 설정하면 카드 모양의 배경을 만들 수 있을까요?
- 카드모양이라는게 명확하지는않지만 패턴이있는 무늬모양이라면 가능할것 같다.
'Boostcourse' 카테고리의 다른 글
PJT1 ) 안드로이드 영화상세 화면 만들기 (0) | 2018.05.21 |
---|---|
14) 안드로이드 쉐이프 드로어블 (0) | 2018.05.21 |
12) 안드로이드 기본 위젯들 (0) | 2018.05.21 |
11) 안드로이드 프레임 레이아웃과 뷰의 전환 (0) | 2018.05.21 |
10) 안드로이드 상대 레이아웃 (RelativeLayout) (0) | 2018.05.21 |