2012-02-29 12 views
15

Estoy usando el maravilloso framework NineOldAndroids, pero no puedo encontrar nada para establecer el pivote en mis vistas animadas. Específicamente, estoy tratando de hacer una animación scaleX + scaleY con un pivote en el borde superior izquierdo, por lo que pivotX = 0 y pivotY = 0. En Honeycomb y más allá solo me gustaría configurar myView.setPivotX(0) y myView.setPivotY(0), pero cómo hacerlo dispositivos pre-Honeycomb con NineOldAndroids? Intenté lo siguiente: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(); 

pero no funciona, el pivote se queda en el centro de la vista.

¿Me puede ayudar por favor?

Gracias;)

+0

No creo que NineOldAndroids apoya esta :-(en el panal o mayor (API 11) se puede llamar setPivotY (0), pero este método no está disponible en Vista de Tom

+0

Sí, lo sé. Analicé el código fuente de NineOldAndroids y encontré algunas referencias a un pivote para la implementación previa a Honeycomb pero no tuve suerte con mis intentos de configurarlo ... :( – Venator85

Respuesta

18

Gracias al autor Jake Wharton, aquí está la solución:

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

en cualquier momento, incluso después de haber emplazado ObjectAnimator.start().

+0

Gracias. No sabía que esto podría hacerse. Eso es muy útil porque sin eso muchas animaciones no podrían completarse en dispositivos más antiguos. – Tom

+2

+1 por dar al autor algo de crédito. Incluso podría hacer un esfuerzo adicional y vincular su nombre a su sitio. Los Backlinks son sabrosos SEO. – Jacksonkr

+0

Wel Para mí, funcionó SOLAMENTE DESPUÉS de llamar a 'start()'. Tal vez porque utilicé AnimatorSet –

15

AnimatorProxy.wrap (...) no tuvo ningún efecto en mi caso. Sin embargo, la siguiente línea hizo el truco:

ViewHelper.setPivotY(myView, 0) 
+0

AnimatorProxy.wrap tampoco me funcionó, estoy usando AnimatorSet. Los pulgares arriba para esta respuesta porque finalmente me ayudó –