遇到的问题

列表加载gif图片,用Fresco,Glide,android-gif-drawable等都能实现简单的单个Gif图片的加载,如果在列表上加载图片,不做内存优化处理,那么OOM就会黏着你,对于项目比较紧急,时间有限的童鞋来说,优化无疑是雪上加霜,SO,那么给大家推荐一个简单加载Gif图片的控件,超级好用!

简介

Sketch 是 Android 上一个强大且全面的图片加载器,支持 GIF,手势缩放以及分块显示超大图片。Sketch is a powerful and comprehensive image loader on Android, with support for GIF, gesture zooming, block display super large image

Sketch 是 Android 上一款强大且全面的图片加载器,除了图片加载的必备功能外,还支持 GIF,手势缩放、分块显示超大图片、自动纠正图片方向、显示视频缩略图等功能

特效

支持的特性

多种 URI 支持. 支持 http://、https://、asset://、content://、file:///sdcard/sample.jpg、 /sdcard/sample.jpg、drawable://、data:image/、data:img/、android.resource://、apk.icon://、app.icon:// 等 URI,通过 UriModel 还可以扩展支持的 URI

支持 gif 图片. 集成了 android-gif-drawable 1.2.10 可以方便的显示 gif 图片

支持手势缩放. 支持手势缩放功能,在 PhotoView 的基础上进行了优化,增加了滚动条,定位等功能

支持分块显示超大图. 支持分块显示超大图功能,从此再大的图片也不怕了

支持三级缓存. 通过 LruMemoryCache、LruDiskCache 复用图片,加快显示时间;通过 LruBitmapPool 复用 Bitmap,减少因 GC 而造成的卡顿

支持纠正图片方向. 可纠正方向不正的图片,并且分块显示超大图功能也支持,仅限 JPEG 格式的图片

支持显示 APK 或 APP 图标. 支持显示本地 APK 文件的图标或根据包名和版本号显示已安装APP的图标

支持 Base64 图片. 支持解析 Base64 格式的图片

支持各种列表. 在各种列表(ListView、RecyclerView)中循环使用不错位,并且不占用 setTag() 方法

自动防止加载过大 Bitmap 可通过 maxSize 来控制加载到内存的图片的尺寸,默认为 ImageView的 layout_width 和 layout_height 或屏幕的宽高

独家 TransitionDrawable 支持. 独家支持任意尺寸的两张图片使用 TransitionDrawable 过渡显示,保证不变形

只加载或只下载. 除了 display() 方法可以显示图片之外,你还可以通过 load() 方法只加载图片到内存中或通过 download() 方法只下载图片到本地

移动数据下暂停下载. 内置了移动数据下暂停下载图片的功能,你只需开启即可

自动选择合适的 Bitmap.Config. 根据图片的 MimeType 自动选择合适的 Bitmap.Config,减少内存浪费,例如对于 JPEG 格式的图片就会使用 Bitmap.Config.RGB_565 解码

强大且灵活的自定义. 可自定义 URI 支持、HTTP、下载、缓存、解码、处理、显示、占位图等各个环节

支持的URI

Type

Scheme

File in network

http://, https://

File in SDCard

/, file://

Content Resolver

content://

Asset Resource

asset://

Drawable Resource

drawable://

Base64

data:image/, data:/img/

APK Icon

apk.icon://

APP Icon

app.icon://

Android Resource

android.resource://

开始使用

导入 Sketch

在 app 的 build.gradle 文件的 dependencies 节点中加入依赖

implementation'me.panpf:sketch-gif:2.6.1'

Android Studio 会自动合并 AAR 中所包含的权限和混淆配置

使用 SketchImageView 显示图片

SketchImageViewsketchImageView=(SketchImageView) findViewById(R.id.image_main);

//默认播放gif图片

sketchImageView.getOptions().setDecodeGifImage(true);

//设置gif资源图片

sketchImageView.displayImage("http://t.cn/RShdS1f");

使用方法就是这么简单,详细API大家可以去查看SketchImageView

SketchImageView

欢迎大家进群探讨Android相关技术 群号:548154942

