007】【网络图片查看器】

Android学习目录项目源码下载网络图片查看器确定图片的网址发送http请求URL url = new URL(address);//获取连接对象,并没有建立连接HttpURLConnection conn = (HttpURLConnection) url.openConnection();//设置连接和读取超时conn.setConnectTimeout(5000);conn.setReadTimeout(5000);//设置请求方法,,注意必须大写conn.setRequestMethod(“GET”);conn.getResponseCode();服务器的图片是以流的形式返回给浏览器的 //拿到服务器返回的输入流InputStream is = conn.getInputStream();//把流里的数据读取出来,并构造成图片Bitmap bm = BitmapFactory.decodeStream(is);把图片设置为ImageView的显示内容ImageView iv = (ImageView) findViewById(R.id.iv);iv.setImageBitmap(bm);添加权限主线程不能被阻塞只有主线程能刷新ui刷新ui的代码只能运行在主线程,运行在子线程是没有任何效果的如果需要在子线程中刷新ui,使用消息队列机制消息队列//消息队列Handler handler = new Handler(){(android.os.Message msg) {}};在子线程中往消息队列里发消息//创建消息对象Message msg = new Message();//消息的obj属性可以赋值任何对象,通过这个属性可以携带数据msg.obj = bm;//what属性相当于一个标签,用于区分出不同的消息,从而运行不能的代码msg.what = 1;//发送消息handler.sendMessage(msg);通过switch语句区分不同的消息public void handleMessage(android.os.Message msg) {switch (msg.what) {//如果是1,说明属于请求成功的消息case 1:ImageView iv = (ImageView) findViewById(R.id.iv);Bitmap bm = (Bitmap) msg.obj;ivcase 2:Toast}}加入缓存图片的功能把服务器返回的流里的数据读取出来,然后通过文件输入流写至本地文件//1.拿到服务器返回的输入流InputStream is = conn.getInputStream();//2.把流里的数据读取出来,并构造成图片FileOutputStream fos = new FileOutputStream(file);byte[] b = new byte[1024];int len = 0;while((len = is.read(b)) != -1){fos.write(b, 0, len);}创建bitmap对象的代码改成Bitmap bm = BitmapFactory.decodeFile(file.getAbsolutePath());每次发送请求前检测一下在缓存中是否存在同名图片,如果存在,则读取缓存获取开源代码的网站</>SmartImageView的使用SmartImageView siv = (SmartImageView) findViewById(R.id.siv);siv.setImageUrl(“http://192.168.1.102:8080/dd.jpg”);

人生就是一次充满未知的旅行,在乎的是沿途的风景,

007】【网络图片查看器】

相关文章:

你感兴趣的文章:

标签云: