将网址转换为NetworkOnMainThreadException中的位图
这个问题在这里已经有了答案:
只需按照以下步骤操作
public class MyAsync extends AsyncTask<Void, Void, Bitmap>{
@Override
protected Bitmap doInBackground(Void... params) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
现在从url访问位图,如下所示 -
MyAsync obj = new MyAsync(){
@Override
protected void onPostExecute(Bitmap bmp) {
super.onPostExecute(bmp);
Bitmap bm = bmp;
LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setLayoutParams(new AbsListView.LayoutParams(250, 250));
layout.setGravity(Gravity.CENTER);
ImageView imageView = new ImageView(getApplicationContext());
imageView.setLayoutParams(new AbsListView.LayoutParams(220, 220));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageBitmap(bm);
layout.addView(imageView);
}
};
然后最终执行AsynTask -
obj.execute();
你不应该在你的主线程中进行任何网络调用,就像ankit所说的那样。你在OnCreate()方法中写了所有东西,而是使用AsyncTask。
我建议你去排队NetworkImageView或通用图像加载器。
直接从服务器显示图像。
尝试这个
URL url = new URL("http://....");
Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
只需替换你的Url它为我工作
链接地址: http://www.djcxy.com/p/29545.html