android-加载网络Gif和本地Gif

在项目中遇到加载网络gif的情况,上网找了一些,但是都写的不是那么清楚,所有打算整合一下,加上自己写一些

这了我用一个网络库(AsyncHttpClient)和一个加载gif库(Glide)

网络AsyncHttpClient点击打开链接

gif-Glide点击打开链接

把这两个jar导入项目的libs中

网络请求类

public class HClient {
	
	private static AsyncHttpClient client = new AsyncHttpClient();
	static{
		client.setTimeout(50000);
	}

	public static void get(String url,JsonHttpResponseHandler handler){
		client.get(url, handler);
	}

	public static void get(String url,BinaryHttpResponseHandler handler){
		client.get(url, handler);
	}
	
}
发起网络请求,获取到gif的地址

HClient.get(CommonUrl.getSatel_URL, new JsonHttpResponseHandler(){
	@Override
	public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
		super.onSuccess(statusCode, headers, response);
		try {
<span style="white-space:pre">		</span>//获取gif的网络地址
		} catch (JSONException e) {
		e.printStackTrace();
		}
	}
});
这里得到了gif的地址,显示gif就分为两种情况,一个是直接加载网络地址

Glide.with(this).load(gif_url).centerCrop()
//图片在加载期间显示的图片
.placeholder(R.drawable.ic_launcher).crossFade().into(your_imageview);


这种适合gif大小不超过1M的的


一种是下载gif,加载byte(也可以下载到sd卡,再加载sd卡的gif文件,小于1M的很快,大于的2M的就会很慢,亲自测试了)

private final static String ALBUM_PATH  = Environment.getExternalStorageDirectory()+"";
byte[] bytes = new byte[1024];
private void saveGif(String path){
		HClient.get(path, new BinaryHttpResponseHandler(){
			@Override
			public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
				try {
					bytes = arg2;
					if (isFileExist(ALBUM_PATH+"/YT/") == false) {
						Log.d("TAG", ALBUM_PATH);
						File file = new File(ALBUM_PATH+"/YT/");	
						file.mkdir();
					}
					File file2 = new File(ALBUM_PATH+"/YT/yt.gif");
					file2.createNewFile();
					FileOutputStream fileOutputStream = new FileOutputStream(file2);
					fileOutputStream.write(arg2);
					fileOutputStream.close();//handler加载gif
				} catch (Exception e) {
					e.printStackTrace();
				}
			}

			@Override
			public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
				
			}
		});
	}



判断文件是否存在

 public boolean isFileExist(String fileName){
		  
		  File file = new File(fileName);
		  file.delete();
		  return file.exists();
		  
		 }
加载
Glide.with(this).load(bytes).centerCrop().placeholder(R.drawable.ic_launcher).crossFade().into(your_imageview);

	@Override
	protected void onDestroy() {
		super.onDestroy();
		Glide.clear(your_imageview);
		Glide.with(this).onDestroy();
	}
这里就完成了gif的加载,使用起来还是比较方便


你可能感兴趣的:(网络,imageview,gif)