Android-okhttp下载图片并保存(刷新图库)
2017-05-05 15:32
381 查看
注意:下载和保存在子线程中进行。
okhttp下载的方法:
保存的方法:
//注意:下载和保存在子线程中进行。 new Thread(new Runnable() { @Override public void run() { final Bitmap bitmap = getPic(url);//下载 onSaveBitmap(bitmap, MainActivity.this);//保存到本地 handler.post(new Runnable() { @Override public void run() { iv4.setImageBitmap(bitmap);//显示图片 } }); } }).start();
okhttp下载的方法:
public Bitmap getPic(String url) { //获取okHttp对象get请求 try { OkHttpClient client = new OkHttpClient(); //获取请求对象 Request request = new Request.Builder().url(url).build(); //获取响应体 ResponseBody body = client.newCall(request).execute().body(); //获取流 InputStream in = body.byteStream(); //转化为bitmap Bitmap bitmap = BitmapFactory.decodeStream(in); return bitmap; } catch (IOException e) { e.printStackTrace(); } return null; }
保存的方法:
/* Android保存图片到系统图库:http://blog.csdn.net/xu_fu/article/details/39158747 * */ private void onSaveBitmap(final Bitmap mBitmap, final Context context) { // 第一步:首先保存图片 //将Bitmap保存图片到指定的路径/sdcard/Boohee/下,文件名以当前系统时间命名,但是这种方法保存的图片没有加入到系统图库中 File appDir = new File(Environment.getExternalStorageDirectory(), "Boohee"); if (!appDir.exists()) { appDir.mkdir(); } String fileName = System.currentTimeMillis() + ".jpg"; File file = new File(appDir, fileName); try { FileOutputStream fos = new FileOutputStream(file); mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 第二步:其次把文件插入到系统图库 try { MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), fileName, null); // /storage/emulated/0/Boohee/1493711988333.jpg } catch (FileNotFoundException e) { e.printStackTrace(); } // 第三步:最后通知图库更新 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file))); //context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file))); }
okhttp简单的封装(支持异步)后进行下载并显示图片:
工具类:class HttpUtil { private OkHttpClient client; public void getImage(String url, Callback callback) { //单例模式 if (client == null) { client = new OkHttpClient(); } else { Request request = new Request.Builder().url(url).build(); //enqueue为OkHttp提供的异步方法 client.newCall(request).enqueue(callback); } } }
new HttpUtil().getImage(url, new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(com.squareup.okhttp.Response response) throws IOException { byte[] bytes = response.body().bytes(); final Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); // InputStream inputStream = response.body().byteStream(); // Bitmap bitmap1 = BitmapFactory.decodeStream(inputStream); handler.post(new Runnable() {//主线程更新UI @Override public void run() { iv6.setImageBitmap(bitmap); } }); } });
相关文章推荐
- Android_OkHttp+Picasso+RecyclerView实现网络图片下载瀑布流
- Android下载,保存图片(HttpURLConnection,Fresco)
- Android保存图片到系统图库并通知系统相册刷新
- Android实现保存图片并刷新系统图库图片一直在最前面
- 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选
- 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选
- android 图片下载的一个库 还有个http请求列子
- Android-网络:Http下载二进制文件(歌曲、更新包、图片)
- android 下载图片保存在sdcard并显示可拖动缩放
- 用ASP VBS xmlhttp adodbstream下载和保存图片的代码
- Android将图片保存至相册刷新问题记录
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- Android实现下载图片并保存到SD卡中
- android用http下载图片
- android httpUrlConnection 方式从网络上面下载图片
- httpClient及android 原生接口实现下载并显示图片
- Android--使用Http向服务器发送请求并取得返回结果,下载图片
- android 下载保存图片
- Android-网络:Http下载二进制文件(歌曲、更新包、图片)
- Android实现下载图片并保存到SD卡中