【问题标题】:The listener after an animation in android doesn't workandroid中动画后的监听器不起作用
【发布时间】:2011-08-10 13:58:40
【问题描述】:

我在 res/anim 中设置了 android:fillAfter="true"。

我想将 LinearLayout 移动到 y

在那个 LinearLayout 中我放了一个带有监听器的按钮。

在 LinearLayout 的动画之后,LinearLayout 处于新位置,但进入该 LinearLayout 的按钮没有侦听器。

如果 android:fillAfter="false",监听器就是按钮所在的位置。

我也试过:

public void onAnimationEnd(Animation arg0) 
{
    LayoutParams params = new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
    params.topMargin = 200;
    _mylayout.setLayoutParams(params);
    _myAnim.setFillAfter(false);
}

但是什么也没发生,因为我没有将百分比与动画 android:toYDelta="70%" 和 params.topMargin = 200; 完美对齐;

我该如何解决?谢谢

【问题讨论】:

  • 你有没有找到解决这个问题的方法?

标签: android


【解决方案1】:

您的 LinearLayout 看似移动了,但只是视觉上移动了。LinearLayout 仍然在动画之前的位置。您应该在动画之后使用以下代码重新布局 LinearLayout。

mylayout.layout(x,x,x,x);

如果你对此有一些问题,请看看我的问题:

TranslateAnimation Not Working As Expected

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。

    您所要做的就是重新注册监听器

    myButton.setOnClickListener(myListener);
    

    动画发生后。

    希望这会有所帮助!

    【讨论】:

    • 什么都没有,我试过了,我把监听器放到“public void onAnimationEnd(Animation arg0)”但是监听器在旧位置,也就是动画之前的位置
    【解决方案3】:

    为你的观点尝试这个方法

    清除动画() 可填充(假)

    【讨论】:

    • 所有设备上都有吗?还是只在 SE xperia、GS3 等一些设备上?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多