Tengo un ImageView y le hago una animación a escala simple. Código muy estándar.
Mi scale_up.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale android:fromXScale="1"
android:fromYScale="1"
android:toXScale="1.2"
android:toYScale="1.2"
android:duration="175"/>
</set>
Mi código de animación:
Animation a = AnimationUtils.loadAnimation(this, R.anim.scale_up);
((ImageView) findViewById(R.id.circle_image)).startAnimation(a);
El problema:
Cuando la imagen se escala, no se escala desde el centro, sino desde la esquina superior izquierda. En otras palabras, la versión escalada de la imagen no tiene el mismo punto que el centro, pero tiene el mismo punto superior izquierdo. Aquí hay un enlace que explica lo que quiero decir. La primera imagen es cómo se escala la animación, y la segunda imagen es cómo quiero que se escale. Debe mantener el punto central igual. He intentado configurar la gravedad en la imagen, en el contenedor, alineando a la izquierda o a la derecha, siempre se escala igual. Estoy usando RelativeLayout para la pantalla principal e ImageView está ubicado en otro RelativeLayout, pero probé otros diseños, sin cambios.
pivotX
ypivotY
debe establecerse en la mitadviewportWidth
yviewportHeight
para ser exactos.