0

我想将动画应用于视图并在动画通过 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);

你能看出有什么不对吗?

谢谢

4

1 回答 1

0

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

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

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

setText()方法以某种方式更新视图,之后动画效果很好。

于 2013-06-25T17:08:14.143 回答