Ich habe eine ImageView und mache eine einfache Skalierungsanimation. Sehr Standardcode.
Meine 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>
Mein Animationscode:
Animation a = AnimationUtils.loadAnimation(this, R.anim.scale_up);
((ImageView) findViewById(R.id.circle_image)).startAnimation(a);
Das Problem:
Wenn das Bild skaliert wird, wird es nicht von der Mitte aus skaliert, sondern von der oberen linken Ecke. Mit anderen Worten, die skalierte Version des Bildes hat nicht den gleichen Punkt wie die Mitte, aber den gleichen Punkt oben links. Hier ist ein Link, der erklärt, was ich meine. Das erste Bild zeigt, wie die Animation skaliert wird, und das zweite Bild zeigt, wie sie skaliert werden soll. Der Mittelpunkt sollte gleich bleiben. Ich habe versucht, die Schwerkraft auf dem Bild, auf dem Behälter, links oder rechts auszurichten, sie skaliert immer gleich. Ich verwende RelativeLayout für den Hauptbildschirm und ImageView befindet sich in einem anderen RelativeLayout, aber ich habe andere Layouts ausprobiert, keine Änderung.
pivotX
undpivotY
sollte auf die HälfteviewportWidth
undviewportHeight
genau eingestellt werden.