1. StateListDrawable (상태 드로어블)
상태 드로어블은 뷰의 상태에 따라 뷰에 보여줄 그래픽을 다르게 지정할 수 있다.
/res/drawable 폴더 안에 새로운 XML 파일을 만들면 최상위 태그는 <selector>가 된다.
그 안에 <item> 태그를 넣을 수 있으며, drawable 속성에는 이미지나 다른 그래픽을 설정하여 화면에 보이도록 할 수 있다.
state_ 로 시작하는 속성은 상태를 나타낸다.
state_pressed: 눌린 상태
state_focused: 포커스를 받은 상태
2. 예제1 결과 화면
3. 예제1 - activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="com.tistory.qlyh8.pracitice.MainActivity"> <Button android:layout_width="128dp" android:layout_height="128dp" android:background="@drawable/thumbs_up" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" /> </android.support.constraint.ConstraintLayout> | cs |
4. 예제1 - drawable/thumbs_up.xml
1 2 3 4 5 6 7 8 9 | <?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/thumbs_up_selected"/> <item android:drawable="@drawable/thumbs_up_not_selected"/> </selector> | cs |
5. 예제2 결과 화면 - 입력상자에 대한 이미지 전환 이벤트
6. 예제2 - drawable/state_focus_press.xml
1 2 3 4 5 6 7 8 9 | <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:drawable="@drawable/thumbs_up_selected"/> <item android:drawable="@drawable/thumbs_up_not_selected"/> </selector> | cs |
7. 예제2 - activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.tistory.qlyh8.pracitice.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/state_focus_press"/> </LinearLayout> | cs |
출처: https://www.edwith.org/boostcourse-android/lecture/20420/
'Android' 카테고리의 다른 글
Table Layout (테이블 레이아웃) (0) | 2018.04.28 |
---|---|
Drawable (드로어블) - Shape Drawable (0) | 2018.04.28 |
Drawable (드로어블) (0) | 2018.04.27 |
adMob - (4) 전면 광고 달기 (0) | 2018.03.03 |
adMob - (3) 배너 광고 달기 (0) | 2018.03.03 |