2015-08-18 3 views
2

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

И это в основном для всех случаев: анимация анимации прогресса, анимация списков recyclerview и т. Д. И т. Д.

Есть ли способ сгладить анимацию при загрузке активности? Может быть, задержка все до тех пор, пока пользовательский интерфейс не будет готов обрабатывать анимацию и загружать список?

Вот мой сценарий.

  1. Пользователь кнопку нажимает, чтобы открыть активность, грузы активности фрагмента
  2. Фрагмент onActivityCreated начинается бар кок прогресс и начинается извлечение сохраненных элементов списка из общих предпочтений, или асинхронной сети вызова, если не кэшируются (список не более чем 10 пунктов , очень маленькие объекты ~ 8 строк).
  3. RecyclerView загружается с адаптером и адаптер одушевляет предметы, сдвинув/угасание их.

Обе анимации прогресс бар и слайд/выгорает уже наполовину завершена к тому времени, это видно, или стать очень неспокойный. Есть ли способ сделать это более гладким?

Вот список по запросу: enter image description here

Спасибо.

Редактирование: добавьте, что в этом действии затухание в анимации не существует, а слайд около половины, когда он загружается.

+0

Здравствуйте! можете ли вы дать скриншот своих работ? спасибо –

+0

Добавлен скриншот. – SikhWarrior

+0

@SikhWarrior: попытайтесь запустить анимацию после получения обратного вызова по методу фрагмента, обработанному onViewCreated. –

ответ

2

Начиная с уровня API 21, вы можете реализовать обратный вызов Activity#onEnterAnimationComplete() и использовать его для начала анимации. К сожалению, похоже, что на данный момент нет эквивалента AppCompat.

Когда я столкнулся с этой проблемой, я решил реализовать обратный вызов onEnterAnimationComplete() на достаточно высоких уровнях API, тогда как на более низких уровнях я просто возвращаюсь к стартовой анимации в onCreate().

+0

Я тоже использую этот обратный вызов и, похоже, отлично работает на устройствах, которые запускают API 22 и выше. По API 21 кажется, что иногда его не называют, а иногда называют. Кроме того, я нашел этот вопрос, но ответа пока нет. http://stackoverflow.com/questions/39488410/onenteranimationcomplete-not-called-api-21 – Kiki