android gif 卡顿,Android SketchImageView 加载Gif图片,解决界面不流畅卡顿问题相关推荐

  1. 剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)

    之前项目中使用Picasso遇到了一个问题:在Android 5.0以上版本的部分手机上使用Picasso加载本地图片会失败.为了解决这个问题,研究了一下Picasso加载和压缩本地图片的流程,才有了 ...

  2. Android 系统(167)----Glide加载圆角图片的方法

    Glide加载圆角图片的方法 现在在市面上很多App的UI设计都会出现圆角图片的显示.Glide本身也提供了圆角图片的加载方式.但是我们在开发中有可能遇到只要顶部展示圆角,或者某一个角是圆角.这样的需 ...

  3. android picasso 显示本地图片,剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)...

    之前项目中使用Picasso遇到了一个问题:在Android 5.0以上版本的部分手机上使用Picasso加载本地图片会失败.为了解决这个问题,研究了一下Picasso加载和压缩本地图片的流程,才有了 ...

  4. Android 使用三种方式缓存加载 倒影图片

    实现代码: package com.android.imooc.gallery;import java.lang.ref.SoftReference; import java.util.Hashtab ...

  5. QQ消息记录总是卡在消息记录加载中页面解决方法

    删除 C:\Documents and Settings\Administrator\Application Data\Tencent 下的QQ文件夹

  6. chrome 禁止加载网页图片 解决办法

    1.在谷歌浏览器中输入:chrome://settings/content 图片设置: 选择 不显示任何图片 ,即可 2. 点击谷歌设置 -> 点击高级设置 ->再点击 隐私设置 下的内容 ...

  7. Unity 制作翻书电子书,外部异步加载千张图片(二)

    Unity 制作翻书电子书,外部异步加载千张图片(二) Hello!这是我的第二篇文章,希望在你阅读这篇文章之后对你能有帮助. 上文完成的程序,我说过只是解决了当前的问题,存在了很多瑕疵.例如:1.替 ...

  8. Android高工面试:用Glide加载Gif导致的卡顿,说一下你的优化思路

    前言 Glide图片框架是可以直接加载GIF图的,但是做一个银行合作项目的时候,由于有需要出货页面需要加载一个GIF图,但是发现在使用Glide框架加载Gif图片,明显发现有延迟. 经过查看glide ...

  9. 关于 android 加载 res 图片 out of memory 问题 解决 同样适用于 sd卡图片

    2019独角兽企业重金招聘Python工程师标准>>> 发现android 加载res图片如果过多也会崩溃 android 也是使用 Bitmap  bm = BitmapFacto ...

  10. Android插件化开发之动态加载技术系列索引

    动态加载介绍 在Android开发中采用动态加载技术,可以达到不安装新的APK就升级APP功能的目的,可以用来到达快速发版的目的,也可以用来修复一些紧急BUG. 现在使用得比较广泛的动态加载技术的核心 ...

最新文章

  1. Jetty服务器jmx监控
  2. Oracle 导出CSV、导出大数据
  3. 开根号的笔算算法图解_机器学习KNN算法之手写数字识别
  4. C# 导出EXCEL文件
  5. 偶像剪辑,一键获取:多模态联合建模的视频人物摘要
  6. Qt笔记-Linux程序打印带颜色的字符串
  7. 怎样做到“不说服客户,只拒绝客户”?
  8. 北京联通光猫 F427 路由改桥接的方法
  9. 数据-第19课-递归的应用实战一
  10. 百度手机输入法中的五笔9键盘有问题?
  11. 下行文格式图片_下行文页面格式设置
  12. C语言:数组排序(冒泡法排序)
  13. php 数字转换英文,PHP将英文数字转换为阿拉伯数字
  14. 解决网站加载图片太慢
  15. C语言编写简单的走迷宫小游戏
  16. STM32——中断优先级分组
  17. vostro3070装win7_戴尔Vostro 成就 3070台式机装win7系统及bios设置
  18. 非线性回归-转化为线性回归以及非线性模型-用R语言实现
  19. 4-佛教入华及其早期传播
  20. 如何在百度地图上标注坐标点?

热门文章

  1. iOS 中文转拼音 多音字处理
  2. 再生核希尔伯特空间:Hilbert Space与RKHS基础
  3. USB接口定义详解(图)
  4. 语音识别属于计算机的什么应用领域,语音识别系统
  5. CAD二次开发——cad查看对象C#:MdgDbg.dll
  6. 为什么不能说“接受原假设”?
  7. 【BZOJ】2078: [POI2004]WYS
  8. mysql数据库url正确的是_下面关于连接mysql下的mydb数据库的url,编写正确的是()...
  9. C#导入有道词典单词本到扇贝
  10. python 答题辅助_GitHub - anwzx/TopSup: 答题辅助决策:冲顶大会等答题类游戏