Подтвердить что ты не робот

Как отобразить 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

4b9b3361

Ответ 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'