java 背景移动_java – Android通过动画连续移动背景

为什么不尝试自己动画背景而不是使用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();

这导致连续动画无限期地重复背景,应该看起来像这样:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值