Android selector  ├뷰 

2011/01/05 11:40

복사http://blog.naver.com/jolangma/150100210916

출처:

step 1. View의 각 상태에 맞는 이미지를 준비합니다.

 res/drawable 폴더내에 두어야하는건 아시죠?!


(image를 nine patch해서 사용하시면 좋겠죠...^~^)

 normal

 활성화 상태, View.setEnabled(true)상태와 같다.

 빠져서는 안되는 필수요소입니다.

 disable

 비활성화 상태, View.setEnabled(false)상태와 같다.

 필요할 때 선언할 수 있는 선택요소입니다.

 focused

 EditText에서 입력 대기 상태, 즉 커서가 깜박이는 경우에 해당합니다.

 또는 비활성화 상태에서 selected 된 상태입니다.

 필요할 때 선언할 수 있는 선택요소입니다.

 pressed

 Button 종류의 View가 눌려진 상태, View 종류의 View가 터치된 상태입니다.

 빠져서는 안되는 필수요소입니다.

 selected

 device의 트랙볼이나 dpad방향키로 View가 선택된 상태. 

 이 때, state_window_focused 상태는 true가 됩니다.

 요즘 기기들 중 쿼티 자판이 있는 경우를 제외한 기기들은 이 상태를 쓸 경우가 별로 없습니다. 왜냐하면 기본 입력 방식이 터치니깐요...=_=

 필요할 때 선언할 수 있는 선택요소입니다.



step 2. res/drawable 폴더내에 아래와 같은 형식의 .xml 파일을 생성합니다.

 res/drawable-hdpi/btn_white_stone.xml


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

    /!-- 아래 두 개의 선언은, 그래도 혹시 모르니 selected 상황이 해제되었을 

          때를 대비해 추가해 두는게 좋습니다. --/

    <item android:state_window_focused="false" android:state_enabled="true"

        android:drawable="@drawable/btn_normal" />

    <item android:state_window_focused="false" android:state_enabled="false"

        android:drawable="@drawable/btn_disable" />


    <item android:state_pressed="true" 

        android:drawable="@drawable/btn_square_pressed" />


    <item android:state_focused="true" android:state_enabled="true"

        android:drawable="@drawable/btn_square_selected" />


     /!-- 아래의 선언이 없을 경우 selected 상황에서는 버튼이 보이지 않습니다. --/

    <item android:state_enabled="true"

        android:drawable="@drawable/btn_square_normal" />


    <item android:state_focused="true"

        android:drawable="@drawable/btn_square_focused" />    

    

    /!-- 아래의 선언이 없을 경우 selected 상황에서는 버튼이 보이지 않습니다. --/

    <item

         android:drawable="@drawable/btn_square_disable" />

</selector>

 그래서 필자는 보통은 아래와 같이,

 보통상태와 버튼이나 뷰가 눌러졌을 때의 상태, 두 경우만 선언해서 사용하고 있습니다.


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

    <item android:state_window_focused="false" android:state_enabled="true"

        android:drawable="@drawable/btn_help_normal" />


    <item android:state_pressed="true" 

        android:drawable="@drawable/btn_help_pressed" />


    <item android:state_enabled="true"

        android:drawable="@drawable/btn_help_normal" />

  

</selector>


step 3. Button의 background로 위에서 생성한 drawable을 지정합니다.

 res/layout/layout.xml


<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Test Button"

android:background="@drawable/btn_white_stone"

/>

[출처] Android selector|작성자 jolangma


+ Recent posts