【问题标题】:animationlistener not working pre honeycomb devices动画监听器在蜂窝设备前不工作
【发布时间】:2013-06-25 14:46:41
【问题描述】:

我想将动画应用到视图并在动画通过 AnimationListener 结束时显示它。我的代码适用于设备 4.x,但不适用于 2.3.3 设备,永远不会调用 onAnimationStart 和 onAnimationEnd 方法。

 final Animation toTopAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.move_up);
 toTopAnimation.setDuration(250);
 toTopAnimation.setFillBefore(true);
 toTopAnimation.setFillAfter(true);

 toTopAnimation.setAnimationListener(new AnimationListener() {
     @Override
     public void onAnimationStart(Animation animation) {
          Log.i("log", "onAnimationStart");
     }
     @Override
     public void onAnimationEnd(Animation animation) {
         Log.i("log", "onAnimationEnd");
         mQuickReturnView.setVisibility (View.VISIBLE);
     }

     @Override
     public void onAnimationRepeat(Animation animation) {
     }
 });

  mQuickReturnView.setAnimation(toTopAnimation);
  mQuickReturnView.startAnimation(toTopAnimation);

你能看出什么不对吗?

谢谢

【问题讨论】:

  • sn-p 看起来不错,它也必须在 pre honycomb 设备上工作。我认为这个问题在其他任何地方都存在

标签: android animation listener android-3.0-honeycomb


【解决方案1】:

我遇到了类似的问题并设法解决了。我仍然不确定这个问题背后的原因是什么,但它存在于视图内容和姜饼处理其绘图的方式周围的某个地方。

就我而言,我有一个RelativeLayout,其中有一些观点。仅当我在调用动画之前更改了 RelativeLayout 中子视图的某些值时,动画才会起作用。例如,我在里面有一个TextView,所以我会调用setText() 方法。也许你也应该尝试一下:

// ---
mQuickReturnView.setAnimation(toTopAnimation);
someViewInsidemQuickReturnView.setText(getResources().getString(R.string.some_string));
mQuickReturnView.startAnimation(toTopAnimation);
// ---

setText() 方法以某种方式更新视图,之后动画就可以正常工作了。

【讨论】:

  • 谢谢,setText() 对我不起作用,但问题类似。就我而言,我通过在布局中隐藏一些内容来解决它。
猜你喜欢
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 2012-03-20
相关资源
最近更新 更多