OKGO&Glide框架
OKGO
OKGO主要功能
基本的get、post、put、delete、head、options、trace、patch八種請求
支持upString,upJson,upBytes,upFile等up類方法上傳特定數據
支持一個key上傳一個文件,也可以一個key上傳多個文件,也可以多文件和多參數一起上傳
大文件下載和下載進度回調
大文件上傳和上傳進度回調
支持cookie的自動管理,並可自定義cookie管理策略
支持緩存模式,不僅支持http緩存協議,也支持自定義緩存策略
支持重定向
支持自定義超時自動重連次數
支持鏈式調用
支持https訪問,支持雙向認證
支持根據tag取消請求,也可全部取消
支持自定義Callback,自動解析網絡數據
依賴、注意事項
依賴:
compile 'com.lzy.net:okgo:3.0.4'
注意:
無論做什麼請求,第一行的泛型一定要加!!!
GET&POST&UPLOAD&DOWNLOAD&GETIMG
POST請求數據
private void dopost() {
HashMap<String,String> map=new HashMap<>();
map.put("phone","123456");
map.put("passwd","12346");
OkGo.<String>post("https://www.apiopen.top/createUser?key=00d91e8e0cca2b76f515926a36db68f5&")
.params(map)
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
Toast.makeText(MainActivity.this, ""+response.body(), Toast.LENGTH_SHORT).show();
}
});
}
POST上傳文件
private void upload() {
OkGo.<String>post("http://169.254.113.244/hfs/")
.isMultipart(true)
.params("file",new File("/sdcard/haha.jpg"),"zizi.jpg")
.execute(new StringCallback() {
@Override
public void uploadProgress(Progress progress) {
super.uploadProgress(progress);
progressBar1.setProgress((int) (progress.fraction*100));
}
@Override
public void onSuccess(Response<String> response) {
Toast.makeText(MainActivity.this, ""+response.body(), Toast.LENGTH_SHORT).show();
}
});
}
GET請求JSON
public void getString(){
OkGo.<String>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1")
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String body = response.body();
Toast.makeText(MainActivity.this, ""+body, Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Response<String> response) {
super.onError(response);
}
});
}
GET請求圖片
private void getBitmap() {
OkGo.<Bitmap>get("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=486958716,243120904&fm=26&gp=0.jpg")
.execute(new BitmapCallback() {
@Override
public void onSuccess(Response<Bitmap> response) {
Bitmap body = response.body();
imageView.setImageBitmap(body);
Toast.makeText(MainActivity.this, ""+body.getByteCount(), Toast.LENGTH_SHORT).show();
}
});
}
下載文件
private void getFile() {
OkGo.<File>post("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
.execute(new FileCallback() {
@Override
public void onSuccess(Response<File> response) {
File body = response.body();
}
@Override
public void onStart(Request<File, ? extends Request> request) {
super.onStart(request);
}
@Override
public void onError(Response<File> response) {
super.onError(response);
}
@Override
public void onFinish() {
super.onFinish();
}
@Override
public void uploadProgress(Progress progress) {
super.uploadProgress(progress);
}
@Override
public void downloadProgress(Progress progress) {
super.downloadProgress(progress);
progressBar2.setProgress((int) (progress.fraction*100));
}
});
}
Glide框架
三層緩存機制
內存—>SD卡—>網絡
加載本地SD卡圖片/網絡圖片/資源圖片/視頻/GIF動圖
//視頻只可以加載一幀
Glide .with(this).load(url).into(imageView);
加載圓形頭像
Glide.with(this)
.load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562587162663&di=58b961a5726901f5d3b97f8924ddc189&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F10%2F20181110102045_jwqny.jpg")
.apply(RequestOptions.bitmapTransform(new CircleCrop()))
.into(imageView);
加載圓角頭像
Glide.with(this)
.load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562587162663&di=58b961a5726901f5d3b97f8924ddc189&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F10%2F20181110102045_jwqny.jpg")
.apply(RequestOptions.bitmapTransform(new RoundedCorners(100)))
.into(imageView);
設置佔位符及加載失敗圖片
Glide.with(this)
.load("http://hbimg.b0.upaiyun.com/9852feef26dcba3d807282aa5dff561b1e223de85b027-Tzv0x0_fw658")
.apply(RequestOptions.bitmapTransform(new RoundedCorners(20))
.error(R.mipmap.error)//加載失敗圖片
.placeholder(R.drawable.ic_launcher_background))//佔位符圖片
.into(iv);
代碼清除緩存
Glide.get(GlideActivity.this).clearMemory();//清除內存緩存
new Thread(new Runnable() {
@Override
public void run() {
Glide.get(GlideActivity.this).clearDiskCache();//清除SD卡緩存
}
}).start();