tomar studio snapseed programacion profesionales para mejor manejo galeria fotos editar celular camara aplicaciones aplicacion android android-layout android-animation scale

studio - mejor aplicacion para editar fotos android



AnimaciĆ³n de escala de imagen de Android relativa al punto central (4)

La respuesta proporcionada por @stevanveltema y @JiangQi son perfectas, pero si quieres escalar usando código, entonces puedes usar mi respuesta.

// first 0f, 1f mean scaling from X-axis to X-axis, meaning scaling from 0-100% // first 0f, 1f mean scaling from Y-axis to Y-axis, meaning scaling from 0-100% // The two 0.5f mean animation will start from 50% of X-axis & 50% of Y-axis, i.e. from center ScaleAnimation fade_in = new ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); fade_in.setDuration(1000); // animation duration in milliseconds fade_in.setFillAfter(true); // If fillAfter is true, the transformation that this animation performed will persist when it is finished. view.startAnimation(fade_in);

Tengo un ImageView y hago una animación de escala simple para él. 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 a qué me refiero. 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, alinear a la izquierda o a la derecha, siempre se escala igual. Estoy usando RelativeLayout para la pantalla principal y ImageView está ubicado en otro RelativeLayout, pero probé otros diseños, sin cambios.


Olvídese de la traducción adicional, configure android:pivotX , android:pivotY a la mitad del ancho y la altura, y se escalará desde el centro de la imagen.


Puede usar la animación de traducción en su conjunto para compensar eso. Probablemente necesite ajustar los valores toXDelta y toYDelta para hacerlo bien, de modo que mantenga la imagen centrada.

<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"/> <translate android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="-20%" android:toYDelta="-20%" android:duration="175"/> </set>


50% es el centro de la vista animada.

50%p es el centro del padre

<scale android:fromXScale="1.0" android:toXScale="1.2" android:fromYScale="1.0" android:toYScale="1.2" android:pivotX="50%p" android:pivotY="50%p" android:duration="175"/>