Android: проблема с использованием расписания для вызова анимации - PullRequest
0 голосов
/ 14 ноября 2010

Когда мое приложение загружается, у меня появляется анимация экрана. В onAnimationEnd я вызываю расписание, чтобы через 2 секунды оно вызывало функцию, которая будет вызывать анимацию, чтобы снова оживить представление.В настоящее время он оживляется, но планировщик никогда не вызывает анимацию.Если я щелкну домой, то вернусь к приложению, которое немедленно вызывает animate.Зачем, если расписание работает, приложение ждет, пока оно не потеряет фокус, а затем возвращается обратно, чтобы фактически вызвать функцию, которую должен вызывать расписание.Вот код:

Они определены в onCreate:

slideTopIn = AnimationUtils.loadAnimation(this, R.anim.slide_top_in);
slideTopIn.setAnimationListener(slideTopInListener);
slideTopOut = AnimationUtils.loadAnimation(this, R.anim.slide_top_out);
slideTopOut.setAnimationListener(slideTopOutListener);

freeAlertMsg.startAnimation(slideTopIn);

Они определены вне onCreate в классе активности:

private AnimationListener slideTopInListener = new AnimationListener(){
    public void onAnimationEnd(Animation anim){
        alertTimer.schedule(new Runnable() {
            public void run() { hideFreeAlert(); }
        }, 2, TimeUnit.SECONDS);
    };
    public void onAnimationStart(Animation anim){
        freeAlertMsg.setVisibility(View.VISIBLE);
    };
    public void onAnimationRepeat(Animation anim){

    };
};

private AnimationListener slideTopOutListener = new AnimationListener(){
    public void onAnimationEnd(Animation anim){
        mainScreen.removeView(freeAlert);
    };
    public void onAnimationStart(Animation anim){
        Log.d("Animation Listener","slideTopOutListener");
    };
    public void onAnimationRepeat(Animation anim){

    };
};

private void hideFreeAlert(){
    freeAlertMsg.startAnimation(slideTopOut);
}

Так что в основном это выполняетсяНачальная анимация (slideTopIn).Тогда ничего не происходит.Если я щелкну домой, а затем вернусь к приложению, startAnimation (slideTopOut) немедленно выполнится.Я предполагаю, что расписание действительно выполняется, но по какой-то причине анимация никогда не запускается.

1 Ответ

1 голос
/ 15 ноября 2010

Просто позвоните postDelayed() на любой View.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...