android加载动态webp图片

对于安装大小的优化,占用最多的就是图片资源。把图片资源文件替换webp格式可以大大减少包的体积。

webp是一种图片文件格式,webp默认只支持Android4.0以上。但是ImageView加载不了动态的webp,我们可以使用facebook 的 fresco加载动态的webp.

引入fresco依赖库
api 'com.facebook.fresco:fresco:1.13.0'

// 支持 WebP (静态图+动图),需要添加

api 'com.facebook.fresco:animated-webp:1.13.0'

api 'com.facebook.fresco:webpsupport:1.13.0'

//初始化
Fresco.initialize(getApplication().getApplicationContext());

/**

* Fresco 加载本地webp图片

* @param draweeView

* @param resId

*/

public static void loadDrawable(SimpleDraweeView draweeView, @DrawableRes int resId) {

Uri uri = Uri.parse(imageTranslateUri(draweeView.getContext(), resId));

    DraweeController controller = Fresco.newDraweeControllerBuilder()

.setUri(uri)

.setAutoPlayAnimations(true)

.setOldController(draweeView.getController())

.build();

    draweeView.setController(controller);

}

/**

* Fresco 加载webp图片

* @param draweeView

* @param imageUrl

*/

public static void loadWebpImage(SimpleDraweeView draweeView, String imageUrl) {

DraweeController controller = Fresco.newDraweeControllerBuilder()

.setUri(imageUrl)

.setAutoPlayAnimations(true)

.setOldController(draweeView.getController())

.build();

    draweeView.setController(controller);

}







/**

* drawable路径转换成 url

* @param context

* @param resId

* @return

*/

public static StringimageTranslateUri(Context context, int resId) {

Resources r = context.getResources();

    Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE +"://" + r.getResourcePackageName(resId) +"/" + r.getResourceTypeName(resId) +"/" + r.getResourceEntryName(resId));

    return uri.toString();

}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容