在两个布局设置动画时单击“侦听器行为”

时间:2013-06-12 12:59:54

标签: android android-layout

我有两个按钮。当按下第一个按钮时,我将我的布局布局翻译到顶部,从屏幕顶部翻译另一个布局。但我的问题是回到第一个布局时第二个布局的点击事件仍然被解雇它以前的位置。那么它的解决方案是什么?我在SO和谷歌上找到了很多,但仍然无法得到正确的解决方案。所以请有人帮我解决这个问题。谢谢你提前。

TranslateAnimation tr1 = new TranslateAnimation(0, 0, 0, -1100);
        tr1.setDuration(1000);
        tr1.setFillAfter(true);
        layout_login.startAnimation(tr1);
        tr1.setAnimationListener(new AnimationListener() {

            public void onAnimationStart(Animation animation) {

            }

            public void onAnimationRepeat(Animation animation) {

            }

            public void onAnimationEnd(Animation animation) {
                layout_signup.setVisibility(View.VISIBLE);
                TranslateAnimation tr2 = new TranslateAnimation(0, 0,
                        -1100, 0);
                tr2.setDuration(1000);
                tr2.setFillAfter(true);
                tr2.setInterpolator(MainActivity.this,
                        android.R.anim.linear_interpolator);
                layout_signup.startAnimation(tr2);

                tr2.setAnimationListener(new AnimationListener() {

                    public void onAnimationStart(Animation animation) {

                    }

                    public void onAnimationRepeat(Animation animation) {

                    }

                    public void onAnimationEnd(Animation animation) {
                        home_activity_btn_login.setEnabled(true);
                    }
                });
            }
        });

1 个答案:

答案 0 :(得分:12)

我认为这是旧的动画师计划的一个错误(我相信一个非常着名的错误,有时候不工作后会涉及填充)。请尝试使用ObjectAnimator

这是一个例子,

ObjectAnimator oa = ObjectAnimator.ofFloat(view, "translationX", 0, 100f);
oa.setDuration(1000);
oa.start();

如果要沿Y方向移动,可以使用translationY。如果要向两个方向移动,则需要translationX和translationY,并使用AnimatorSet同时播放。

看看这个comment to this question.使用旧的动画API,显然有点fillAfter(true),按钮点击位置保持不变。这证实了您的问题。所以只需使用新的API,你就应该处于良好的状态。