1,实现效果
-
从网络获取图片进行显示
2,实现逻辑
【1】创建MyBitmapUtils提供display 获取网络进行访问
public class MyBitmapUtils {
MemCacheUtils memCacheUtils;
NetCacheUtils netCacheUtils;
LocalCacheUtils localCacheUtils;
public MyBitmapUtils() {
super();
// 网络
netCacheUtils = new NetCacheUtils();
}
/**
* 用户调用显示图片的方法
*
* @param ivPic
* @param url
*/
public void display(ImageView ivPic, String url) {
// 网络获取
System.out.println("网络获取");
netCacheUtils.getBitmapFromNet(ivPic, url);
}
}
【2】NetCacheUtils网络获取图片
-
创建AsyncTask,doInBackground获取图片流
-
onPostExecute 结束后更新ImagerView
package com.itheima.zhbj96.utils.pic;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.SystemClock;
import android.text.TextUtils;
import android.widget.ImageView;
public class NetCacheUtils {
/**
* 获取图片
*
* @param ivPic
* @param url
*/
public void getBitmapFromNet(ImageView ivPic, String url) {
DownTask task = new DownTask(ivPic, url);
task.execute();
}
private class DownTask extends AsyncTask<Void, Void, Bitmap> {
private ImageView ivPic;
private String url;
public DownTask(ImageView ivPic, String url) {
this.ivPic = ivPic;
this.url = url;
}
@Override
protected Bitmap doInBackground(Void... params) {
Bitmap bitmap = null;
HttpURLConnection conn = null;
try {
// SystemClock.sleep(1000);
conn = (HttpURLConnection) new URL(url).openConnection();
conn.setConnectTimeout(15000);// 连接超时
conn.setReadTimeout(15000);// 读取超时 已连接
conn.setRequestMethod("GET");
conn.connect();// 连接
int responseCode = conn.getResponseCode();// 获取响应吗
if (responseCode == 200) {
// 返回正常
InputStream inputStream = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
conn.disconnect();
}
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if (bitmap != null) {
ivPic.setImageBitmap(bitmap);
}
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
}
}