Анимация Glide GIF воспроизводится медленно после необходимой очистки.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Анимация Glide GIF воспроизводится медленно после необходимой очистки.

Сообщение Anonymous »

Я экспериментирую с анимированными кнопками, используя файлы GIF, и столкнулся со странной ошибкой, которую невозможно исправить, не испортив что-нибудь еще.
Позвольте мне объяснить. У меня есть эти 4 кнопки (2 статических цикла и 2 анимации перехода). Поначалу все идет гладко, кроме одного. После 4 взаимодействий с кнопкой включения/выключения в пятый раз вы можете увидеть, как я думаю, последний кадр анимации перехода очень коротко мерцает. Первые 4 раза такого не происходит. Эти gif-изображения были предварительно загружены в мою функцию onCreate. (Я опубликую соответствующие фрагменты своего кода)

Код: Выделить всё

    private lateinit var offButton: ImageView
private lateinit var onButton: ImageView
private lateinit var offToOnButton: ImageView
private lateinit var onToOffButton: ImageView

private fun preloadGifs() {
Glide.with(this).asGif().load(R.drawable.off_to_on_button).preload()
Glide.with(this).asGif().load(R.drawable.on_to_off_button).preload()
Glide.with(this).asGif().load(R.drawable.on_button).preload()
Glide.with(this).asGif().load(R.drawable.off_button).preload()
}
Мне удалось найти способ полностью это исправить, создав функцию resetState() для очистки GIF-файлов. Это сработало, но теперь все становится очень медленно после первого цикла включения-выключения.

Код: Выделить всё

private fun resetState() {
// Remove all callbacks and messages to ensure no pending handlers interfere
Handler(Looper.getMainLooper()).removeCallbacksAndMessages(null)

// Clear the two problematic gifs.
Glide.with(this).clear(offToOnButton)
Glide.with(this).clear(onToOffButton)
}
Конечно, есть другой способ справиться со всем этим, и мне хотелось бы узнать ваше мнение. По крайней мере, мне хотелось бы узнать больше об этой проблеме. Первоначально, почему он терпит неудачу только после 4 взаимодействий? Я пытаюсь вызвать preloadGifs() в моей функции resetState, но это явно не сработало. Что я могу сделать? Спасибо, что прочитали мой вопрос.

Подробнее здесь: https://stackoverflow.com/questions/787 ... y-clearing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»