Android布局动画问题

时间:2011-05-25 22:37:13

标签: android animation android-layout

我正试图制作过渡动画,但它没有给我正确的结果

我有一个如下所示的布局:

  • LinearView Root
    • ScrollView Groups
      • LinearView
        • Tile1
        • Tile2
        • Tile3
    • ScrollView SubGroups
      • LinearView
        • Tile4
        • Tile5
        • Tile6

Root的方向设置为水平,GroupsSubGroups的宽度和高度都设置为父级填充。

我想要的是动画Groups向屏幕左侧翻译,以便只显示~40 dp,SubGroups翻译到Groups后面的左侧,所以仅显示Groups的条子,并且SubGroups的90%可见。

这可能吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:5)

我认为你的意思是这样做:

TranslateAnimation animateGroups = new TranslateAnimation(0,widthScreen - 40 , 0 , 0);
animateGroups.setDuration(1200);
animateGroups.setFillAfter(true);

TranslateAnimation animateSubGroups = new TranslateAnimation(0,widthScreen - 10 , 0 , 0);
animateSubGroups.setDuration(1200);
animateSubGroups.setFillAfter(true);

scrollViewGroups.startAnimation(animateGroups);
scrollViewSubGroups.startAnimation(animateSubGroups);

注意:您可以使用 DiplayMetrics 类获取屏幕尺寸, 如果要将像素转换为dp,请参阅this

编辑 在动画结束后更改视图的位置  要做到这一点,你应该在动画上添加一个监听器,

animateGroups.addAnimationListener(AnimationListener);

并覆盖这样的方法:

 @Override
 public void onAnimationEnd(Animation animation){
scrollViewGroups.setPadding(0, 0 , screenWidth-40 , 0 ) ;
//or you can set the Margin like this(i supposed that your scrollView is in a RelativeLayout 
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)scrollViewGroups.getLayoutParams();
params.setMargin(0, 0 , screenWidth-40 , 0);
scrollViewGroups.setLayoutParams(params);
}