Я пытаюсь отобразить анимированный GIF с помощью WebView. Он отлично работает на большинстве устройств, но некоторые из них не поддерживают анимацию, и отображается статический GIF.
Как определить, поддерживает ли устройство анимированные GIF файлы в WebView, поэтому я могу отобразить соответствующее сообщение, если оно не соответствует?
Ненавижу сказать так, но это самый эффективный способ узнать. Откройте изображение GIF, и если он не воспроизводится... Его не поддерживают на устройстве
Как вы можете видеть по этой ссылке http://code.google.com/p/android/issues/detail?id=3422. этот вопрос все еще не разрешен в течение двух лет. Но большинство устройств отлично работают в Gingerbread. Таким образом, вы можете проверить уровень ОС (начиная с уровня 9), который работает или не работает
Да, это швы общая проблема. В отчете об ошибках есть некоторые обходные пути, но это говорит о том, что это не ядро Android.
Некоторые компании (например, HTC), возможно, позаботились об этом сами, но вы не можете полагаться на анимированный gif для работы.
В файле Android С++ external/webkit/WebCore/platform/graphics/android/ImageSourceAndroid.cpp
есть функция static bool should_use_animated_gif(int width, int height)
, которая возвращает true
, если определена ANDROID_LARGE_MEMORY_DEVICE
.
Здесь, Леон Скроггинс (кажется, инженер Google) говорит, что ANDROID_LARGE_MEMORY_DEVICE
определяется "для всех устройств ручного управления с помощью VFP, и все устройства без оружия."
Изменить: это подтверждается external/webkit/Android.mk
:
ifeq ($(ARCH_ARM_HAVE_VFP),true)
LOCAL_CFLAGS += -DANDROID_LARGE_MEMORY_DEVICE
endif
В моем понимании, все CPV для ArmV7 имеют VFP, поэтому анимированные GIF должны работать на современном процессоре с ArmV7.
Анимированная поддержка GIF была добавлена в Android в версии 2.2. Если вы проверите версию, используя Build.VERSION, она сообщит вам, работают ли GIF.