2012-02-29 3 views
15

Я использую замечательную фреймворк NineOldAndroids, но я не могу найти что-либо, чтобы установить опорную точку на мои анимированные представления. В частности, я пытаюсь создать анимацию scaleX + scaleY с поворотным элементом на левом верхнем краю, поэтому pivotX = 0 и pivotY = 0. На сотах и ​​за пределами я просто установил myView.setPivotX(0) и myView.setPivotY(0), но как это сделать для предварительно сотовые устройства с NineOldAndroids? Я пробовал следующее:NineOldAndroids: set view pivot

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(); 

но он не работает, ось находится в центре обзора.

Вы можете мне помочь?

Спасибо;)

+0

Я не думаю, что NineOldAndroids поддерживает этот :-(На Honeycomb или более (API 11) вы можете вызвать setPivotY (0), но этот метод не доступен в View из Tom

+0

Да, я знаю. Я изучил исходный код NineOldAndroids, и я нашел несколько ссылок на опорный элемент для реализации pre-Honeycomb, но мне не повезло с моими попытками установить его ... :( – Venator85

ответ

18

Спасибо автору Jake Wharton, вот решение:

AnimatorProxy.wrap(myView).setPivotX(0); 

в любое время, даже после того, как заехав ObjectAnimator.start().

+0

Спасибо, я не знал, что это может быть сделано. Это очень полезно, потому что без него многие старые анимации не могут быть завершены на более старых устройствах. – Tom

+2

+1 для того, чтобы дать автору какое-то доверие. Вы даже можете пройти лишнюю милю и связать свое имя с его сайт. Обратные ссылки - это вкусный SEO. – Jacksonkr

+0

Wel l, для меня он работал ТОЛЬКО ПОСЛЕ вызова 'start()'. Может быть, потому, что я использовал AnimatorSet –

15

AnimatorProxy.wrap (...) не имеет никакого эффекта в моем случае. Однако, следующая строка сделал трюк:

ViewHelper.setPivotY(myView, 0) 
+0

AnimatorProxy.wrap не работает для меня, я использую AnimatorSet. Большие пальцы за этот ответ заставили меня наконец помочь –

Смежные вопросы