Glide入门教程——6.播放Gif & 视频
来源:互联网 发布:淘宝售后服务专员认证 编辑:程序博客网 时间:2024/06/01 20:52
Glide — 播放Gif & 视频
原文:Displaying Gifs & Videos
作者:Norman Peitek
翻译:Dexter0218
在前面的文章中,我们一起学习了从各种源加载图片,一起学习了如何改变图片大小和缩放等设置。这篇文章会展示给你一个Glide的特性:播放Gif和本地视频。
原文链接:http://www.jianshu.com/p/1697f79d1579
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
播放 Gif动画
许多图片加载库能处理好图片的加载与显示,但很多并不支持Gif。如果你的app需要支持Gif,Glide的简单会让体验更惊艳。如果你想要播放Gif,你只要使用之前处理图片的类似的方法:
String gifUrl = "http://i.kinja-img.com/gawker-media/image/upload/s--B7tUiM5l--/gf2r69yorbdesguga10i.gif";Glide .with( context ) .load( gifUrl ) .into( imageViewGif );
上面的代码会在ImageView里显示Gif,并自动播放。Glide另外一个非常棒的功能是你仍然可以使用标准的调用去处理Gif。
Glide .with( context ) .load( gifUrl ) .placeholder( R.drawable.cupcake ) .error( R.drawable.full_cake ) .into( imageViewGif );
Gif 检查
Glide接受Gif和图片作为load()的参数。上面代码中潜在的一个问题,如果提供的源不是Gif,可能是一个普通的图片。作为开发者,你当然希望那个URL是一个Gif,但Glide不能自动检测到底是不是,这样引入了一个额外的方法asGif()强迫生成一个Gif:
Glide
.with( context )
.load( gifUrl )
.asGif()
.error( R.drawable.full_cake )
.into( imageViewGif );
如果gifUrl是一个gif,没有异常发生。但如果gifUrl不是一个Gif,即使是一个完好的图片(非Gif),Glide也会加载失败。.error()回调方法会被调用,并加载错误占位图。
把Gif当作Bitmap播放
如果你的app需要显示一组网络URL,可能包括普通的图片或者Gif。在一些情况下,你可能并不在意是否要播放完整的Gif。如果你只是想要显示Gif的第一帧,当URl指向的的确是Gif,你可以调用asBitmap()将其作为常规图片显示。
Glide .with( context ) .load( gifUrl ) .asBitmap() .into( imageViewGifAsBitmap );
这边介绍了用Glide所有的知识点去播放Gif,非常简单,试试吧!
注意事项 ——译者注
实际中加载gif并没有上述的那么简单,可能会遇到很多问题:
比如加载慢,比如OOM。
1.git图片大小,图片格式是否正确,你可以查看下你需要加载的gif图片大小,需要多长时间。太大的图片,加载慢,又浪费流量,不利于用户体验。
2.网速是不是正常?从chrome里加载一下,看需要多长时间。
3.磁盘缓存策略问题。加载gif,就磁盘缓存还能设置全局缓存么?压缩调整gif大小,重新编码,是不是很消耗时间?官方给的方法是使用用:.diskCacheStrategy(DiskCacheStrategy.SOURCE)
4.在ListView等列表控件中滑动的时候,考虑添加 Glide.with(context).pause|resumeRequests()
,可以参考github上的开发者答复
5.开启Glide的相关log,查看异常原因,具体问题具体分析。不会开启的,请阅读 异常: 调试和报错处理。
6.还不能解决,再访问https://github.com/bumptech/glide,看一下里面的issue,搜索一下跟你代码相关的关键字。
播放本地视频
介绍完Gif,下面介绍一下播放视频。Glide也能播放存储在手机上的本地视频。假设你能通过用户选择获取到视频文件的路径:
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";Glide .with( context ) .load( Uri.fromFile( new File( filePath ) ) ) .into( imageViewGifAsBitmap );
重要提示:这里只对本地视频有效。对于并非存在本地的视频(如网络URL)并不支持!如果你想要从网络URL播放视频,参考VideoView。
展望
看完了这篇文章,你应当能够和处理图片一样,处理Gif和本地视频了。Glide可以让Gif的播放非常流畅和方便。后续的文章将要为你介绍Glide的缓存系统。
原文链接:http://www.jianshu.com/p/1697f79d1579
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
- Glide入门教程——6.播放Gif & 视频
- 使用Glide轻松播放网络GIF图片
- Glide GIf无法循环播放问题
- Glide入门教程——16.用Modules定制Glide
- Glide入门教程——18.Glide Module案例: 自定义缓存
- Glide入门教程——1.入门简介
- Glide入门教程——2.高级加载
- Glide入门教程——7. 缓存基础
- Glide入门教程——8. 请求优先级
- Glide入门教程——9. 缩略图
- Glide入门教程——13.自定义变换
- Glide入门教程——22.系列综述
- Glide入门教程——1.入门简介
- Gif图完美运行——播放Gif图
- Android Glide加载gif播放次数及监听
- 视频播放(三)——视频播放
- Android基础入门教程——9.2 MediaPlayer播放音频与视频
- Android基础入门教程——9.2 MediaPlayer播放音频与视频
- web前端学习(6)
- [Android] ListView/GridView 滚动时动态填充空白边距padding(android:clipToPadding)
- LeetCode进阶之路(Unique Paths)
- 【华为练习题】二叉树遍历
- 暗黑字符串
- Glide入门教程——6.播放Gif & 视频
- strncpy源码
- 区块链小结及思考
- 约束
- Glide入门教程——7. 缓存基础
- 网易面试总结
- Glide入门教程——8. 请求优先级
- 8月18号学习感悟
- 修改数据表