我有一个水平的recyclelerView,我想在首次打开活动时为它设置动画(向右滑动然后向左滑动)。
所以我在onCreate中执行此操作:
final Animation slideRight = AnimationUtils.loadAnimation(this, R.anim.slide_right);
slideRight.setDuration(200);
final Animation slideLeft = AnimationUtils.loadAnimation(this, R.anim.slide_left);
slideLeft.setDuration(200);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.startAnimation(slideRight);
recyclerView.startAnimation(slideLeft);
但似乎只有正确的幻灯片
这是我的目标:
左侧幻灯片
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
右侧幻灯片
<translate
android:duration="200"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
我做错了什么?
编辑:这与拟议的重复有什么关系?
答案 0 :(得分:0)
在这种情况下,slideLeft
动画将有效...因为在slideRight
正常工作之前slideleft
正在开始..所以这样做......
slideRight.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
recyclerView.startAnimation(slideLeft);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
在动画结束时,右边开始动画
修改强>
或者你可以通过在你的动画中添加repeatMode = reverse
和repeatCount = 1`来启动一个动画。
android:repeatMode="reverse" android:repeatCount="1"
答案 1 :(得分:0)
尝试这个
Animation slideRight = AnimationUtils.loadAnimation(this, R.anim.slide_right);
Animation slideLeft = AnimationUtils.loadAnimation(this, R.anim.slide_left);
slideRight.setDuration(200);
slideLeft.setDuration(200);
slideRight .setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
recyclerView.startAnimation(slideLeft);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
recyclerView.startAnimation(slideRight);