我想将动画应用于视图,并在动画通过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);
你能看到什么问题吗?
由于
答案 0 :(得分:0)
我有类似的问题并设法解决它。我仍然不确定这个问题背后的原因是什么,但是它位于视图内容的周围,以及姜饼处理绘图的方式。
在我的情况下,我有RelativeLayout
,其中有一些观点。只有在调用动画之前我在RelativeLayout中更改了子视图的某个值时,动画才会起作用。例如,我内部有一个TextView
,所以我会调用setText()
方法。也许你也应该尝试一下:
// ---
mQuickReturnView.setAnimation(toTopAnimation);
someViewInsidemQuickReturnView.setText(getResources().getString(R.string.some_string));
mQuickReturnView.startAnimation(toTopAnimation);
// ---
setText()
方法以某种方式更新视图,之后动画工作正常。