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

Android应用中如何在UI组件显示.avif文件?需依赖三方库吗?

在Android 12+中用ImageView显示AVIF文件的正确姿势

Android 12(API 31)及以上确实原生支持AVIF格式,但直接按普通图片的方式加载容易踩坑,以下是具体解决方法:

1. 资源存放位置别搞错

别把AVIF文件扔res/drawable目录,Android构建工具不认这个目录下的AVIF,会直接编译报错。正确路径是res/raw或者assets目录。

如果用res/raw存放,代码里这么加载:

// Kotlin示例
val inputStream = resources.openRawResource(R.raw.your_avif_file)
val bitmap = BitmapFactory.decodeStream(inputStream)
imageView.setImageBitmap(bitmap)

2. 别在XML里直接引用

布局XML里别写android:src="@drawable/xxx.avif",资源编译阶段就会挂掉,必须用代码动态加载。

3. 用ImageDecoder替代BitmapFactory(更稳)

原生BitmapFactory对部分特殊编码的AVIF可能解码失败,换成Android 9+就支持的ImageDecoder更靠谱:

val source = ImageDecoder.createSource(resources, R.raw.your_avif_file)
val bitmap = ImageDecoder.decodeBitmap(source)
imageView.setImageBitmap(bitmap)

4. 要不要用第三方库?

如果你的App只适配Android 12+,原生方案完全够用,没必要加第三方库。但如果要兼容更低版本,或者遇到原生API搞不定的AVIF文件,可以用Coil、Glide这类图片加载库——它们都已经支持AVIF解码了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:07:04