<h2><pre name="code" class="html" style="font-weight: bold; font-size: 24px;">

一、注意点:连接对象获取,请求方法“GET”,资源获取超时设置,建立连接,通过连接获取输入流,采用谷歌API:BitmapFactory得到图片对象Bitmap。

public Bitmap getInternetPicture(String UrlPath) {Bitmap bm = null;// 1、确定网址// http://pic39.nipic.com/20140226/18071023_164300608000_2.jpgString urlpath = UrlPath;// 2、获取Uritry {URL uri = new URL(urlpath);// 3、获取连接对象、此时还没有建立连接HttpURLConnection connection = (HttpURLConnection) uri.openConnection();// 4、初始化连接对象// 设置请求的方法,注意大写connection.setRequestMethod("GET");// 读取超时connection.setReadTimeout(5000);// 设置连接超时connection.setConnectTimeout(5000);// 5、建立连接connection.connect();// 6、获取成功判断,获取响应码if (connection.getResponseCode() == 200) {// 7、拿到服务器返回的流,客户端请求的数据,就保存在流当中InputStream is = connection.getInputStream();// 8、从流中读取数据,构造一个图片对象GoogleAPIbm = BitmapFactory.decodeStream(is);// 9、把图片设置到UI主线程// ImageView中,获取网络资源是耗时操作需放在子线程中进行,通过创建消息发送消息给主线程刷新控件;Log.i("", "网络请求成功");} else {Log.v("tag", "网络请求失败");bm = null;}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return bm;}

二、 同时要注意网络操作需在子线程操作,以免引起主线程阻塞,影响用途体验,同时采用handler消息机制进行参数处理,刷新UI控件。

public void onClick(View v){new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubString urlpath = "http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg";Bitmap bm = getInternetPicture(urlpath);Message msg = new Message();// 把bm存入消息中,发送到主线程msg.obj = bm;handler.sendMessage(msg);}}).start();}</span>

三、 主线程处理消息队列中的消息,并刷新相应UI控件

Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {ImageView imgView = (ImageView) findViewById(R.id.internet_imageview);imgView.setImageBitmap((Bitmap) msg.obj);};};</span>

四、获取网络图片,采用缓存保存文件

<span style="font-size:18px;">public Bitmap getInternetPicture(String UrlPath) {Bitmap bm = null;// 1、确定网址// http://pic39.nipic.com/20140226/18071023_164300608000_2.jpgString urlpath = UrlPath;// 2、获取Uritry {URL uri = new URL(urlpath);// 3、获取连接对象、此时还没有建立连接HttpURLConnection connection = (HttpURLConnection) uri.openConnection();// 4、初始化连接对象// 设置请求的方法,注意大写connection.setRequestMethod("GET");// 读取超时connection.setReadTimeout(5000);// 设置连接超时connection.setConnectTimeout(5000);// 5、建立连接connection.connect();// 6、获取成功判断,获取响应码if (connection.getResponseCode() == 200) {// 7、拿到服务器返回的流,客户端请求的数据,就保存在流当中InputStream is = connection.getInputStream();// 8、开启文件输出流,把读取到的字节写到本地缓存文件File file = new File(getCacheDir(), getFileName(urlpath));FileOutputStream fos = new FileOutputStream(file);int len = 0;byte[] b = new byte[1024];while ((len = is.read(b)) != -1) {fos.write(b, 0, len);}fos.close();is.close();//9、 通过图片绝对路径,创建Bitmap对象bm = BitmapFactory.decodeFile(file.getAbsolutePath());Log.i("", "网络请求成功");} else {Log.v("tag", "网络请求失败");bm = null;}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return bm;}public String getFileName(String path) {int index = path.lastIndexOf("/");return path.substring(index + 1);}
}</span>

Android 如何根据网络地址获取网络图片方法相关推荐

  1. android获取网络图片方法,Android获取网络图片并显示的方法

    本文实例为大家分享了Android获取网络图片并显示的具体代码,供大家参考,具体内容如下 使用 HttpURLConnection 获得连接,再使用 InputStream 获得图片的数据流,通过 B ...

  2. Android通过手机GPS获取经纬度方法

    android 调用gps获取经纬度的方法大同小异,实则差不了多少.但是使用起来,有的方法看起来很冗杂,而且很不好用.下面为大家介绍中很简单的方法,而且是实时监听位置的变化. 首先定义: privat ...

  3. php接收mq,php的mq客户端获取队列方法改造

    获取mq中消息然后处理失败重试机制: 下面的代码是php连接mq客户端的获取queue队列中的消息代码: public function createDurableSubscriber($queue, ...

  4. Android获取网络图片的三种方法

    在做项目中,获取网络数据是一件很常见的事情,各类数据在服务器端或直接print,或封以实体类扔进List转换为json,由客户端使用HttpClient的execute()方法接收,以完成数据交互的过 ...

  5. Android中获取网络图片的三种方法

    android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Application Not Responding)对话框的情况.对于这种情况,一般的方法就是耗时操作用 ...

  6. android获取网络图片

    2019独角兽企业重金招聘Python工程师标准>>> 资源描述: 关于android获取网络图片主要是把网络图片的数据流读入到内存中然后用 1.Bitmap bitMap = Bi ...

  7. Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理

    Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理 目录 Android Studi ...

  8. Android View的坐标获取方法

    Android View的坐标获取方法 Android系统中提供了很多方法来获取view的坐标值,相对距离等,但是方法多在使用上就容易产生混淆,这里总结下自己学到的知识,分享给有需要的人. 如图所示: ...

  9. Android中如何根据图片url路径来获取网络图片

    原文地址:Android中如何根据图片url路径来获取网络图片 1.根据图片的URL路径来获取网络图片,核心代码如下: public static Bitmap getBitmap(String pa ...

最新文章

  1. linux下Tomcat开机自动启动!
  2. 【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )
  3. 单个APP接入多个微信支付宝支付的一种解决方案
  4. python 批量读取文件夹的动漫美女图并显示
  5. php 根据坐标计算范围内,php计算经纬度是否在区域内
  6. 滑动验证前端代码实现
  7. java自动化执行javascript,Js代码执行__实现自动化
  8. hdu 1800 Flying to the Mars
  9. C++ const用法
  10. jQuery addClass
  11. php smarty 翻译标签,Smarty自定义block标签
  12. (丝滑版)Python使用Opencv画一个哆啦A梦(动态),并制作成可执行文件.exe
  13. 各省简称 拼音 缩写_中国省市县地区首字母缩写
  14. win2003系统优化[全集,很详细]
  15. zzulioj1096c语言版答案,郑州轻工业大学oj题解(c语言)1096:水仙花数(函数专题)...
  16. Motrix - 清爽开源免费的全能下载工具 (跨平台、支持 BT / 磁力链 / 百度网盘)
  17. 清华梦的粉碎—写给清华大学的退学申请 2005.9.22
  18. SDUT-2933-人活着系列之Streetlights (Kruskal)
  19. java多线程之Callable接口
  20. 我们这一代人的困惑 --转自于宙TEDx大会上的演讲

热门文章

  1. 【Java语法基础-面试题】Java 语言有哪些特点
  2. CAD恢复被删除的实体
  3. T6账簿打印显示打印机缺纸
  4. 卷积网络和卷积神经网络,卷积神经网络三大特点
  5. 通过twitterAPI获取twitter数据(基本方法、步骤)
  6. Sentinel 工作主流程
  7. python如何给字加颜色_python之如何输出带颜色的文字
  8. SQL SERVER FOR XML PATH 用法
  9. 2023 新年时钟倒计时html源码 修改版
  10. KDB+性能分析:内存篇