为什么我的盒子只有在向右滑动时才会返回原点

时间:2013-10-30 11:28:36

标签: java android xml eclipse animation

我有以下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,

滑动过渡在结束时保持正常。怎么会?这是两个不同的过渡对象。

1 个答案:

答案 0 :(得分:0)

根据我的理解,你在视图上一次只需要一个补间动画;你也应该能够在xml中表达alpha动画。这可以解决你的问题;在所有Android版本中应该是可靠的(我不确定你当前的解决方案总是看起来正确);并简化代码。