XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".HtttpPicActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="获取"
android:id="@+id/img_get"
/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/diglett"
android:id="@+id/img_url"
/>
</LinearLayout>
JAVA
package com.example.network;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.net.HttpURLConnection;
import java.net.URL;
public class HtttpPicActivity extends AppCompatActivity {
public static final String HTTP_URL = "https://img2.mukewang.com/5adfee7f0001cbb906000338-240-135.jpg";
public static final int CODE = 100005;
public static final int SERVER_ERROR = 100006;
private Button mImgGet;
private ImageView mImgUrl;
private MyHandler myHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_htttp_pic);
mImgGet = (Button) findViewById(R.id.img_get);
mImgUrl = (ImageView) findViewById(R.id.img_url);
myHandler = new MyHandler(this);
mImgGet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread() {
@Override
public void run() {
super.run();
try {
Thread.sleep(1000);
getUrlimg(HTTP_URL);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
});
}
public void getUrlimg(String path) {
//把传过来的路径转成URL
try {
URL url = new URL(path);
//获取连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//使用GET方法访问网络
connection.setRequestMethod("GET");
//超时时间为10秒
connection.setConnectTimeout(10000);
//获取返回码
int code = connection.getResponseCode();
if (code == 200) {
InputStream inputStream = connection.getInputStream();
//使用工厂把网络的输入流生产Bitmap
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
//利用Message把图片发给Handler
Message msg = Message.obtain();
msg.obj = bitmap;
msg.what = CODE;
myHandler.sendMessage(msg);
inputStream.close();
} else {
//服务启发生错误
myHandler.sendEmptyMessage(SERVER_ERROR);
}
} catch (IOException e) {
e.printStackTrace();
}
//获取连接
}
public static class MyHandler extends Handler {
final WeakReference<HtttpPicActivity> weakReference;
public MyHandler(HtttpPicActivity activity) {
this.weakReference = new WeakReference<>(activity);
}
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
HtttpPicActivity activity = weakReference.get();
switch (msg.what) {
case CODE:
Bitmap bitmap = (Bitmap) msg.obj;
activity.mImgUrl.setImageBitmap(bitmap);
break;
case SERVER_ERROR:
Toast.makeText(activity, "网络异常", Toast.LENGTH_SHORT).show();
break;
}
}
}
}
AndroidManifest.xml加入访问网络权限
<uses-permission android:name="android.permission.INTERNET" />