Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NineOldAndroids: set view pivot

I'm using the wonderful framework NineOldAndroids, but I can't find anything to set the pivot on my animated views. Specifically, I'm trying to do a scaleX + scaleY animation with a pivot on the top-left edge, so pivotX = 0 and pivotY = 0. On Honeycomb and beyond I would just set myView.setPivotX(0) and myView.setPivotY(0), but how to do it for pre-Honeycomb devices with NineOldAndroids? I tried the following:

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

but it doesn't work, the pivot stays at the center of the view.

Can you help me please?

Thanks ;)

like image 203
Venator85 Avatar asked Feb 29 '12 08:02

Venator85


1 Answers

Thanks to the author Jake Wharton, here is the solution:

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

at any time, even after having called ObjectAnimator.start().

like image 86
Venator85 Avatar answered Sep 19 '22 21:09

Venator85