我正试图制作过渡动画,但它没有给我正确的结果
我有一个如下所示的布局:
Root
Groups
SubGroups
Root
的方向设置为水平,Groups
和SubGroups
的宽度和高度都设置为父级填充。
我想要的是动画Groups
向屏幕左侧翻译,以便只显示~40 dp,SubGroups
翻译到Groups
后面的左侧,所以仅显示Groups
的条子,并且SubGroups
的90%可见。
这可能吗?谢谢你的帮助!
答案 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);
}