2011년 7월 28일 목요일

Android - 이벤트시 icon 변경 (Selector 이용)

사용자 정의 버튼이나 이미지 버튼을 만드는 경우

버튼이 눌러지거나, 포커스를 받는경우

아이콘 모양을 변경시켜 이벤트가 발생함을 표시할 필요가 있다



예) 평소 왼쪽과 같은 상태이지만 터치나, 포커스를 받는 이벤트가 발생할 경우 오른쪽 모양처럼 변한다.

  -터치, 포커스->
                                        menuiconsubject.png                           menuiconsubjectselected.png
                                 


이럴경우 Selector 라는 놈을 사용한다.


기본적인 파일 위치와 정의는 아래와 같이 한다.

res/drawable/menu_item_subject.xml

<?xml version="1.0" encoding="utf-8"?>

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

    <item android:state_pressed="true" android:drawable="@drawable/menuiconsubjectselected" />
    <item android:state_focused="true" android:drawable="@drawable/menuiconsubjectselected" />
    <item android:drawable="@drawable/menuiconsubject" />

</selector>



정의된 selector를 사용하는 방법은 아래와 같다.

<ImageView
android:id="@+id/icon" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"  android:clickable="true" android:src="@drawable/menuiconsubject"/>