Как отобразить GIF в приложении для Android-приложения с реакцией?
Я хочу отобразить простой GIF через URL в моем теге изображения в моем приложении Android-native-но приложение, но когда я запускаю его, изображение не отображается.
Код, указанный в документации, работает только для iOS, но не для Android:
<Image
style={styles.gif}
source={{uri: 'http://38.media.tumblr.com/9e9bd08c6e2d10561dd1fb4197df4c4e/tumblr_mfqekpMktw1rn90umo1_500.gif'}}
/>
Здесь был похожий вопрос, но, как уже было сказано, это работает только для iOS:
Как отобразить анимированный GIF в React Native?
Что касается этого коммита, он должен работать, хотя:https://github.com/facebook/react-native/commit/fcd7de5301655b39832d49908e5ca72ddaf91f7e
Ответы
Ответ 1
Мы сократили базовую библиотеку, сделав опцию поддержки GIF необязательной.
Из-за этого мы должны вручную включить поддержку gif в Android.
Добавьте обе следующие строки в файл android/app/build.gradle в разделе зависимости:
compile "com.facebook.fresco:animated-gif:1.3.0"
compile "com.facebook.fresco:animated-base-support:1.3.0"
Итак, ваш раздел зависимостей может выглядеть так:
dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
compile "com.facebook.fresco:animated-gif:1.3.0"
compile "com.facebook.fresco:animated-base-support:1.3.0"
Это решает проблему для вашей отладочной сборки, но если вы хотите решить ее также в своей сборке релиза в этот момент, вам нужно добавить следующую строку в ваш файл правил proguard:
-keep class com.facebook.imagepipeline.animated.factory.AnimatedFactoryImpl { public AnimatedFactoryImpl(com.facebook.imagepipeline.bitmaps.PlatformBitmapFactory, com.facebook.imagepipeline.core.ExecutorSupplier); }
Подробнее об этом здесь: https://github.com/facebook/fresco/issues/1177
Это было исправлено с помощью этого коммита и будет включено в следующую версию.
Ответ 2
Все вышеперечисленное не работало для меня с новейшим React Native (v0.48). Мне пришлось добавить следующие зависимости в мой android/app/build.gradle
compile 'com.facebook.fresco:fresco:1.5.0'
compile 'com.facebook.fresco:animated-gif:1.5.0'
Ответ 3
Вы можете добавить эти зависимости. Я использую это в версии (v0.44.0):
compile 'com.facebook.fresco:animated-base-support:0.14.1'
compile 'com.facebook.fresco:animated-gif:0.14.1'
В версии v0.50 вам нужно только добавить
compile 'com.facebook.fresco:animated-gif:1.3.0'
Ответ 4
Мы обновились до "react-native": "^0.57.1"
, что остановило воспроизведение наших анимационных картинок; они просто визуализировали первый кадр анимации как статические изображения.
Чтобы исправить это, мы включили следующие библиотеки:
compile 'com.facebook.fresco:animated-gif:1.10.0'
compile "com.facebook.fresco:animated-base-support:1.3.0"
// (Only if supporting WebP.)
compile 'com.facebook.fresco:animated-webp:1.10.0'
compile 'com.facebook.fresco:webpsupport:1.10.0'
Ответ 5
при использовании версии RN.60 попробуйте добавить ниже в файл app build.gradle
dependencies {
implementation 'com.facebook.fresco:animated-gif:2.0.0'
}
Источник
Ответ 6
Для меня добавить зависимости, как показано ниже , было недостаточно:
compile 'com.facebook.fresco:animated-gif:1.9.0'
Мне также пришлось обновить версию Gradle в файле:
андроид /Gradle/упаковщик /gradle-wrapper.properties
как это:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
а также моя версия инструментов сборки в файле:
android/build.gradle вот так:
classpath 'com.android.tools.build:gradle:3.0.1'