我有以下xml:
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromXDelta="0%p"
android:toXDelta="30%p"
android:duration="600">
</translate>
</set>
和这堂课:
switch_bg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isChecked) {
Animation animation = android.view.animation.AnimationUtils
.loadAnimation(AppService.getAppContext(),
com.waze.R.anim.slide_to_right);
animation.setInterpolator(new AccelerateInterpolator());
animation.setFillAfter(true);
boxImage_left.startAnimation(animation);
AlphaAnimation alpha = new AlphaAnimation(1, 0);
alpha.setDuration(1000);
alpha.setInterpolator(new AccelerateInterpolator());
alpha.setFillAfter(true);
vImage_left.startAnimation(alpha);
} else {
Animation animation = android.view.animation.AnimationUtils
.loadAnimation(AppService.getAppContext(),
com.waze.R.anim.slide_to_left);
animation.setInterpolator(new AccelerateInterpolator());
animation.setFillAfter(true);
boxImage_left.startAnimation(animation);
AlphaAnimation alpha = new AlphaAnimation(0, 1);
alpha.setDuration(1000);
alpha.setInterpolator(new AccelerateInterpolator());
alpha.setFillAfter(true);
vImage_left.startAnimation(alpha);
}
TransitionDrawable transition = (TransitionDrawable) switch_bg
.getBackground();
transition.reverseTransition(TRANSITION_TIME);
isChecked = !isChecked;
}
});
}
当我从右向左移动框时,它会在动画之后停留在那里,
但是从左到右动画后,它会返回左侧的原点位置。
怎么回事?
我在两种情况下使用alpha.setFillAfter(true);
。
更新
奇怪的是,如果我取消了用于alpha动画的setFillAfter,
滑动过渡在结束时保持正常。怎么会?这是两个不同的过渡对象。
答案 0 :(得分:0)
根据我的理解,你在视图上一次只需要一个补间动画;你也应该能够在xml中表达alpha动画。这可以解决你的问题;在所有Android版本中应该是可靠的(我不确定你当前的解决方案总是看起来正确);并简化代码。