通过网络图片地址来访问图片的实现方法!-飞外

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image = (ImageView) findViewById(R.id.img); edit = (EditText) findViewById(R.id.et_net); Button button = (Button) findViewById(R.id.bt_get); button.setOnClickListener(this); * 1.访问网络不能直接放在主方法里面(android.os.NetworkOnMainThreadException),应该放在一个线程里面 * 2. android.view.ViewRootImpl$$CalledFromWrongThreadException: 只能在主线程或者UI线程里面修改视图,应该用通信来解决 @Override public void onClick(View v) final String uri = edit.getText().toString(); //拿到图片的网络地址
//2. 获取网络连接 conn = (HttpURLConnection) url.openConnection(); //这个地方要转换一次,转换为你获取图片的协议连接 //3. 设置请求的一些常用的参数 conn.setConnectTimeout(30000);//设置超时 conn.setDoInput(true); //设置请求可以放服务器写入数据 conn.setReadTimeout(30000); //设置连接去读取数据的超时时间 //4.真正请求图片,然后把从网络上请求到的二进制流保存到了inputStream里面 conn.connect(); InputStream in = conn.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(in); //BitMap的图片工厂,创建出一个图片 //5. 关闭连接 return bitmap; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally //5. 关闭连接 if(null != conn) conn.disconnect(); return null;}