Mam ImageView i wykonuję na nim prostą animację skali. Bardzo standardowy kod.
Moje 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>
Mój kod animacji:
Animation a = AnimationUtils.loadAnimation(this, R.anim.scale_up);
((ImageView) findViewById(R.id.circle_image)).startAnimation(a);
Problem:
Kiedy obraz jest skalowany, nie jest skalowany od środka, ale od lewego górnego rogu. Innymi słowy, przeskalowana wersja obrazu nie ma tego samego punktu co środek, ale ma ten sam lewy górny punkt. Oto link, który wyjaśnia, co mam na myśli. Pierwszy obraz to sposób skalowania animacji, a drugi obraz to sposób skalowania. Powinien utrzymać ten sam punkt środkowy. Próbowałem ustawić grawitację na obrazie, na pojemniku, ustawiając w lewo lub w prawo, zawsze skaluje się tak samo. Używam RelativeLayout na ekranie głównym, a ImageView znajduje się w innym RelativeLayout, ale próbowałem innych układów, bez zmian.
pivotX
ipivotY
powinien być ustawiony na połowęviewportWidth
iviewportHeight
być dokładnym.