访问网络图片
2015-11-10 18:28
671 查看
public class MainActivity extends Activity implements OnClickListener{ protected static final String TAG = "MainActivity"; ImageView image = null; EditText edit = null; Handler handler = new Handler(){ //接收一个消息 @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what == 1) { Bitmap bitmap = (Bitmap) msg.obj; image.setImageBitmap(bitmap); } } }; @Override 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();//拿到图片的网络地址 new Thread(new Runnable() { @Override public void run() { Bitmap bitmap = getImageFromNet(uri); if(null != bitmap) { Message msg = new Message(); msg.what = 1; //你是谁 msg.obj = bitmap; handler.sendMessage(msg); //发送一个消息 //image.setImageBitmap(bitmap); Log.i(TAG, "========" + bitmap); }else { //Toast.makeText(MainActivity.this, "获取图片失败", 0).show(); } } }).start(); } //返回的不是image了 返回的是bitmap >> 位图 public Bitmap getImageFromNet(String uri) { HttpURLConnection conn = null; try { //1.首先将地址转换为Uri //Uri net_uri = Uri.parse(uri); //这种方式是错误的 URL url = new URL(uri); //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的图片工厂,创建出一个图片 return bitmap; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { //5. 关闭连接 if(null != conn) { conn.disconnect(); } } return null; } }
相关文章推荐
- mac下搭建https服务器
- Android快速SDK(5)联网请求库QuickHttp
- AJAX之XMLHttpRequest对象
- Linux 本地yum源搭建和网络yum源搭建
- HttpUtils注释
- Http请求方式和框架
- xutils的 httpUtils讲解
- beego框架——快速开发go应用的http框架
- httpRequest对象常用的方法
- OpenWRT USB 摄像头 配置网络摄像头
- DICOM:DICOM3.0网络通信协议(续)
- Linux 网络工具之fping
- DICOM:DICOM3.0网络通信协议
- 《TCP/IP高效编程》笔记
- windows访问rhel7的共享,提示“您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限”
- TCP多用户登录
- OpenStack 网络实现:VXLAN 模式
- XMLHttpRequest 请求xml文件,火狐浏览器提示“CROS 头缺少 Access-Control-Allow-Origin”
- Android shell 下 busybox,clear,tcpdump、、众多命令的移植
- 网络安全--最简单的sql注入