2012-05-03 11 views
7

C'è un modo per animare un pulsante in Android in modo che quando si fa clic su di esso si modifica lo sfondo del pulsante su un'immagine premuta?Cambiamento dello stato di visualizzazione del pulsante su clic

Sto solo utilizzando la proprietà background per mostrare l'immagine sul pulsante del modulo.

+3

L'animazione in questo senso è fuorviante poiché non esiste una vera "animazione" di per sé, ma solo un riflesso di un cambiamento di stato. (Dico questo perché sto cercando di animare effettivamente un pulsante e questo thread non aiuta affatto!) – styler1972

risposta

20

Utilizzare questo XML: salvarlo in una cartella disegnabile e impostare come sfondo selezionabile.

<?xml version="1.0" encoding="utf-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="false" android:drawable="@drawable/category_listing_bg_img" /> 
<item android:state_pressed="true" android:drawable="@drawable/category_listing_bg_img_pressed" /> 
</selector> 
1

Sì c'è. Implementare onTouchListener. utilizzare la variabile MotionEvent (diciamo evento) nel metodo onTouch scrivere questo:

if (event.getAction() == MotionEvent.ACTION_DOWN){ 
    /*Code*/ 
} 
if (event.getAction() == MotionEvent.ACTION_UP){ 
    /*Code*/ 
} 
+0

hai letto la domanda ?! – thepoosh

+0

Questo metodo sopra postato da KKD può anche essere usato thepoosh e funziona bene .. –

5

aggiungere un file XML sul res/drawable nome cartella it button_selector.xml mette anche due drawable per lo stato premuto e un altro per stato non premuto o normale. Infine aggiungi questo due il selettore del tuo file xml e tutto dovrebbe funzionare !! non dimenticare di impostare @ drawable/bytton_selector.xml come sfondo del tuo pulsante sul tuo file main.xml.

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/btn_pressed" android:state_pressed="true"/> 
     <item android:drawable="@drawable/btn_unpressed"/> 

    </selector> 
+0

funziona, ma voglio sapere perché android: state_pressed = "false" non è necessario? Ho provato senza di essa, funziona ancora ... Le prestazioni possono essere migliori di quelle invece di controllare due stati? – lynndragon

Problemi correlati