2010-02-03 8 views
6

J'essaie de faire quelque chose qui semble simple. Je veux avoir une vue de carte, avec un menu qui glisse du bas de l'écran où les réglages (pour la superposition) peuvent être ajustés. Cependant quand j'utilise un TranslateAnimation pour affecter la position y de LinearLayout (qui contient le menu), les boutons dans le LinearLayout se déplacent, mais la "zone de frappe" reste dans la même position qu'avant l'animation.Android: Animer Regarder la position

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

J'ai aussi regardé en interpoler la valeur marginTop de la vue, mais ont même pas été en mesure de déterminer comment cela pourrait être fait.

Toute aide dans l'une ou l'autre de ces directions serait grandement appréciée.

+0

duplication possible de [Android - Animer un topMargin/bottomMargin/etc d'une vue dans LinearLayout ou RelativeLayout] (http://stackoverflow.com/questions/2239442/android-animate-a-views-topmargin-bottommargin-etc-in -linearlayout-or-relativ) –

Répondre

7

L'animation en général consiste à animer les pixels du widget. Mon soupçon, basé sur ce que vous avez écrit, est que setFillAfter() se contente de faire en sorte que les pixels restent dans l'emplacement de destination, pas le widget lui-même.

Si vous voulez que l'animation à vent réellement déplacer le widget, vous devez:

  • enregistrer un écouteur pour savoir quand l'animation se termine, et
  • Arrangez à ce moment de modifier la mise en page règles telles que le widget existe réellement dans le nouvel emplacement

Vous pouvez voir une vitre coulissante qui utilise cette technique here.

Questions connexes