У меня есть ImageView, и я делаю для него простую масштабную анимацию. Очень стандартный код.
Мой 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>
Мой код анимации:
Animation a = AnimationUtils.loadAnimation(this, R.anim.scale_up);
((ImageView) findViewById(R.id.circle_image)).startAnimation(a);
Проблема:
Когда изображение масштабируется, оно масштабируется не от центра, а от верхнего левого угла. Другими словами, масштабированная версия изображения не имеет той же точки, что и центр, но имеет ту же верхнюю левую точку. Вот ссылка, объясняющая, что я имею в виду. Первое изображение показывает, как масштабируется анимация, а второе изображение - как я хочу его масштабировать. Центральная точка должна оставаться неизменной. Я пробовал настроить гравитацию на изображении, на контейнере, выравнивая влево или вправо, оно всегда масштабируется одинаково. Я использую RelativeLayout для главного экрана, а ImageView находится в другом RelativeLayout, но я пробовал другие макеты, без изменений.
pivotX
иpivotY
должен быть установлен на половину отviewportWidth
и,viewportHeight
если быть точным.