2010-02-03 153 views
6

我正在嘗試做一些看起來很簡單的事情。我想要一個地圖視圖,菜單可以從屏幕底部向上滑動,其中可以調整設置(用於覆蓋)。但是,當我使用TranslateAnimation來影響LinearLayout(包含菜單)的y位置時,LinearLayout中的按鈕會移動,但「擊中區域」保持與動畫之前相同的位置。Android:動畫查看位置

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

我也研究了補間視圖的marginTop值,但一直沒有能夠確定如何做。

對這些方向的任何幫助將不勝感激。

+0

可能的重複[Android - 在LinearLayout或RelativeLayout中爲視圖的topMargin/bottomMargin創建動畫效果](http://stackoverflow.com/questions/2239442/android-animate-a-views-topmargin-bottommargin-etc-in -linearlayout或 - relativ) – 2012-03-05 21:03:02

回答

7

動畫通常是動畫化小部件的像素。根據你寫的內容,我的懷疑是setFillAfter()僅僅安排像素留在目標位置,而不是小部件本身。

如果你想真正拉閘移動插件的動畫,你需要:

  • 註冊一個監聽器來找出動畫結束時,和
  • 安排在這一點上修改佈局規則,以便小部件實際存在於新位置

您可以看到使用此技巧的滑動窗格here