我想在我的android react-native app中的我的Image标签中通过URL显示一个简单的gif但是当我启动它时没有显示图像。 docs中提供的代码仅适用于iOS,但不适用于Android:
<Image
style={styles.gif}
source={{uri: 'http://38.media.tumblr.com/9e9bd08c6e2d10561dd1fb4197df4c4e/tumblr_mfqekpMktw1rn90umo1_500.gif'}}
/>
这里有一个类似的问题但是已经说过这只适用于iOS:
How do I display an animated gif in React Native?
关于此提交,它应该工作:
https://github.com/facebook/react-native/commit/fcd7de5301655b39832d49908e5ca72ddaf91f7e
答案 0 :(得分:41)
我们通过使GIF支持可选等方式使核心库更小。
因为we have to manually opt-in for gif support in 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-rules文件中:
-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
这已使用此commit修复,并将包含在下一个版本中。
答案 1 :(得分:15)
以上所有内容对我来说都不适用于最新的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'
答案 2 :(得分:13)
您可以添加这些依赖项。我在版本(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'
答案 3 :(得分:3)
我们升级到"react-native": "^0.57.1"
,这使我们无法播放动画GIF;他们只是将动画的第一帧渲染为静态图像。
为纠正此问题,我们包括了以下库:
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 :(得分:1)
从React Native Docs:
构建自己的本机代码时,Android默认不支持GIF和WebP。
您需要根据应用程序的需要在android / app / build.gradle中添加一些可选模块。
dependencies {
// If your app supports Android versions before Ice Cream Sandwich (API level 14)
implementation 'com.facebook.fresco:animated-base-support:1.3.0'
// For animated GIF support
implementation 'com.facebook.fresco:animated-gif:2.0.0'
// For WebP support, including animated WebP
implementation 'com.facebook.fresco:animated-webp:2.1.0'
implementation 'com.facebook.fresco:webpsupport:2.0.0'
// For WebP support, without animations
implementation 'com.facebook.fresco:webpsupport:2.0.0'
}
答案 5 :(得分:0)
对我来说,添加以下依赖项还不够:
compile 'com.facebook.fresco:animated-gif:1.9.0'
我还必须在文件中升级gradle版本:
android / gradle / wrapper / 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'
答案 6 :(得分:0)
如果使用RN版本.60,请尝试在应用内部build.gradle文件中添加以下内容
dependencies {
implementation 'com.facebook.fresco:animated-gif:2.0.0'
}
答案 7 :(得分:0)
对于最新版本的本机“ 0.61.5”,您需要“ 2.0.0”壁画版本;
implementation 'com.facebook.fresco:fresco:2.0.0'
implementation 'com.facebook.fresco:animated-gif:2.0.0'
答案 8 :(得分:0)
在 RN 64.1 中,您需要使用较新版本的 fresco 来支持 Android 中的 gif
implementation 'com.facebook.fresco:fresco:2.4.0'
// For animated GIF support
implementation 'com.facebook.fresco:animated-gif:2.4.0'
// For WebP support, including animated WebP
implementation 'com.facebook.fresco:webpsupport:2.4.0'
答案 9 :(得分:0)
默认 Android 不支持 GIF 和 WebP。所以在android项目的app级build.gradle文件中添加如下依赖并同步。
// For animated GIF support
implementation 'com.facebook.fresco:fresco:2.4.0'
implementation 'com.facebook.fresco:animated-gif:2.4.0'
// For WebP support, including animated WebP
implementation 'com.facebook.fresco:webpsupport:2.4.0'