1、如果没有配置NDK路径的话,会出现:
Caused by: org.gradle.api.InvalidUserDataException: NDK not configured. Download it with SDK manager. 。。。
的错误,这时如果想暂时通过,直接在local.properties里添加NDK路径:
这里要替换成自己的路径
然后把minSdkVersion改成21(以上),Sync Now后就行了
没有出现问题的上面忽略。
2、在cpp文件夹中添加加载时需要的包:
只要dgif_lib.c、gif_hash.h、gif_lib.h、gif_lib_private.h、gifalloc.c这5个就可以了
然后在CmakeLists.txt里配置:
add_library里添加gif_lib.h和gifalloc.c
target_link_libraries里添加jnigraphics
然后打开gifalloc.c文件里,点击Sync Now后,发现之前报红的都好了:
dgif_lib.c同理.
3、接下来就很简单了,基本就是调用里面提供的函数。
新建一个GifProcessor类,然后创建分别创建loadPath、getWidth、getHeight和update4个native方法,方法名写好后点击alt+enter(默认)键后可直接快捷在native-lib.cpp里创建对应的方法:
之后在native-lib.cpp中编写对应的方法:
这里主要是通过DGifOpenFileName函数得到GifFileType对象,这个类内置了很多有关GIF的信息:
描述的很清楚了,SWidth和SHeight就是GIF图像的宽高了,getWdith和getHeight就可以直接返回他们了:
接下来实现更新帧的函数:
最后随便下个demo.gif通过adb push进storage/emlated/0/就行了
注释里也说明的差不多了。
demo地址:https://github.com/lyx19970504/GIFLoadingDemo