Android 使用三方库android-gif-drawable 加载Gif图片
16lz
2021-01-23
Github: https://github.com/koral--/android-gif-drawable
官网上有它的一些详细介绍,使用方法也较简单。这里就不赘述了
不过如果是要加载网络上的gif图片,那么需要自行写一些代码才能实现的。
/** * 加载图片 */public void loadImg(final String url) { if (url != null) { new Thread(){ @Override public void run() { super.run(); try { HttpClient httpclient = new DefaultHttpClient();//apache httpclient // 创建Get方法实例 HttpGet httpgets = new HttpGet(url); HttpResponse response = null; response = httpclient.execute(httpgets); HttpEntity entity = response.getEntity(); final ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; if (entity != null) { InputStream is = entity.getContent(); int len; while ((len = is.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.flush(); } bos.close(); if (BaseActivity.getInstance() != null && !BaseActivity.getInstance().isFinishing()) { BaseActivity.getInstance().runOnUiThread(new Runnable() { @Override public void run() { try { mDrawable = new GifDrawable(bos.toByteArray()); setBackgroundDrawable(mDrawable); mDrawable.start(); } catch (IOException e) { e.printStackTrace(); } } }); } } catch (IOException e) { e.printStackTrace(); } } }.start(); }}
核心代码即是:创建一个GifDrawable
当app中本身也有so库时,可能会报
java.lang.UnsatisfiedLinkError因为,该gif库会生成多个abi的目录。而我们项目本身的abi目录可能不全;进而导致在某些相应api机型上
适配时,在相应api目录下找不到除了gif-so文件之外的其它so文件,而报异常
在studio中,如果app/build/ 目录下,如果能找到相应的aar文件,那只需要用解压打开并删除多余abi目录;
再将该aar 放到项目的libs目录下;最后
dependencies {
compile(name:'android-gif-drawable', ext:'aar')
}
不知道是不是因为我这是mac系统的关系,反正我是没找到具体的aar文件,而是只看到了展开后的目录:
app/build/intermediates/exploded-aar/
在Android Studio中展开这个目录,能看到该gif库的目录;
将其中的so,我这里只取了armeabi目录的,移动到项目的jniLibs下;
将classes.jar重命名后,移动到项目的libs下;
将values.xml定义的copy到项目中;
将混淆规则写入到项目中的混淆文件里。
最后打包没有通过,只得在混淆中再加了一句 -ignorewarnings
终于打包过了
更多相关文章
- 最全的Android源码目录结构详解
- --android studio 使用gradle 导出jar包,并打包assets目录
- Android开发 使用Lame把音频文件转换成mp3格式
- 解决用Android Studio开发项目如何放置assets文件夹
- Android优秀开源组件项目集合
- 高手速成android开源项目【项目篇】
- 【转】android开源项目---项目篇
- 高手速成android开源项目【developer篇】
- google android 项目