我遇到了一个与AlphaAnimation
有关的奇怪问题。当调用一个AsyncTask
处理程序时,它应该重复运行。
然而,在Activity
中第一次调用处理程序时,除非我触摸屏幕或更新UI(例如按下手机菜单按钮),否则动画不会启动。
奇怪的是,一旦动画至少运行了一次,则在再次调用处理程序时,它将毫无问题地开始。
以下是代码示例:
// AsyncTask handler
public void onNetworkEvent()
{
this.runOnUiThread(new Runnable() {
@Override
public void run()
{
flashScreen(Animation.INFINITE);
}
});
}
// Called method
private void flashScreen(int repeatCount)
{
final View flashView = this.findViewById(R.id.mainMenuFlashView);
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setRepeatCount(repeatCount);
alphaAnimation.setRepeatMode(Animation.RESTART);
alphaAnimation.setDuration(300);
alphaAnimation.setInterpolator(new DecelerateInterpolator());
alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation)
{
flashView.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animation animation)
{
flashView.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) { }
});
flashView.startAnimation(alphaAnimation);
}
我注意到使用runOnUIThread
不是必需的(如果我不使用它,将得到相同的结果),但我喜欢保留它,因为我不在UI线程上。
有什么想法是什么原因导致这种情况?