从网络上下载一张图片,显示在手机上。这是一个耗时的操作,需要继承AsyncTask。

先写一个工具类,用来获取输入流中的数据

public class StreamTool {/*** 从输入流中获取数据* @param inStream 输入流* @return* @throws Exception*/public static byte[] readInputStream(InputStream inStream) throws Exception{ByteArrayOutputStream outStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while( (len=inStream.read(buffer)) != -1 ){outStream.write(buffer, 0, len);}inStream.close();return outStream.toByteArray();}
}

在写一个业务类,用来获取图片。因为联网下载图片是耗时操作,所以不能放在UI线程之中,我们得开辟一个新线程来完成下载图片的操作。

public class ImageService extends AsyncTask<Void,  Void, byte[]> {private String path;private ImageView imageView;public ImageService(String path,ImageView imageView) {super();this.path = path;this.imageView = imageView;}public static byte[] getImage(String path){ try {URL url = new URL(path);HttpURLConnection conn;conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5 * 1000);InputStream inStream = conn.getInputStream();// 通过输入流获取图片数据return StreamTool.readInputStream(inStream);// 得到图片的二进制数据} catch (Exception e) {e.printStackTrace();}return null;}@Overrideprotected byte[] doInBackground(Void... params) {byte[] data = ImageService.getImage(path);return data;}@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();}@Overrideprotected void onPostExecute(byte[] result) {// TODO Auto-generated method stubsuper.onPostExecute(result);Bitmap bitmap = BitmapFactory.decodeByteArray(result, 0,result.length);// 生成位图imageView.setImageBitmap(bitmap);// 显示图片}@Overrideprotected void onProgressUpdate(Void... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}
}

继承AsyncTask类,有三个参数。

第一个代表:doInBackground()方法中的参数的类型

第二个代表:onProgressUpdate()方法中的参数类型

第三个代表:doInBackground()方法的返回类型和onPostExectu()方法的参数类型

主线程中的方法

public class MainActivity extends Activity {private EditText pathText;private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);pathText = (EditText) this.findViewById(R.id.urlpath);imageView = (ImageView) this.findViewById(R.id.imageView);Button button = (Button) this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String path = pathText.getText().toString();ImageService imageService = new ImageService(path,imageView);imageService.execute();
//              Toast.makeText(MainActivity.this, "连接超时", Toast.LENGTH_LONG).show();
//              try {
//                  byte[] data = ImageService.getImage(path);
//                  Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
//                          data.length);// 生成位图
//                  imageView.setImageBitmap(bitmap);// 显示图片
//              } catch (Exception e) {
//                  Toast.makeText(MainActivity.this, "连接超时", Toast.LENGTH_LONG).show();
//                  Log.e(TAG, e.toString());
//              }}});}}

(黎活明老师讲学)Android学习(一)---从网络获取图片相关推荐

  1. 3G手机Android应用开发视频教程_黎活明老师的视频(第三天课程)总共有八天课程...

    下载地址:http://jiyanet.com/read.php?tid=402 转载于:https://www.cnblogs.com/javaspring/archive/2012/08/21/2 ...

  2. 3G手机Android应用开发视频教程_黎活明老师的视频(第五天课程)总共有八天课程...

    下载地址:http://jiyanet.com/read.php?tid=404 转载于:https://www.cnblogs.com/javaspring/archive/2012/08/22/2 ...

  3. 3G手机Android应用开发视频教程_黎活明老师的视频下载地址(总共有八天课程)

    视频下载地址:http://jiyanet.com/read.php?tid=404

  4. 让人才不再稀缺,让就业水到渠成 ——记传智播客总裁黎活明

    专访简介: 2017年3月21日,"传智专修学院成立大会暨揭牌仪式"在江苏沭阳文化艺术中心隆重举行.江苏宿迁市相关领导.沭阳县相关领导.互联网行业精英.相关媒体.传智播客及传智专修 ...

  5. android 代码获取图片信息吗,Android 通过网络获取图片的代码

    Android 通过网络获取图片的代码 主activity package com.netimg; import android.app.Activity; import android.graphi ...

  6. android listview网络图片,Android ListView从网络获取图片及文字显示

    上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...

  7. Android ListView从网络获取图片及文字显示

    原帖地址:http://blog.csdn.net/wangjinyu501/article/details/8219317 上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从 ...

  8. Android Volley 库通过网络获取 JSON 数据

    本文内容 什么是 Volley 库 Volley 能做什么 Volley 架构 环境 演示 Volley 库通过网络获取 JSON 数据 参考资料 Android 关于网络操作一般都会介绍 HttpC ...

  9. android 从相册或相机获取图片并且裁剪 支持android 7.0

    1.在res/xml目录中新建一个file_paths.xml <?xml version="1.0" encoding="utf-8"?> < ...

  10. android 查询所有图片和视频,Android系统详解之获取图片和视频的缩略图

    从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework的android.media.ThumbnailUtils位置,可以帮助我们从mediaprovi ...

最新文章

  1. android6.0源码分析之Camera API2.0简介
  2. Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案
  3. 【leetcode 简单】第三十八题 两数之和 II - 输入有序数组
  4. 店铺淘宝双十一活动利润的快速量化。
  5. java mapxtreme_MapXtreme Java Edition 4.8使用心得(一)
  6. 2011最犀利语录大全
  7. 红米手机停在机器人这里_红米开不了机,开机画面一直显示一个米兔机器人在修理的画面...
  8. Java并发编程与技术内幕:ThreadFactory、ThreadLocal
  9. tf.estimator.train_and_evaluate 详解
  10. NDM(Neat Download Manager)删除所有下载记录
  11. Attention Is All You Need 论文笔记
  12. windows 10 defender 577的错误处理方法
  13. 【转】了解webservice
  14. Python之Django框架(一)
  15. socks5代理工作流程和原理
  16. 智能巡检机器人是如何工作的?
  17. PC微信hook api接口文档
  18. 黄浩老师cpp平时作业(一)前五道水题
  19. 企业管理常用缩写术语之中英文对照表(含解释)
  20. 〖编程初学者的自我修养 - 优质简历篇④〗- 优质简历的撰写技巧之个人信息撰写技巧

热门文章

  1. 网络原理考试到ADSL上网原理
  2. 百度地图(地图生成)
  3. ubuntu 下安装 qq wechat VirtualBox notepadqq
  4. 第01课:敏捷教练和 ScrumMaster 基本功四部曲(iPad 版)
  5. HTML特效代码大全
  6. Facebook承诺为普通市民提供1500套住房
  7. Python自定义豆瓣电影种类,排行,点评的爬取与存储(基础)
  8. 阿里腾讯裁员、最高30%?计算机行业前景到底如何...
  9. AIOps对监控报警架构的挑战
  10. ELK抓取AWS-ELB日志的logstash配置文件