【问题标题】:Android Translate Animation causing Clicklistener problemsAndroid 翻译动画导致 Clicklistener 问题
【发布时间】:2013-03-07 01:03:52
【问题描述】:

在动画运行后,我在 android 中创建的翻译动画出现问题,我设置的任何点击侦听器都保持在它们在导致异常问题之前所处的确切坐标中,我花了几天时间研究这个问题并还没有找到解决办法,我发现的一些建议包括将我的目标开发级别更改为 4.0 并更改 myLayout.layout(x,x,x,x),这些都不适合我,任何关于我如何做的建议更改此代码以使任何点击侦听器随布局移动?

upperView = (LinearLayout) findViewById(R.id.upperView);
    hiddenMenu = (LinearLayout) findViewById(R.id.hiddenMenu);

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    Integer width = metrics.widthPixels;

    upperView.getLayoutParams().width = width;
    hiddenMenu.getLayoutParams().width = (int) (width * 0.75);

    int theDistance = hiddenMenu.getLayoutParams().width;

    //Run animation
    TranslateAnimation anim = new TranslateAnimation(0, theDistance - 0 , 0, 0);
    anim.setDuration(1000);
    anim.setFillAfter( true );
    upperView.startAnimation(anim);

【问题讨论】:

  • 尝试找到一种方法将移动的 View 对象“真正”定位到动画应该结束的位置;即为动画结束实现一个监听器并改变它的重力或其他任何东西,并使翻译效果非持久化,这样不依赖于翻译的位置。

标签: java android android-animation translate-animation clicklistener


【解决方案1】:

您需要了解一些事项。 android 或较旧的 sdk 将 on click 侦听器保留在对象的原始位置,重要的是您要么在新位置创建不可见视图以进行点击,要么使用较新的 sdk

【讨论】:

  • 为了更好地解释这一点,视图与旧 SDK 中的对象不同。即,如果您有一个图标,则物理视图仅移动到其原始对象仍保留在该位置的位置。您还可以在 AnimationListener 的帮助下移动原始对象。
【解决方案2】:

问题是 TranslateAnimation 不修改视图的实际位置,只平移视图的绘制位置。

尝试使用PropertyAnimation 来执行此操作。 他们已经定位到实际查看,而不是仅仅定位绘制的视图。

更新: 尝试使用类似的东西

upperView.animate().setDuration(1000).translationX(theDistance - 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2013-10-16
    • 1970-01-01
    相关资源
    最近更新 更多