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

Big*_*ner 8 android android-layout

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

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);
                    }
                });
            }
        });
Run Code Online (Sandbox Code Playgroud)

Jam*_*meo 12

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

这是一个例子,

ObjectAnimator oa = ObjectAnimator.ofFloat(view, "translationX", 0, 100f);
oa.setDuration(1000);
oa.start();
Run Code Online (Sandbox Code Playgroud)

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

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