Android # 상태 드로어블 적용
안드로이드/Android-Dev

Android # 상태 드로어블 적용

 

상태 드로어블 적용해보기


상태 드로어블은 뷰의 상태에 따라 뷰에 보여줄 그래픽을 다르게 지정할 수 있다.
버튼(이미지)을 눌렀을때와, 누르지 않은 상태를 다른 이미지로 보여주게 할 수 있다.

finger.drawable.xml을 만들어서 다음과 같이 작성해보자.

[app/res/drawable/finger_drawable.xml]

<?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>
cs

 

상태 속성이 설정되지 않은 태그에는 drawable 속성값으로 @drawable/finger를 입력했다. 이렇게 하면 finger.png 이미지가 보이게 된다. state_pressed라는 상태 속성이 설정된 태그에는 drawable 속성 값으로 @drawable/finger_pressed를 입력했다. 이 이미지는 뷰가 눌렸을 때 보이게 된다.

위처럼 만든 xml 파일은 뷰의 background 속성으로 설정할 수 있다.

activity_main.xml 파일에서 버튼을 선택한 후, background 속성의 값을 @drawable/finger_drawable로 변경한다.
[activity_main.xml]

<?xml version="1.0" encoding="utf-8"?>
 
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="141dp"
        android:layout_marginLeft="141dp"
        android:layout_marginTop="300dp"
        android:layout_marginEnd="142dp"
        android:layout_marginRight="142dp"
        android:layout_marginBottom="303dp"
        android:background="@drawable/finger_drawable"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
cs

앱을 실행해서 버튼을 눌러보면, 상태에 따라 버튼이 바뀌는 것을 확인할 수 있다.