本文主要介绍如何使用 subsampling-scale-image-view 加载 AVIF 超大图片。
安装 subsampling-scale-image-view 和 AVIF SDK
说明:
AVIF SDK 1.1.6已适配 16 KB page sizes,建议升级。
Bintray 仓库已经下线,万象相关 SDK 已经迁移到 MavenCentral,引用路径与之前不同,您在更新的时候请使用新的引用路径。
implementation 'com.qcloud.cos:avif:1.1.6'implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.10.0'// AndroidX 请使用// implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
步骤一:获取 SubsamplingScaleImageView 控件
SubsamplingScaleImageView subsamplingScaleImageView = findViewById(R.id.subsampling_scale_image_view);
步骤二:注册解码器
// 设置 AVIF 图片解码器subsamplingScaleImageView.setBitmapDecoderClass(AvifSubsamplingImageDecoder.class);subsamplingScaleImageView.setRegionDecoderClass(AvifSubsamplingImageRegionDecoder.class);
如果要切换为普通图片加载,请切换成默认解码器,如下:
// 设置普通图片解码器subsamplingScaleImageView.setBitmapDecoderClass(SkiaImageDecoder.class);subsamplingScaleImageView.setRegionDecoderClass(SkiaImageRegionDecoder.class);
步骤三:使用 subsampling-scale-image-view 加载图片
// 加载 uri 图片subsamplingScaleImageView.setImage(ImageSource.uri(uri));// 加载 assets 图片subsamplingScaleImageView.setImage(ImageSource.asset("test.avif"));// 加载 resource 图片subsamplingScaleImageView.setImage(ImageSource.resource(R.raw.avif));