您的位置:首页 > 移动开发 > Android开发

Android 使用三方库android-gif-drawable 加载Gif图片

2016-08-23 15:38 489 查看
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

终于打包过了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: