You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android如何展示动画WebP?ARCore引导页需显示AR Stickers APK动效文件

解决ARCore应用中展示动画WebP的问题

嘿,我之前也碰到过类似的情况,AR Stickers里的WebP动画用原生Movie类确实搞不定——这个API太老旧了,只支持非常有限的WebP动画格式。给你两个简单靠谱的方案,亲测有效:

方案一:用Facebook Fresco库(最稳定)

Fresco对WebP动画的支持相当完善,不管是带透明通道还是复杂帧动画都能轻松处理,步骤也很清晰:

  1. 先在Module级别的build.gradle里添加依赖:
implementation 'com.facebook.fresco:fresco:2.6.0'
  1. 在你的Application类里初始化Fresco(如果没有Application类,就新建一个并在Manifest里注册):
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}
  1. 布局里用SimpleDraweeView替代普通的ImageView:
<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/ar_guide_webp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    fresco:placeholderImage="@drawable/guide_placeholder" />
  1. 加载动画WebP的代码(假设文件放在assets目录下):
Uri webpUri = Uri.parse("file:///android_asset/your_ar_sticker.webp");
DraweeController controller = Fresco.newDraweeControllerBuilder()
    .setUri(webpUri)
    .setAutoPlayAnimations(true) // 开启自动播放
    .build();
SimpleDraweeView draweeView = findViewById(R.id.ar_guide_webp);
draweeView.setController(controller);

设置完运行起来就能看到流畅的WebP动画了,Fresco会自动处理解码、缓存和渲染,完全不用你操心细节。

方案二:用Glide库(更轻量,适合已有Glide的项目)

如果你的项目已经在用Glide,那直接用它加载WebP动画更方便,Glide 4.x版本开始原生支持WebP动画:

  1. 确保添加了Glide依赖(如果还没加的话):
implementation 'com.github.bumptech.glide:glide:4.15.1'
  1. 直接用Glide加载即可,比如文件放在res/raw目录下:
Glide.with(this)
    .load(R.raw.your_ar_sticker)
    .into(yourImageView);

Glide会自动识别这是动画WebP并自动播放,效果和Fresco一样,而且库体积更小,适合不想引入大库的场景。

为什么Movie类不行?

Android的Movie是个非常老旧的API,主要为早期的GIF和简单WebP动画设计,AR Stickers里的WebP动画大概率用了更新的编码规范(比如带透明通道、帧间压缩优化等),这些都是Movie类无法解析的,放弃这个思路就好啦。

内容的提问来源于stack exchange,提问作者TheHebrewHammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:51:02