<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. UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe6 in position 0: ordinal not in range(128)
  2. 清华硕士眼中的2021届算法岗秋招
  3. Linux查看MBR的内容
  4. c枚举类型enum例题_一篇文章让你详细了解Java中Enum枚举类的使用
  5. shell脚本编程学习之路-shell数组
  6. 关于transform的3D变形函数
  7. 6月5日,IBM“云有‘智’,事竟成”大会邀您莅临!
  8. IT-标准化-系列-6.关闭事件跟踪程序
  9. Managed Metadata Service介绍系列 之三
  10. iPhone在华智能机市场份额首次下滑
  11. 大型互联网分布式企业微服务云架构
  12. 44rwx权限45权限说明案例46修改权限
  13. 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字
  14. BGPVRP5.0的10条选路原则,以及NE20的IBGP负载均衡
  15. 改错记录:MyBatis连接MySql数据库对数据表进行操作时报错 Error updating database.
  16. Citrix MCS桌面管理技术解读
  17. MySQL索引优化案例学习总结
  18. java计算机毕业设计服装连锁店后台管理系统MyBatis+系统+LW文档+源码+调试部署
  19. stokes方程matlab,Navier-Stokes matlab 238万源代码下载- www.pudn.com
  20. 3.超简单模仿算术题

热门文章

  1. shell脚本切割字符串、分割字符串(split)
  2. OPPO8.29C++蜜汁题目
  3. FPGA图像处理之 HDR 智能美图
  4. 软件工程导论(第六版) 思维导图全
  5. 萌斗三国服务器维护,FAQ_萌斗三国_九游手机游戏
  6. [Python]Django中间件
  7. 用c语言绘制简单的平面图形
  8. datareader分页
  9. VC6.0软件安装教程
  10. idea中git版本回滚以及git指令回滚