2010-02-03 110 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