Android ScaleAnimation и TranslateAnimation, как избежать движения ScaleAnimation
у меня есть AnimationSet с внутри ScaleAnimation и TranslateAnimation, как это:
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, мой элемент переходит в нужную позицию, но whe я использую ScaleAnimation с TranslateAnimation в AnimationSet, мой элемент переводит больше, чем мне нужно, как будто ScaleAnimation вводит некоторые дополнительные движения abd я не знаю, как их удалить.
Спасибо за помощь.
4 ответов
правильным решением является изменение порядка анимации. Масштаб должен идти первым:
bringToTopFromRightAnimationSet.addAnimation(setSizeForTop);
bringToTopFromRightAnimationSet.addAnimation(goTopFromRight);
чтобы избежать движения ScaleAnimation при использовании ScaleAnimation и TranslateAnimation, вы должны умножить параметры 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.
Я помню, что у меня были странные проблемы с вложенными анимациями.
Вы пробовали установить точку поворота вручную? См.public ScaleAnimation (float fromX, float toX, float fromY, float toY, float pivotX, float pivotY)
от http://developer.android.com/reference/android/view/animation/ScaleAnimation.html для него.
Это может сработать.
мое решение-добавить контейнер вне вашего представления и применить анимацию масштаба к вашему представлению при применении анимации перевода к контейнеру.
Тогда вы можете сделать более сложную анимацию даже через XML~