wake-up-neo.net

Wie kann ich GIF in reaktiver Android-App anzeigen?

Ich möchte ein einfaches Gif über eine URL in meinem Image-Tag in meiner reaktiven Android-App anzeigen, aber beim Starten wird kein Bild angezeigt .. Der Code, der in docs bereitgestellt wird, funktioniert nur für iOS, aber nicht für Android:

<Image
  style={styles.gif}
  source={{uri: 'http://38.media.tumblr.com/9e9bd08c6e2d10561dd1fb4197df4c4e/tumblr_mfqekpMktw1rn90umo1_500.gif'}}
/>

Es gab eine ähnliche Frage, die aber wie gesagt nur für iOS funktioniert: Wie zeige ich ein animiertes GIF in React Native an?
In Bezug auf diese Verpflichtung sollte es funktionieren: https://github.com/facebook/react-native/commit/fcd7de5301655b39832d49908e5ca72ddaf91f7e

20
Orlando

Wir haben die Kernbibliothek verkleinert, indem die Unterstützung für GIF optional wurde.

Aus diesem Grund müssen wir uns manuell für die Gif-Unterstützung in Android ..__ entscheiden. Fügen Sie Ihrer Android/app/build.gradle-Datei unter Abhängigkeiten beide Zeilen hinzu:

compile "com.facebook.fresco:animated-gif:1.3.0"
compile "com.facebook.fresco:animated-base-support:1.3.0"

So könnte der Abschnitt über Abhängigkeiten so aussehen:

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"

Dies löst das Problem für Ihren Debug-Build. Wenn Sie es jedoch auch in Ihrem Release-Build im Moment lösen möchten, müssen Sie die folgende Zeile zu Ihrer Proguard-Rules-Datei hinzufügen:

-keep class com.facebook.imagepipeline.animated.factory.AnimatedFactoryImpl { public AnimatedFactoryImpl(com.facebook.imagepipeline.bitmaps.PlatformBitmapFactory, com.facebook.imagepipeline.core.ExecutorSupplier); }

Weitere Informationen hierzu hier: https://github.com/facebook/fresco/issues/1177

Dies wurde mit commit behoben und wird in der nächsten Version enthalten sein.

40
Orlando

Mit dem neuesten React Native (v0.48) funktionierte das alles nicht. Ich musste die folgenden Abhängigkeiten in meinem Android/app/build.gradle hinzufügen

compile 'com.facebook.fresco:fresco:1.5.0' compile 'com.facebook.fresco:animated-gif:1.5.0'

15
Tekeste Kidanu

Sie können diese Abhängigkeiten hinzufügen. Ich verwende dies in Version (v0.44.0):

compile 'com.facebook.fresco:animated-base-support:0.14.1'
compile 'com.facebook.fresco:animated-gif:0.14.1' 

In Version v0.50 müssen Sie nur noch hinzufügen

compile 'com.facebook.fresco:animated-gif:1.3.0' 

13
Himanshu Teotia

Wir haben ein Upgrade auf "react-native": "^0.57.1" vorgenommen, wodurch unsere animierten Gifs nicht mehr abgespielt wurden. Sie haben nur das erste Bild der Animation als statische Bilder gerendert.

Um dies zu korrigieren, haben wir die folgenden Bibliotheken hinzugefügt:

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'
4
Mapsy

wenn Sie die RN-Version .60 verwenden, fügen Sie diese in die Datei build.gradle der App ein

dependencies {
    implementation 'com.facebook.fresco:animated-gif:2.0.0'
}

Quelle

1
zashishz

Das Hinzufügen der Abhängigkeiten wie unten war nicht genug

compile 'com.facebook.fresco:animated-gif:1.9.0'

Ich musste auch meine Gradle-Version in der Datei aktualisieren:

Android/gradle/wrapper/gradle-wrapper.properties Wie folgt:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.Zip

und auch meine Build-Tools-Version in der Datei:

Android/build.gradle wie folgt:

classpath 'com.Android.tools.build:gradle:3.0.1'
0
Shaked Sayag