2012-05-03 19 views
7

¿Hay alguna forma de animar un botón en Android para que al hacer clic en él cambie el fondo del botón a una imagen presionada?Botón al hacer clic en cambio de estado visual

Solo estoy usando la propiedad de fondo para mostrar la imagen en el botón de formulario.

+3

La animación en este sentido es engañosa ya que no hay una "animación" real en sí misma, sino solo un reflejo de un cambio de estado. (¡Estoy diciendo esto porque estoy intentando animar realmente un botón y este hilo no ayuda en absoluto!) – styler1972

Respuesta

20

Utilice este XML: guárdelo en una carpeta dibujable y configúrelo como fondo dibujable.

<?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í, lo hay. Implementar en TouchListener. Utilice la variable MotionEvent (digamos evento) en el método onTouch escribir esto:

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

¿has leído la pregunta? – thepoosh

+0

Este método anterior publicado por KKD también se puede usar thepoosh y funciona bien ... –

5

añadir un archivo XML en sus res/dibujable nombre de la carpeta it button_selector.xml puso también dos dibujables para el estado presionado y otro para el estado no comprimido o normal. ¡Finalmente agregue este selector de dos botones de su archivo xml y todo debería funcionar! no te olvides de configurar el @ drawable/bytton_selector.xml como fondo de tu botón en tu archivo 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

funciona, pero quiero saber por qué android: state_pressed = "false" no es necesario? Probé sin él, todavía trabajo ... ¿Puede el rendimiento ser mejor que en lugar de verificar dos estados? – lynndragon

Cuestiones relacionadas