2010-02-07 2 views
4

사용자가 버튼을 터치하는 동안 하나의 이미지를 표시하고 사용자가 버튼을 놓으면 기본 이미지로 돌아갑니다.Android : 버튼을 놓을 때 ImageButton의 이미지를 전환하려면 어떻게해야합니까?

나는이 일어날 수 있도록 선택기를 사용하려고 해요 :

<?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/record_on" /> 
    <item android:state_focused="true" 
    android:drawable="@drawable/record_off" /> 
    <item android:drawable="@drawable/record_off" /> 
</selector> 

을 나는 선택과 몇 가지를 시도했지만, 항상 같은 동작을 생성합니다 버튼은 기본로 시작 이미지를 누른 다음 그것을 누르면 "record_on"이미지로 변경되고 놓아두면 기본 이미지로 돌아 가지 않습니다.

ImageButton에서 이러한 종류의 동작을 얻는 방법이 있습니까? 아니면 다른 것을 사용해야합니까?

답변

0

그것은 내가 너무 빨리 내 onTouch() 구현에 터치 이벤트를 소비 한 것으로 나타났다. ACTION_UP 이벤트를 보았을 때 true를 반환하여 이벤트를 소비하고 있었기 때문에 이벤트가 전달되기 전에 이벤트 전파가 중단되었습니다. 대신 false를 반환하면 선택기 동작이 시작되고 이미지가 기본값으로 돌아갑니다.

즉, 나는 n00b입니다.

내가 처음에는이 사실을 알지 못했던 이유는 ACTION_DOWN 이벤트가 정상적으로 작동하는 것처럼 보였으므로 나도 이것을 소비하고있었습니다. 나중에 다른 모든 이벤트에 대해 false를 반환 했으므로 ACTION_DOWN 이벤트가 아니라 ACTION_MOVE 이벤트가 변경되어 버튼 이미지가 변경되었음을 발견했습니다.

0

당신은 (당신이 당신의 SDK를 설치하고 $PLATFORM이 관심있는 어떤 API 버전입니다 $ANDROID_HOME 임) $ANDROID_HOME/platforms/$PLATFORM/data/res/drawable/btn_default.xml 것으로 보이는 Button/ImageButton에 대한 표준 XML 자원,보고 할 수 있습니다.

그들의 "정상"상태는 다음과 같습니다

<item android:state_enabled="true" 
    android:drawable="@drawable/btn_default_normal" /> 
+0

답변 해 주셔서 감사합니다. 나는 btn_default.xml을 찾아 selector의 구조와 순서를 복사하고 state_pressed에 대한 "record_on"이미지를 설정하고 다른 모든 것에 대해서는 "record_off"이미지를 설정했습니다. 여전히 같은 문제가 있습니다. 눌렀을 때 "record_on"으로 전환하고 결코 되돌아 가지 않습니다. – Ryan

+0

어디서 일이 잘못 될지 모르겠습니다. 분명히 일반 단추 누르기는 프레스가 끝나면 단추를 원래 상태로 복원합니다. – CommonsWare

관련 문제