Android使用HttpURLConnection下载图片
讲到http就必须要了解URI和URL
URI (uniform resource identifier)统一资源标志符;
URL(uniform resource location )统一资源定位符(或统一资源定位器);
能够理解成URL是URI的子集,URI是一抽象的标识符,URL能够理解成详细的标识符;仅仅要是网络上的资源就能找到唯一的URL。
文件夹结构
效果图
关键代码
HttpUtils.java类
- package com.dzt.downloadimage.utils;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- /**
- * http工具类 http能够使用HttpURLConnection或HttpClient
- *
- * @author Administrator
- * @date 2014.05.10
- * @version V1.0
- */
- public class HttpUtils {
- /**
- * 获取网络图片
- *
- * @param urlString
- * 如:http://f.hiphotos.baidu.com/image/w%3D2048/sign=3
- * b06d28fc91349547e1eef6462769358
- * /d000baa1cd11728b22c9e62ccafcc3cec2fd2cd3.jpg
- * @return
- * @date 2014.05.10
- */
- public static Bitmap getNetWorkBitmap(String urlString) {
- URL imgUrl = null;
- Bitmap bitmap = null;
- try {
- imgUrl = new URL(urlString);
- // 使用HttpURLConnection打开连接
- HttpURLConnection urlConn = (HttpURLConnection) imgUrl
- .openConnection();
- urlConn.setDoInput(true);
- urlConn.connect();
- // 将得到的数据转化成InputStream
- InputStream is = urlConn.getInputStream();
- // 将InputStream转换成Bitmap
- bitmap = BitmapFactory.decodeStream(is);
- is.close();
- } catch (MalformedURLException e) {
- // TODO Auto-generated catch block
- System.out.println("[getNetWorkBitmap->]MalformedURLException");
- e.printStackTrace();
- } catch (IOException e) {
- System.out.println("[getNetWorkBitmap->]IOException");
- e.printStackTrace();
- }
- return bitmap;
- }
- }
使用到网络必须要加入权限和要有网络,否则下载失败
- <uses-permission android:name="android.permission.INTERNET" />
下载属于耗时的操作,假设放在UI线程出easy出现ANR;所以Android4.0之后对网络的操作不能放在UI线程,在这里我把下载放在AsyncTask处理。
- class downloadImageTask extends AsyncTask<String, Integer, Boolean> {
- @Override
- protected Boolean doInBackground(String... params) {
- // TODO Auto-generated method stub
- System.out.println("[downloadImageTask->]doInBackground "
- + params[0]);
- mDownloadImage = HttpUtils.getNetWorkBitmap(params[0]);
- return true;
- }
- // 下载完毕回调
- @Override
- protected void onPostExecute(Boolean result) {
- // TODO Auto-generated method stub
- image.setImageBitmap(mDownloadImage);
- System.out.println("result = " + result);
- super.onPostExecute(result);
- }
- // 更新进度回调
- @Override
- protected void onProgressUpdate(Integer... values) {
- // TODO Auto-generated method stub
- super.onProgressUpdate(values);
- }
- }
在onPostExecute和onProgressUpdate能够方便我们更新UI,当然也能够开一个线程处理,使用AsyncTask就更方便。
完整Demo:http://download.csdn.net/detail/deng0zhaotai/7326005
网络上一个不错的资源:http://square.github.io/okhttp/
OkHttp是Square的一款产品,是一个Java的开源HTTP和SPDYclient开发包,支持Android。Android自带的两个HTTP框架(HttpURLConnection和HttpClient),在各种Android OS版本号一直充斥着错误,能够使不论什么理智的开发人员走向崩溃。只是幸运地是,OkHttp攻克了这些问题。OkHttp是建立在HttpUrlConnection上,从Android代码库保持最新的修复,这意味着再也没有与旧操作系统版本号出现兼容性问题的噩梦
Android使用HttpURLConnection下载图片的更多相关文章
- Android采用HttpClient下载图片
在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...
- 使用HttpURLConnection下载图片
import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.Ht ...
- Android 本地/网路下载图片实现放大缩小
Android 本地加载/网路下载图片实现放大缩小拖拉效果,自定义控件. package com.example.ImageViewCustom; import android.app.Activi ...
- Android测试AsyncTask下载图片
package com.example.myact8_async; import org.apache.http.HttpEntity; import org.apache.http.HttpResp ...
- android 多线程 AsyncTask 下载图片
AsyncTask 下载图片 package com.test.network; import android.graphics.Bitmap; import android.graphics.Bit ...
- 通过HttpURLConnection下载图片到本地--下载附件
一.背景说明 现在我做的系统中,需要有一个下载附件的功能,其实就是下载图片到本地中.相应的图片保存在多媒体系统中,我们只能拿到它的资源地址(url),而不是真实的文件. 这里记录的是下载单个图片.下篇 ...
- 通过HttpURLConnection下载图片到本地--批量下载
一.背景说明 这篇文章讲述的是批量下载附件,在上一篇文章中,介绍了下载单个附件(上一篇文章). 二.实现思路 主要的实现思路:创建文件夹->文件夹中创建需要下载的文件->压缩文件夹-> ...
- Android 使用AsyncTask 下载图片的例子,学会使用AsyncTask
1.添加布局文件:activity_main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res ...
- HttpURLConnection下载图片的两种方式
public class MainActivity extends AppCompatActivity { private ImageView iv; private String imageurl ...
随机推荐
- 关于使用X-UA-Compatible来设置IE浏览器兼容模式
原文地址:http://www.cnblogs.com/nidilzhang/archive/2010/01/09/1642887.html 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外 ...
- 期望dp专题
一直不明白为什么概率是正推,期望是逆推. 现在题目做多了,慢慢好像有点明白了 poj2096 收集bug, 有n个种类的bug,和s个子系统. 每找到一个bug需要一天. 要我我们求找到n个种类的 ...
- windows phone 页面导航(6)
原文:windows phone 页面导航(6) 页面导航的例子我们使用的是两个页面,从第一个页面(MainPage)导航到第二个页面(SecondPage),然后可以从第二个页面导航到第一个页面 , ...
- Trie图
AC自动机是KMP的多串形式,当文本串失配时,AC自动机的fail指针告诉我们应该跳到哪里去继续匹配(跳到当前匹配串的最长后缀去),所以AC自动机的状态是有限的 但是AC自动机具有不确定性, 比如要求 ...
- [Elasticsearch] 邻近匹配 (三) - 性能,关联单词查询以及Shingles
提高性能 短语和邻近度查询比简单的match查询在性能上更昂贵.match查询仅仅是查看词条是否存在于倒排索引(Inverted Index)中,而match_phrase查询则须要计算和比較多个可能 ...
- 【Linux驱动】TQ2440 LED驱动程序
★整体介绍 LED驱动程序主要实现了TQ2440开发板上的4个LED灯的硬件驱动,实现了对引脚GPIOB5.GPIOB6.GPIOB7.GPIOB8的高低电平设置(common-smdk.c中已经实现 ...
- HDU 3036 Escape 网格图多人逃生 网络流||二分匹配 建图技巧
题意: 每一个' . '有一个姑娘, E是出口,'.'是空地 , 'X' 是墙. 每秒钟每一个姑娘能够走一步(上下左右) 每秒钟每一个出口仅仅能出去一个人 给定n*m的地图, 时限T 问全部姑娘是否能 ...
- 关于mysql主从复制的概述与分类(转)
一.概述: 按照MySQL的同步复制特点,大体上可以分为三种类别: 1.异步复制: 2.半同步复制: 3.完全同步的复制: -------------------------------------- ...
- NYOJ710 外星人的供给站 【贪心】
外星人的供给站 时间限制:1000 ms | 内存限制:65535 KB 难度: 描写叙述 外星人指的是地球以外的智慧生命.外星人长的是不是与地球上的人一样并不重要,但起码应该符合我们眼下对生命基 ...
- 源码安装apache及配置转发
一. 安装Apache a) 解压:tar -xvf httpd-*; b) ./configure --prefix=/usr/oracle/apache CC="gcc ...