Ho un ImageView e gli faccio una semplice animazione in scala. Codice molto standard.
Il mio 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>
Il mio codice di animazione:
Animation a = AnimationUtils.loadAnimation(this, R.anim.scale_up);
((ImageView) findViewById(R.id.circle_image)).startAnimation(a);
Il problema:
Quando l'immagine viene ridimensionata, non viene ridimensionata dal centro, ma dall'angolo in alto a sinistra. In altre parole, la versione in scala dell'immagine non ha lo stesso punto del centro, ma ha lo stesso punto in alto a sinistra. Ecco un collegamento che spiega cosa intendo. La prima immagine è il modo in cui l'animazione viene ridimensionata e la seconda immagine è il modo in cui voglio che venga ridimensionata. Dovrebbe mantenere lo stesso punto centrale. Ho provato a impostare la gravità sull'immagine, sul contenitore, allineandola a sinistra oa destra, si ridimensiona sempre allo stesso modo. Sto usando RelativeLayout per la schermata principale e ImageView si trova in un altro RelativeLayout, ma ho provato altri layout, nessuna modifica.
pivotX
epivotY
dovrebbe essere impostato a metàviewportWidth
eviewportHeight
per essere esatti.