笔记如下
显示网络图片
<uses-permission android:name="android.permission.INTERNET"/>
private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
//取出消息中的数据
Bitmap bitmap = (Bitmap) msg.obj;
iv.setImageBitmap(bitmap);
};
};
new Thread(){
public void run() {
try {
URL url = new URL(path);
// http://www.itheima.com/images_new/logo.jpg --由于这里 使用的 是 http协议去 获得连接, 所以获得的是
// HttpURLConnection 的一个 实例
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//连接网络的时候, 有很多 不确定性...
// 为了提供用户的感受, 会 设置一个 连接 超时的 时间
conn.setConnectTimeout(5000);
//设置请求的方式
conn.setRequestMethod("GET");
//拿到 返回的数据的类型
String contentType = conn.getContentType();
//数据的长度
int length = conn.getContentLength();
System.out.println("contentType :" + contentType);
System.out.println("length :" + length);
// Tengine/2.0.2
// conn.getHeaderField("Server");
// 获得 服务器 返回的 状态吗 , 根据 状态码 去判断 是否 成功
int code = conn.getResponseCode();
// 200 , 404 ,500, 302, 304 ..
if(code==200){
//进来 则表示 成功的处理的 请求, 返回了 数据
// 获得返回的图片的 流数据
InputStream in = conn.getInputStream();
//这已经是图片了
Bitmap bitmap = BitmapFactory.decodeStream(in);
iv.setImageBitmap(bitmap);
//子线程中发一个消息 出去
Message msg = new Message();
msg.obj = bitmap;
//放到 了 消息 队列 , messageQuerue中, 有 循环器looper 去 取出消息 ,
// 然后 再通知 去处理一下
mHandler.sendMessage(msg);
in.close();
}
//这里要连接网络, 会 耗费用户的 money, 所以需要去申请连接网络的权限
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
// 连接网络的api URL类
网友评论