に奇妙な問題がありAlphaAnimation
ます。AsyncTask
ハンドラーが呼び出されると、繰り返し実行されるはずです。
ただし、ハンドラーが で初めて呼び出されたときはActivity
、画面に触れるか、UI が更新されない限り (たとえば、電話のメニュー ボタンを押すことによって)、アニメーションは開始されません。
奇妙な部分は、アニメーションが少なくとも 1 回実行されると、ハンドラーが再度呼び出された場合に問題なく開始されることです。
コードは次のようになります。
// 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 スレッドを使用していないため、そのままにしておくことを好みます。
これを引き起こす原因についてのアイデアはありますか?