我有一个奇怪的问题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线程上。
什么任何想法可能会导致此?