Glide加载webp动画及监听动画播放结束
Glide加载图片非常方便,使用也非常广泛,但是并不能直接支持webp动图。
可能很多人会使用Fresco来加载webp,但是对于已经使用Glide的项目,总感觉再使用Fresco有点冗余,如果能用Glide来加载webp那将非常方便。
而github上也确实存在webpdecoder这样一个库支持加载webp。
具体使用方式总结如下:
一、首先加入依赖
//Glide库//implementation 'com.github.bumptech.glide:glide:4.7.1'//supportimplementation 'com.github.bumptech.glide:glide:4.12.0'//androidxannotationProcessor "com.github.bumptech.glide:compiler:4.12.0"//androidx
//Glide支持webp动图的库implementation "com.github.zjupure:webpdecoder:2.0.4.12.0"
二、使用
使用方法跟Glide的使用非常相似
//webp动图
Transformation<Bitmap> transformation = new CenterInside();
Glide.with(mAnimView).load(R.drawable.webp_anim)//不是本地资源就改为url即可.optionalTransform(transformation).optionalTransform(WebpDrawable.class, new WebpDrawableTransformation(transformation)).into(mAnimView);
三、动画播放完成监听
关于动画播放完成的监听,网上也有做法是通过反射拿到webp每一帧动画的时间,再累加起来得到动画总时长,最后通过Handler的postDelay进行延迟作为动画播放结束的回调,这样想想就知道不是很精确,如果误差可以接受那就可以。
监听其实就是在资源加载成功的回调里面,对WebpDrawable进行监听,不过要注意webp的循环次数如果是无限循环,那将不会有结束回调,可以通过代码设置循环次数为有限的即可。
为什么我知道是通过WebpDrawable进行监听,因为我之前用过Fresco,它的监听大概这样:
animatedDrawable.setAnimationListener(...)
所以我猜到了。其实进去WebpDrawable类里面看看,就知道它其实也实现了这么个接口
而Animatable2Compat接口就有结束的接方法。
所以动画播放完成回调的做法如下,只不过在上面的做法加多一点代码而已:
//webp动图
Transformation<Bitmap> transformation = new CenterInside();
Glide.with(mAnimView).load(R.drawable.webp_anim)//不是本地资源就改为url即可.optionalTransform(transformation).optionalTransform(WebpDrawable.class, new WebpDrawableTransformation(transformation)).addListener(new RequestListener<Drawable>() {@Overridepublic boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {return false;}@Overridepublic boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {WebpDrawable webpDrawable = (WebpDrawable) resource;//需要设置为循环1次才会有onAnimationEnd回调webpDrawable.setLoopCount(1);webpDrawable.registerAnimationCallback(new Animatable2Compat.AnimationCallback() {@Overridepublic void onAnimationStart(Drawable drawable) {super.onAnimationStart(drawable);}@Overridepublic void onAnimationEnd(Drawable drawable) {super.onAnimationEnd(drawable);webpDrawable.unregisterAnimationCallback(this);}});return false;}}).into(mAnimView);
Glide加载webp动画及监听动画播放结束相关推荐
- Android Glide加载图片、网络监听、设置资源监听
Glide加载图片.加载进度监听 前言 正文 一.项目配置 二.显示网络图片 三.添加设置资源监听 四.添加设置资源监听 五.添加加载进度条 六.封装工具类 七.源码 总结 前言 在日常开发中使用 ...
- android glide加载webp动画设置播放动画次数和监听动画播放完成
需求 产品经理说:需要使用一系列的动画,我说没问题啊,用gif图不就好了吗?结果,设计师给了我一系列的webp动图.我能怎么办? 先是百度了一番,找到了一个播放webp动画的glide库,库地址是Gl ...
- 基于腾讯 x5 开源库,提高 webView 开发效率,大概要节约你百分之六十的时间成本。该案例支持处理 js 的交互逻辑且无耦合、同时暴露进度条加载进度、可以监听异常 error 状态、支持视频播放
YCWebView 项目地址:yangchong211/YCWebView 简介: 基于腾讯 x5 开源库,提高 webView 开发效率,大概要节约你百分之六十的时间成本.该案例支持处理 js 的交 ...
- Glide 加载webp动图
前提 公司新需求要求视频封面加载动图,但是由于Gif上传的图片过大,所以为了节省开销,对图片进行了处理,最后给到客户端的是webp格式的图片链接. 1.验证webp格式的图片链接是否是动图,测试时,将 ...
- Electron加载网页失败,监听事件处理
1. 问题提出 在使用electronjs打包桌面软件的时候,如果启动软件之后,网络不通的情况下,加载网页失败,会显示白屏,在此情况下需要对加载网页失败的事件进行处理 2. 处理手段 2.1 监听di ...
- 使用cdn来加速字体文件在前端的加载速度,并监听字体是否加载完成
最近在个人网站butterpig中实现了个性印章的在线设计功能,里面目前一共实现了有八九种个性印章的样式,并且还有六七种网络开源商用的字体类型.具体效果可以访问:个性印章在线设计查看. 印章的设计,其 ...
- Playwright 模拟浏览器、模拟手机、忽略图片加载、等待、监听、操作事件
Playwright 是微软开源的自动化UI测试工具,支持Chrome.Firefox.Edge等多种浏览器,兼容多种语言.多种操作系统. 安装 pip install pytest-playwrig ...
- JS_无法监听audio的ended事件,监听audio播放结束无效
当你的audio标签里面有loop属性时 <audio id="music2" loop preload autoplay="autoplay">& ...
- Glide加载GIF
glide加载gif时,怎么监听gif动画播放完成? 我想要在播放gif动画完成后 添加一些事件
最新文章
- 如何解决visual studio2017 install 下载安装极慢的问题
- bzoj4154[Ipsc2015]Generating Synergy
- postgre 查询注释_postgresql 获取所有表名、字段名、字段类型、注释
- Subversion 1.7 Eclipse integration in Ubuntu12(转载)
- python 中各种下划线的神操作:_、_xx、xx_、__xx__、_ _xx、_classname_ _xx
- 电子表格转换成数据库_创建数据库,将电子表格转换为关系数据库,第1部分...
- kafka 主动消费_Kafka核心API——Consumer消费者
- php 下拉菜单 不提交 选中的值,在html中怎样可以做到下拉菜单提交后保留选中值不返回默认值...
- EDGE浏览器配合阿呆喵设置广告过滤
- (转)基本光照模型公式
- 【Vegas原创】巧用GridView ButtonField列
- WP开发笔记——页面传参
- HDU1715 大菲波数【大数】
- 74HC573锁存器
- 信号完整性(SI)概述
- C语言实现操作系统简单的P V操作
- 怎么用计算机截图快捷键,教您怎么使用电脑自带的截图快捷键
- c语言银行利率问题答案,c语言编程 银行利率问题
- ZOJ 3450 Doraemon's Railgun (DP·分组背包)
- 手机中毒变“肉鸡” 个人信息1元贱卖