2010-02-03 17 views
6

Estoy tratando de hacer algo que parezca simple. Quiero tener una vista de mapa, con un menú que se desliza desde la parte inferior de la pantalla donde se pueden ajustar los ajustes (para superposición). Sin embargo, cuando uso un TranslateAnimation para afectar la posición y de LinearLayout (que contiene el menú), los botones en el LinearLayout se mueven, pero el "área de golpe" permanece en la misma posición que antes de la animación.Android: Animar Ver posición

TranslateAnimation slide = new TranslateAnimation(0,0,0,0); 
slide.setDuration(300); 
slide.setFillAfter(true); 
pullupMenu.startAnimation(slide); 
mapContainer.startAnimation(slide); 

También he mirado en la interpolación de valor marginTop de la vista, sino que ni siquiera han sido capaces de determinar la forma en que se llevaría a cabo.

Cualquier ayuda en cualquiera de estas direcciones sería muy apreciada.

+0

posible duplicado de [Android - Animate a View's topMargin/bottomMargin/etc en LinearLayout o RelativeLayout] (http://stackoverflow.com/questions/2239442/android-animate-a-views-topmargin-bottommargin-etc-in -linearlayout-or-relativ) –

Respuesta

7

La animación en general está animando los píxeles del widget. Mi sospecha, basada en lo que escribió, es que setFillAfter() simplemente arregla los píxeles para permanecer en la ubicación de destino, no el widget en sí.

Si desea que la animación se terminan realmente para arriba moviendo el widget, es necesario:

  • registra un detector para averiguar cuándo termina la animación, y
  • disponer al que apuntan a modificar el diseño reglas tales que el widget realmente existe en la nueva ubicación

Puede ver un panel deslizante que emplea esta técnica here.

Cuestiones relacionadas