ImageView设置网络图片
(2023-06-26 17:31:31)
方案一:读取网络图片的inputStream,然后传给bitmap,再显示在imageView中,但是实际操作的时候,提示错误:android.os.NetworkOnMainThreadException(是因为现在网络请求不允许在主线程main中执行,要另外开辟一个子线程进行)
下面是出错的将网络图片转成bitmap的方法
//将网络图片转换成bitmap
public
Bitmap getHttpBitmap(String url) {
URL httpUrl = null;
Bitmap bitmap = null;
try {
httpUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)
httpUrl.openConnection();
conn.setConnectTimeout(6000);
conn.setDoInput(true);
conn.setUseCaches(false);
InputStream in = conn.getInputStream();//这行报错
bitmap = BitmapFactory.decodeStream(in);
in.close();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this,"系统繁忙,请稍后再试",Toast.LENGTH_SHORT).show();
}
return bitmap;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
下面是修改后的方法:直接开辟一个子线程,然后在里面设置网络图片,并在onCreate中调用该方法即可
public void setNetworkBitmap() {
Runnable networkImg = new Runnable() {
@Override