Android GifLib实现高效加载git图片

  • 从android系统源码中拷贝gif-lib的.h以及.c文件到NDK项目中。

  • 调用gif-lib打开gif文件,可以读取到总帧数、每帧之间的时间间隔信息,这些信息可以封装在自定义的结构体中(里面还可以保存当前渲染的帧号),把结构体的引用保存到gif-lib的一个名叫UserData的属性中方便后续使用。打开gif文件可以返回一个jlong类型,它可以理解成一个地址引用,后续直接用gif-lib打开得到GifFileType

  • Java层使用Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888)创建一个空的bitmap对象。width和height参数调用gif-lib获取。

  • 将bitmap对象传递给gif-lib,依据gif-lib的API取出当前帧的内容填充到bitmap,并且获取到下一帧的延迟时长。

  • Java层将填充了内容的bitmap对象设置给ImageView显示,并且在延迟时长后再去重复执行上一个步骤。

你可能感兴趣的:(Android GifLib实现高效加载git图片)