Android 使用三方库android-gif-drawable 加载Gif图片
2016-08-23 15:38
489 查看
Github: https://github.com/koral--/android-gif-drawable
官网上有它的一些详细介绍,使用方法也较简单。这里就不赘述了
不过如果是要加载网络上的gif图片,那么需要自行写一些代码才能实现的。
核心代码即是:创建一个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
终于打包过了
官网上有它的一些详细介绍,使用方法也较简单。这里就不赘述了
不过如果是要加载网络上的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 studio中使用android-gif-drawable开源项目实现gif图片的显示
- 安卓学习笔记--- Android加载Gif动画android-gif-drawable的使用
- Android实现眼睛一闪一闪的效果,使用layerdrawable,类似GIF图片效果
- 利用android开源库android-gif-drawable加载gif格式图片
- Android加载Gif动画android-gif-drawable的使用
- Android加载Gif动画android-gif-drawable的使用
- android 使用volley下载文件和加载gif图片
- android Glide图片加载库的使用 支持GIF的图片播放
- Android 图像系列: 将本地图片加载到Drawable
- Android中View(视图)绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- [Android] AsyncTask使用实例---加载网络图片
- Android中View绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解
- Android中View(视图)绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解
- Android之ListView优化(使用Lrucache,图片滑动时使用默认图片,停止时加载)
- Android使用WebView加载图片防止OutOfMemoryError
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- [Android] AsyncTask使用实例---加载网络图片
- ListView使用SimpleAdapter加载非drawable资源图片
- (原创)android加载GIF图片到地图(或者其他图层)中