2012-09-06 25 views
5

Tengo una imagen (que parece un círculo de carga redonda) que quiero rotar alrededor de su propio centro ... Vi un montón de código que sugería configurar el PivotY y PivotX a 0.5F o la mitad de la imagen. Ambos no funciona .. Después de mucho ensayo y error lo hace girar alrededor de su propio centro con el siguiente código:Girar la imagen en el centro no va suave (Monodroid)

ImageView loading = FindViewById<ImageView>(Resource.Id.loadingGif); 
RotateAnimation rAnim = new RotateAnimation(0.0F, 359.0F,  Dimension.RelativeToSelf, 0.25F, Dimension.RelativeToSelf, 0.25F); 
rAnim.Interpolator = new LinearInterpolator(); 
rAnim.RepeatCount = Animation.Infinite; 
rAnim.Duration = 1000; 
loading.StartAnimation(rAnim); 

Pero la animación en sí no va suave más, la imagen parece girar alrededor de 50degrees a continuación, comienza a colgarse y se salta la mitad de la rotación y luego continúa normalmente en la mitad superior de la rotación (espero que tenga sentido).

¿Alguna idea de por qué mi rotación no rota los 360 grados completos sin problemas?

EDITAR

todavía no he resuelto este problema, pero lo hice simplemente descubrir algo extraño en él. La animación se utiliza en una pantalla de carga sin funcionalidades adicionales en el momento de la animación. Noté que cuando mantengo mi dedo en la pantalla, ¡la animación SÍ se realiza sin problemas!

Esto me hizo pensar que tal vez el problema no está en el código de animación, sino otra cosa .. pero lo que no sé todavía ..

Respuesta

4

fin he encontrado la respuesta!

He incluido la línea:

loading.setDrawingCacheEnabled(true); 

Y después de eso tenía que cambiar los pivotes a 0.5F también. ¡Y ahora la animación funciona sin problemas!

//Rotate image 
ImageView loading = FindViewById<ImageView>(Resource.Id.loadingGif); 
loading.setDrawingCacheEnabled(true); 
rAnim = new RotateAnimation(0.0F, 359.0F, Dimension.RelativeToSelf, 0.5F, Dimension.RelativeToSelf, 0.5F); 
rAnim.Interpolator = new LinearInterpolator(); 
rAnim.RepeatCount = Animation.Infinite; 
rAnim.Duration = 1500; 
loading.StartAnimation(rAnim); 
+0

Esto es lo que he estado buscando genial! – rahstame