studio propiedades imagen event ejemplo custom ajustar android layout toggle imagebutton

propiedades - imagebutton click event android



Android establece ImageButton como Toggle (1)

¿Cómo puedo hacer que un botón de imagen permanezca en el estado ''presionado'' cuando se hace clic en él? Básicamente, solo quiero que el fondo sea el fondo deprimido, pero no puedo averiguar cómo configurarlo. En este momento, acabo de copiar el fondo del botón seleccionado en mi carpeta de resolución, pero cuando lo configuro como fondo, se vuelve borroso (ya que la imagen original es más grande que el botón en sí).

Fondo normal: texto alternativo http://img707.imageshack.us/img707/9199/ss20100426163452.png Lo que estoy obteniendo: texto alternativo http://img707.imageshack.us/img707/912/ss20100426163357.png texto alternativo alt : //img3.imageshack.us/img3/8304/ss20100426163623.png

Además, no creo que pueda usar este método teniendo en cuenta los diferentes diseños de IU. El botón debe permanecer presionado según la interfaz de usuario que está utilizando el usuario.


Hay algunas maneras de hacer esto:

Primero, simplemente puede usar un ImageButton , y alternar manualmente su imagen dibujable al hacer clic en Java. Esto es lo que hace el reproductor de música original en Android para el botón ''shuffle'' , por ejemplo. Aunque no tendrá control sobre el fondo del botón en su estado marcado, podrá intercambiar la imagen, lo que puede ser favorable desde una perspectiva de coherencia de la interfaz de usuario de Android.

Otra opción es usar un conjunto complejo de dibujables y nueve parches para obtener una imagen dentro de un ToggleButton , con la opción de cambiar el fondo y / o el recurso de imagen al alternar. Esa es la opción que te mostraré a continuación. Pero recuerda, ten cuidado con la consistencia de la interfaz de usuario antes de hacer esto.

res / layout / foo.xml

... <ToggleButton android:textOn="" android:textOff="" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/shuffle_button" /> ...

res / drawable / shuffle_button.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- use "@android:drawable/btn_default" to keep consistent with system --> <item android:drawable="@drawable/toggle_button_background" /> <item android:drawable="@drawable/shuffle_button_image" /> </layer-list>

res / drawable / toggle_button_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- checked state --> <item android:state_pressed="false" android:state_checked="true" android:drawable="@drawable/btn_default_checked" /> <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/btn_default_normal" /> <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/btn_default_normal_disable" /> <item android:state_pressed="true" android:drawable="@drawable/btn_default_pressed" /> <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/btn_default_selected" /> <item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" /> <item android:state_focused="true" android:drawable="@drawable/btn_default_normal_disable_focused" /> <item android:drawable="@drawable/btn_default_normal_disable" /> </selector>

res / drawable / shuffle_button_image.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_mp_shuffle_on_btn" android:state_checked="true" /> <item android:drawable="@drawable/ic_mp_shuffle_off_btn" /> </selector>

Archivos de imagen

  • btn_default_<state>.9.png se puede encontrar en frameworks/base.git bajo core/res/res/drawable-hdpi y core/res/res/drawable-mdpi (también ldpi). ADVERTENCIA : si usa estos, su aplicación parecerá inconsistente en dispositivos con interfaces de usuario personalizadas (es decir, la interfaz de usuario de HTC).
  • ic_mp_shuffle_<state>_btn.9.png debe tener nueve parches, para que la imagen se centre y no se estire para ajustarse al botón. A continuación hay ejemplos de versiones hdpi del icono:

res / drawable- (h | m | ldpi) / ic_mp_shuffle_ (on | off) _btn.9.png

ic_mp_shuffle_on_btn.9.png http://nikonizer.yfrog.com/Himg404/scaled.php?tn=0&server=404&filename=icmpshuffleonbtn9.png&xsize= malvado por el usuario. /scaled.php?tn=0&server=708&filename=icmpshuffleoffbtn9.png&xsize=640&ysize=640

Nota final : recuerde que debe ser coherente con la interfaz de usuario del sistema cuando sea posible, y tenga en cuenta el hecho de que su aplicación puede ejecutarse en dispositivos con versiones personalizadas del sistema operativo que tienen diferentes gráficos para elementos de la interfaz de usuario, como botones. Un ejemplo de esto es HTC Sense , que tiene botones verdes en lugar de los gris / naranja / amarillo en stock de Android. Por lo tanto, si terminas copiando los archivos PNG btn_default_... desde el repositorio de código abierto para crear un fondo de botón que se pueda alternar, btn_default_... la coherencia en esos dispositivos.