He estado buscando en todas partes una solución adecuada a mi problema y parece que todavía no puedo encontrar una. Tengo una ActionBar (ActionBarSherlock) con un menú que se infla desde un archivo XML y ese menú contiene un elemento y ese elemento se muestra como ActionItem.
menú:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_refresh"
android:icon="@drawable/ic_menu_refresh"
android:showAsAction="ifRoom"
android:title="Refresh"/>
</menu>
actividad:
[...]
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.mymenu, menu);
return true;
}
[...]
ActionItem se muestra con un icono y sin texto; sin embargo, cuando un usuario hace clic en ActionItem, quiero que el icono comience a animarse, más específicamente, a rotar en su lugar. El icono en cuestión es un icono de actualización.
Me doy cuenta de que ActionBar tiene soporte para usar vistas personalizadas ( Agregar una vista de acción ); sin embargo, esta vista personalizada se expande para cubrir toda el área de ActionBar y en realidad bloquea todo excepto el ícono de la aplicación, que en mi caso no es lo que estaba buscando. .
Así que mi siguiente intento fue intentar usar AnimationDrawable y definir mi animación cuadro por cuadro, establecer el elemento de dibujo como el ícono del elemento del menú, y luego onOptionsItemSelected(MenuItem item)
obtener el ícono y comenzar a animar usando ((AnimationDrawable)item.getIcon()).start()
. Sin embargo, esto no tuvo éxito. ¿Alguien conoce alguna forma de lograr este efecto?