У меня странная проблема с AlphaAnimation
. Он должен работать многократно, когда вызывается обработчик AsyncTask
.
Однако при первом вызове обработчика в Activity
анимация не запускается, если я не коснусь экрана или если пользовательский интерфейс обновлен (например, нажав кнопку меню телефона).
Странная часть заключается в том, что, как только анимация запускается хотя бы один раз, она начнет без проблем, если обработчик снова будет вызван.
Вот что выглядит код:
// 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
не требуется (одни и те же результаты возникают, если я его не использую), но я предпочитаю хранить его, поскольку я не в потоке пользовательского интерфейса.
Любые идеи о том, что может это сделать?