我正在尝试使用 WebView 显示动画 GIF。它在大多数设备上都可以正常工作,但其中一些仍然不支持动画并且会显示静态 GIF。
如何检测设备是否支持 WebView 中的动画 GIF,如果不支持,我可以显示适当的消息?
讨厌这样说,但这是找出答案的最有效方法。打开一个 GIF 图像,如果它不播放... 设备不支持
是的,这似乎是一个普遍的问题。错误报告中发布了一些解决方法,但它似乎不是 Android 核心功能。
一些公司(比如 HTC)可能会自己解决这个问题,但你不能依靠动画 gif 来工作。
正如您在此链接中看到的那样http://code.google.com/p/android/issues/detail?id=3422。这个问题两年来仍未解决。但大多数设备在 Gingerbread 中都能正常工作。因此,您可以检查操作系统级别(从级别 9 开始)是否有效
动画 GIF 支持在 2.2 版中添加到 Android。如果您使用Build.VERSION检查版本,它应该会告诉您 GIF 是否正常工作。
在 Android C++ 文件external/webkit/WebCore/platform/graphics/android/ImageSourceAndroid.cpp
中,有一个函数static bool should_use_animated_gif(int width, int height)
返回true
ifANDROID_LARGE_MEMORY_DEVICE
已定义。
在这里,Leon Scroggins(似乎是 Google 工程师)说这ANDROID_LARGE_MEMORY_DEVICE
是“为所有带有 VFP 的 arm 设备和所有非 arm 设备”定义的。
编辑:这得到了证实external/webkit/Android.mk
:
ifeq ($(ARCH_ARM_HAVE_VFP),true)
LOCAL_CFLAGS += -DANDROID_LARGE_MEMORY_DEVICE
endif
据我了解,所有 ArmV7 cpu 都具有 VFP,因此动画 GIF 应该在带有 ArmV7 的现代 cpu 上工作。