2011-09-17 15 views
9

Estoy tratando de hacer una simple ampliación de imagen y paneo con Android y tengo dos preguntas simples. En primer lugar, cuando llamo a la animación con una escala, se amplía usando la esquina superior izquierda de la imagen como origen, pero me gustaría que se amplíe desde el centro de la imagen. La segunda pregunta es que una vez que se realiza la animación, restablece la imagen al estado original y me gustaría que permanezca en el estado final.Animar zoom en el centro de una imagen en Android con xml

Aquí es el xml que tengo para la escala:

<scale android:fromXScale="1.0" 
    android:fromYScale="1.0" 
    android:toXScale="2.0" 
    android:toYScale="2.0" 
    android:detachWallpaper="true" 
    android:duration="3000"></scale> 

y en mi código:

a = AnimationUtils.loadAnimation(this, R.anim.set); 
a.reset(); 
ImageView iv = (ImageView) findViewById(R.id.imageView1); 
iv.clearAnimation(); 
iv.startAnimation(a); 

Cualquier ayuda se agradece! :-)

Respuesta

25

Para escalar una imagen del centro tiene que establecer la PivotX y pivotY

probar este código para la ampliación del centro y reteniendo el estado después de escalar,

<scale xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXScale="1" 
    android:toXScale="5" 
    android:fromYScale="1" 
    android:toYScale="5" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="1000" 
    android:fillAfter="true"> 
</scale> 

Gracias ...

+0

Gracias! ¡Eso solucionó el zoom desde el centro! – Mlove

+0

De hecho, descubrí que el campo fillAfter hace lo que quiero. No funcionó cuando lo agregué al xml por alguna razón, pero cuando lo hice manualmente en el código funcionó bien. – Mlove

+0

@Mlove ¿puede por favor publicar su código de cómo utilizarlo después manualmente? Ha estado golpeando la cabeza durante horas. – surhidamatya

Cuestiones relacionadas