gpt4 book ai didi

android - 两个布局动画时的单击监听器行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:09 25 4
gpt4 key购买 nike

我有两个按钮。当按下第一个按钮时,我将我的布局布局转换为顶部,然后从屏幕顶部出现另一个布局。但我的问题是当回到第一个布局时,第二个布局的点击事件仍然在以前的位置被解雇。那么它的解决方案是什么?我在 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);
}
});
}
});

最佳答案

我认为这是旧动画师方案的错误(我相信这是一个众所周知的错误,涉及有时不工作后的填充)。尝试改用 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,您的状态应该会很好。

关于android - 两个布局动画时的单击监听器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17066168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com