我有一个奇怪的问题,AlphaAnimation
。当调用AsyncTask
处理程序时,它应该重复运行。直到UI更新或触摸事件才开始动画
但是,第一次在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线程上。
有什么想法可能导致这种情况?
太少的代码来理解你的呼叫顺序。你能发布围绕Asynctask执行的部分吗?另外,您是否尝试将条目记录到相关方法以查看发生了什么? – ilomambo 2013-04-26 14:50:22
尝试第一次延迟动画几秒钟。在视图准备好之前尝试运行动画时,可能会出现这种情况。 – 2013-04-26 14:51:01