WebView を使用してアニメーション GIF を表示しようとしています。ほとんどのデバイスで問題なく動作しますが、一部のデバイスではアニメーションがサポートされず、静的 GIF が表示されます。
デバイスが WebView でアニメーション GIF をサポートしているかどうかを検出するにはどうすればよいですか? サポートしていない場合は適切なメッセージを表示できますか?
このように言うのは嫌いですが、それが最も効果的な方法です。GIF 画像を開き、再生されない場合... デバイスでサポートされていません
このリンクhttp://code.google.com/p/android/issues/detail?id=3422でわかるように。この問題は 2 年間未解決のままです。しかし、ほとんどのデバイスは Gingerbread で問題なく動作します。したがって、動作するかどうかの OS レベル (レベル 9 以降) を確認できます。
ええ、これは共通の問題のようです。バグレポートに投稿されたいくつかの回避策がありますが、それは Android コア機能ではないことがわかります。
一部の会社 (HTC など) は、これを自分で処理した可能性がありますが、アニメーション gif が機能することに依存することはできません。
Android C++ ファイルには、 が定義されている場合に返すexternal/webkit/WebCore/platform/graphics/android/ImageSourceAndroid.cpp
関数があります。static bool should_use_animated_gif(int width, int height)
true
ANDROID_LARGE_MEMORY_DEVICE
ここで、Leon Scroggins (Google エンジニアのようです) は、ANDROID_LARGE_MEMORY_DEVICE
「VFP を備えたすべてのアーム デバイスと、すべての非アーム デバイスに対して」定義されていると述べています。
編集:これは次によって確認されていexternal/webkit/Android.mk
ます:
ifeq ($(ARCH_ARM_HAVE_VFP),true)
LOCAL_CFLAGS += -DANDROID_LARGE_MEMORY_DEVICE
endif
私の理解では、すべての ArmV7 CPU には VFP があるため、アニメーション GIF は ArmV7 を搭載した最新の CPU で動作するはずです。
アニメーション GIF のサポートは、バージョン 2.2 で Android に追加されました。Build.VERSIONを使用してバージョンを確認すると、GIF が機能しているかどうかがわかります。