Это немного сложно, но это работает.У меня есть два изображения в моем списке анимации
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/selected" android:oneshot="false">
<item android:drawable="@drawable/logo1" android:duration="5000" />
<item android:drawable="@drawable/logo2" android:duration="300" />
</animation-list>
Затем я добавил третье изображение (logo0) того же размера, что и logo1 / 2, но оно полностью прозрачное.Наконец, я использую этот ImageView:
<ImageView
android:id="@+id/imageViewLogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:layout_margin="5dp"
android:src="@drawable/logo0"
/>
Теперь моя анимация сохраняет соотношение сторон моего изображения логотипа *.
Код:
@Override
public void onCreate(Bundle savedInstanceState) {
...
imageView = (ImageView) findViewById(R.id.imageViewLogo);
imageView.setBackgroundResource(R.drawable.logo_animation);
...
public void onWindowFocusChanged (boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
AnimationDrawable frameAnimation = (AnimationDrawable) imageView.getBackground();
if(hasFocus) { frameAnimation.start(); } else { frameAnimation.stop(); }
}
Это оченьвсе просто и стоит лишних пустых картинок для ваших ресурсов: без лишнего кода, без сложных вычислений.