(黎活明老师讲学)Android学习(一)---从网络获取图片
从网络上下载一张图片,显示在手机上。这是一个耗时的操作,需要继承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学习(一)---从网络获取图片相关推荐
- 3G手机Android应用开发视频教程_黎活明老师的视频(第三天课程)总共有八天课程...
下载地址:http://jiyanet.com/read.php?tid=402 转载于:https://www.cnblogs.com/javaspring/archive/2012/08/21/2 ...
- 3G手机Android应用开发视频教程_黎活明老师的视频(第五天课程)总共有八天课程...
下载地址:http://jiyanet.com/read.php?tid=404 转载于:https://www.cnblogs.com/javaspring/archive/2012/08/22/2 ...
- 3G手机Android应用开发视频教程_黎活明老师的视频下载地址(总共有八天课程)
视频下载地址:http://jiyanet.com/read.php?tid=404
- 让人才不再稀缺,让就业水到渠成 ——记传智播客总裁黎活明
专访简介: 2017年3月21日,"传智专修学院成立大会暨揭牌仪式"在江苏沭阳文化艺术中心隆重举行.江苏宿迁市相关领导.沭阳县相关领导.互联网行业精英.相关媒体.传智播客及传智专修 ...
- android 代码获取图片信息吗,Android 通过网络获取图片的代码
Android 通过网络获取图片的代码 主activity package com.netimg; import android.app.Activity; import android.graphi ...
- android listview网络图片,Android ListView从网络获取图片及文字显示
上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...
- Android ListView从网络获取图片及文字显示
原帖地址:http://blog.csdn.net/wangjinyu501/article/details/8219317 上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从 ...
- Android Volley 库通过网络获取 JSON 数据
本文内容 什么是 Volley 库 Volley 能做什么 Volley 架构 环境 演示 Volley 库通过网络获取 JSON 数据 参考资料 Android 关于网络操作一般都会介绍 HttpC ...
- android 从相册或相机获取图片并且裁剪 支持android 7.0
1.在res/xml目录中新建一个file_paths.xml <?xml version="1.0" encoding="utf-8"?> < ...
- android 查询所有图片和视频,Android系统详解之获取图片和视频的缩略图
从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework的android.media.ThumbnailUtils位置,可以帮助我们从mediaprovi ...
最新文章
- android6.0源码分析之Camera API2.0简介
- Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案
- 【leetcode 简单】第三十八题 两数之和 II - 输入有序数组
- 店铺淘宝双十一活动利润的快速量化。
- java mapxtreme_MapXtreme Java Edition 4.8使用心得(一)
- 2011最犀利语录大全
- 红米手机停在机器人这里_红米开不了机,开机画面一直显示一个米兔机器人在修理的画面...
- Java并发编程与技术内幕:ThreadFactory、ThreadLocal
- tf.estimator.train_and_evaluate 详解
- NDM(Neat Download Manager)删除所有下载记录
- Attention Is All You Need 论文笔记
- windows 10 defender 577的错误处理方法
- 【转】了解webservice
- Python之Django框架(一)
- socks5代理工作流程和原理
- 智能巡检机器人是如何工作的?
- PC微信hook api接口文档
- 黄浩老师cpp平时作业(一)前五道水题
- 企业管理常用缩写术语之中英文对照表(含解释)
- 〖编程初学者的自我修养 - 优质简历篇④〗- 优质简历的撰写技巧之个人信息撰写技巧