Как повторить лито анимацию - PullRequest
0 голосов
/ 03 мая 2019

Примеры Litho анимации все начинаются, когда пользователь запускает событие.Но мне нужна анимация, которая начинается сразу и продолжается бесконечно.Другими словами, у меня та же проблема, что и у Как автоматически запускать анимацию Litho? , но мне нужно решение для анимации Litho в отличие от базовой анимации Android.

Обратите внимание, я спросилсвязанный вопрос Как автоматически запустить анимацию Litho? , когда я попытался изменить один из примеров Litho, чтобы запустить анимацию без пользовательского события.Но вопрос, который я сейчас задаю, состоит в том, как повторить анимацию после ее запуска?

1 Ответ

0 голосов
/ 04 мая 2019

Чтобы запустить анимацию Litho автоматически и повторять ее бесконечно, я изменил RTAnimationComponentSpec , запустив TimerTask:

@OnCreateInitialState
static void createInitialState(
        ComponentContext c) {
    startRepeatingAnimation(c);
}

static void startRepeatingAnimation(final ComponentContext c) {
    Log.e(TAG, "Repeat animation handler: about to scheduleAtFixedRate");
    TimerTask animateRepeat = new java.util.TimerTask() {
        public void run() {
            try {
                Log.e(TAG, "Repeat animation handler: about to updateStateAsync");
                RTAnimationComponent.updateStateAsync(c);
            } catch (Exception e) {
                Log.e(TAG, "Repeat animation handler: exception while animating: [" + e + "]");
            }
        }
    };
    new java.util.Timer().scheduleAtFixedRate(animateRepeat, 0, FADE_IN_OUT_DURATION + FADE_IN_DELAY + FADE_IN_STAGGER_DELAY);
}

private static final String TAG = "RTComponentSpec";

Я не уверенэто допустимое использование createInitialState() хотя.Согласно документации, это «Установить начальное значение для состояния».Под состоянием Litho означает переменные, помеченные @ State .Неофициально, однако, анимация является частью состояния, и TimerTask действительно необходимо запустить.Семантически инициализация TimerTask выглядит так, как будто она относится к созданию начального состояния.

Опытным путем логи показали, что я хотел.Первоначальное сообщение журнала «Обработчик повтора анимации: собирается планировать.AtFixedRate» появляется один раз, после чего появляются периодические экземпляры «Обработчика повторения анимации: собирается обновить».

Я полагаю, что решение может также работать с другими механизмами Android для планирования.работа на периодической основе

...