我有一个带有ScaleAnimation和TranslateAnimation的AnimationSet,如下所示:
TranslateAnimation:
TranslateAnimation goTopFromRight =
new TranslateAnimation(0, -(right.getLeft()-top.getLeft()),
0,-(right.getTop()-top.getTop()));
ScaleAnimation:
ScaleAnimation = setSizeForTop = new ScaleAnimation(1, 2, 1, 2);
和AnimationSet:
bringToLeftFromTopAnimationSet = new AnimationSet(true);
bringToTopFromRightAnimationSet.addAnimation(goTopFromRight);
bringToTopFromRightAnimationSet.addAnimation(setSizeForTop);
问题在于,当我尝试仅使用ScaleAnimation时,我的项目会转到我想要的位置,但是当我在AnimationSet中使用ScaleAnimation和TranslateAnimation时,我的项目翻译的次数超出了我的需要,就像ScaleAnimation一样介绍一些补充动作abd我不知道如何删除它们。
感谢您的帮助。
答案 0 :(得分:5)
正确的解决方案是更改动画的顺序。规模必须先行:
bringToTopFromRightAnimationSet.addAnimation(setSizeForTop);
bringToTopFromRightAnimationSet.addAnimation(goTopFromRight);
答案 1 :(得分:4)
要在使用ScaleAnimation和TranslateAnimation时避免ScaleAnimation运动,您必须将TranslateAnimation参数与ScaleAnimation的参数相乘,如下所示:
TranslateAnimation goRightFromTop;
ScaleAnimation sizeNotUp;
goRightFromTop = new TranslateAnimation(0,(-( invisibleCenterImageView.getLeft() - imageViewRight.getLeft() ))*(1/0.6667f), 0, (-( invisibleCenterImageView.getTop() - imageViewRight.getTop()))*(1/0.6667f));
sizeNotUp = new ScaleAnimation(1,0.6667f,1,0.6667f,Animation.RELATIVE_TO_SELF, (float)0.5, Animation.RELATIVE_TO_SELF, (float)0.5);
然后,您惊讶地删除了ScaleAnimation运动。
答案 2 :(得分:1)
我记得有嵌套动画的奇怪问题。
您是否尝试过手动设置轴心点?请参阅http://developer.android.com/reference/android/view/animation/ScaleAnimation.html中的public ScaleAnimation (float fromX, float toX, float fromY, float toY, float pivotX, float pivotY)
。
它可以工作。
答案 3 :(得分:0)
我的解决方案是在视图外添加一个容器,并在将平移动画应用到容器时将缩放动画应用到视图中。
然后你甚至可以通过XML~