为什么不尝试自己动画背景而不是使用ViewSwitcher?您只需要一个简单的ValueAnimator:
首先将两个相同的ImageView添加到您的布局中,并将相同的背景图像设置为它们:
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/background_one"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/background"/>
android:id="@+id/background_two"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/background"/>
然后使用ValueAnimator为其translateX属性设置动画,但按宽度偏移它们:
final ImageView backgroundOne = (ImageView) findViewById(R.id.background_one);
final ImageView backgroundTwo = (ImageView) findViewById(R.id.background_two);
final ValueAnimator animator = ValueAnimator.ofFloat(0.0f, 1.0f);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setInterpolator(new LinearInterpolator());
animator.setDuration(10000L);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
final float progress = (float) animation.getAnimatedValue();
final float width = backgroundOne.getWidth();
final float translationX = width * progress;
backgroundOne.setTranslationX(translationX);
backgroundTwo.setTranslationX(translationX - width);
}
});
animator.start();
这导致连续动画无限期地重复背景,应该看起来像这样: