animationlistener不工作蜂窝设备

时间:2013-06-25 14:46:42

标签: android animation listener android-3.0-honeycomb

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

你能看到什么问题吗?

由于

1 个答案:

答案 0 :(得分:0)

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

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

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

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