Android 加载GIF图最佳实践方案

 更新时间:2017年08月21日 11:10:27   作者:赵彦军  
最近在项目中遇到需要在界面上显示一个本地的 GIF 图的功能,下面通过本文给大家分享Android 加载GIF图最佳实践方案,需要的朋友参考下吧

起因

最近在项目中遇到需要在界面上显示一个本地的 GIF 图。按照惯例我直接用了 Glide 框架来实现。

Glide 地址: https://github.com/bumptech/glide

我用的 Glide版本为 4.0.0-RC1 , 具体的实现代码如下:

 Glide.with( this ).asGif().load( R.drawable.yiba_location ).into( location_image ) ;

运行的效果很卡顿,我怀疑是不是方法没有用对,调了压缩模式,还是卡顿;调了缓存模式,还是卡顿。看了一下我的 gif 图,大小还是 800K ,是不是图片太大了,换了一张 100K 的 gif 图,这次显示的效果很好,gif 图播放的很流畅。至此,得出结论:Glide 框架自身的原因,播放大尺寸的 Gif 图的效果不是很理想。

方案

Glide 不行,那么就要另想其他方案,就去 github 上找一下。

排名第一的 android-gif-drawable 库 start 有 4.8K , 这个应该不错,试试吧。

android-gif-drawable : https://github.com/koral--/android-gif-drawable

引用:

 compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.7'

直接把布局文件中的 ImageView 替换为 GifImageView

<pl.droidsonroids.gif.GifImageView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:src="@drawable/yiba_location "
  />

运行起来看看,果然很好啊,播放的很流畅,果断采用此方案。

探寻其他的属性:

GifImageView gifImageView = (GifImageView) findViewById(R.id.gifImageView);
GifDrawable gifDrawable = (GifDrawable) gifImageView.getDrawable();

通过 GifImageView 对象获取到 GifDrawable 对象。

gifDrawable.start(); //开始播放
gifDrawable.stop(); //停止播放
gifDrawable.reset(); //复位,重新开始播放
gifDrawable.isRunning(); //是否正在播放
gifDrawable.setLoopCount( 2 ); //设置播放的次数,播放完了就自动停止
gifDrawable.getCurrentLoop(); //获取正在播放的次数
gifDrawable.getCurrentPosition ; //获取现在到从开始播放所经历的时间
gifDrawable.getDuration() ; //获取播放一次所需要的时间

总结

以上所述是小编给大家介绍的在Android 加载GIF图最佳实践方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 解决Android Device Monitor 的 File Explorer 中无法打开某些文件夹的问题

    解决Android Device Monitor 的 File Explorer 中无法打开某些文件夹的问题

    这篇文章主要介绍了解决Android Device Monitor 的 File Explorer 中无法打开某些文件夹的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Android 使用 SharedPreferences 保存少量数据的实现代码

    Android 使用 SharedPreferences 保存少量数据的实现代码

    这篇文章主要介绍了Android 使用 SharedPreferences 保存少量数据的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Android TabHost如何实现顶部选项卡

    Android TabHost如何实现顶部选项卡

    这篇文章主要介绍了Android TabHost如何实现顶部选项卡,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • flutter 屏幕尺寸适配和字体大小适配的实现

    flutter 屏幕尺寸适配和字体大小适配的实现

    这篇文章主要介绍了flutter 屏幕尺寸适配和字体大小适配的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Android实现轻量线性与百分比图表的方法

    Android实现轻量线性与百分比图表的方法

    这篇文章主要给大家介绍了关于Android实现轻量线性与百分比图表的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习学习吧。
    2017-12-12
  • 利用Jetpack Compose复刻游戏Flappy Bird

    利用Jetpack Compose复刻游戏Flappy Bird

    Flappy Bird是13年红极一时的小游戏,其简单有趣的玩法和变态的难度形成了强烈反差,引发全球玩家竞相把玩!本文将通过Jetpack Compose复刻这一游戏,感兴趣的小伙伴可以了解一下
    2022-02-02
  • Android 驱动编写LED-NDK程序

    Android 驱动编写LED-NDK程序

    这篇文章主要介绍了Android 驱动编写LED-NDK程序的相关资料,需要的朋友可以参考下
    2016-09-09
  • Android事件分发机制的详解

    Android事件分发机制的详解

    这篇文章主要介绍了Android事件分发机制的详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握Android事件分发机制,需要的朋友可以参考下
    2017-09-09
  • Android Studio出现Failed to pull selection: open failed: Permission denied的解决思路

    Android Studio出现Failed to pull selection: open failed: Permi

    本篇文章给大家分享了Android Studio中导出数据库文件的方法以及出现Failed to pull selection: open failed: Permission denied的解决思路,有兴趣的学习下。
    2018-05-05
  • Android listview点赞问题分析

    Android listview点赞问题分析

    这篇文章主要为大家详细解析了Android listview点赞功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11

最新评论