Ответ 1
Благодаря автору Джейку Уортону, вот решение:
AnimatorProxy.wrap(myView).setPivotX(0);
в любое время, даже после вызова ObjectAnimator.start()
.
Я использую замечательную фреймворк NineOldAndroids, но я не могу найти ничего, чтобы установить опорную точку на мои анимированные представления. В частности, я пытаюсь сделать анимацию scaleX
+ scaleY
с точкой поворота на верхнем левом краю, поэтому pivotX
= 0 и pivotY
= 0. На сотах и выше я бы просто установил myView.setPivotX(0)
и myView.setPivotY(0)
, но как это сделать для устройств с предварительной сотой с NineOldAndroids? Я попробовал следующее:
AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(myView, "pivotX", -(myView.getWidth() / 2), -(myView.getWidth() / 2)),
ObjectAnimator.ofFloat(myView, "pivotY", -(myView.getHeight() / 2), -(myView.getHeight() / 2)),
ObjectAnimator.ofFloat(myView, "scaleX", 0, 1),
ObjectAnimator.ofFloat(myView, "scaleY", 0, 1),
ObjectAnimator.ofFloat(myView, "alpha", 0, 1)
);
set.setDuration(1000).start();
но он не работает, ось находится в центре представления.
Можете ли вы мне помочь?
Спасибо;)
Благодаря автору Джейку Уортону, вот решение:
AnimatorProxy.wrap(myView).setPivotX(0);
в любое время, даже после вызова ObjectAnimator.start()
.
AnimatorProxy.wrap(...) не имеет никакого эффекта в моем случае. Однако следующая строка сделала трюк:
ViewHelper.setPivotY(myView, 0)