讲到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下载图片的更多相关文章

  1. Android采用HttpClient下载图片

    在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...

  2. 使用HttpURLConnection下载图片

    import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.Ht ...

  3. Android 本地/网路下载图片实现放大缩小

     Android 本地加载/网路下载图片实现放大缩小拖拉效果,自定义控件. package com.example.ImageViewCustom; import android.app.Activi ...

  4. Android测试AsyncTask下载图片

    package com.example.myact8_async; import org.apache.http.HttpEntity; import org.apache.http.HttpResp ...

  5. android 多线程 AsyncTask 下载图片

    AsyncTask 下载图片 package com.test.network; import android.graphics.Bitmap; import android.graphics.Bit ...

  6. 通过HttpURLConnection下载图片到本地--下载附件

    一.背景说明 现在我做的系统中,需要有一个下载附件的功能,其实就是下载图片到本地中.相应的图片保存在多媒体系统中,我们只能拿到它的资源地址(url),而不是真实的文件. 这里记录的是下载单个图片.下篇 ...

  7. 通过HttpURLConnection下载图片到本地--批量下载

    一.背景说明 这篇文章讲述的是批量下载附件,在上一篇文章中,介绍了下载单个附件(上一篇文章). 二.实现思路 主要的实现思路:创建文件夹->文件夹中创建需要下载的文件->压缩文件夹-> ...

  8. Android 使用AsyncTask 下载图片的例子,学会使用AsyncTask

    1.添加布局文件:activity_main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res ...

  9. HttpURLConnection下载图片的两种方式

    public class MainActivity extends AppCompatActivity { private ImageView iv; private String imageurl ...

随机推荐

  1. Microsoft Visio 2010 怎样把直线,虚线与箭头之间切换

    我也是第一次接触这个东西,感慨是把箭头变成直线都搞了半天没搞出来,上网搜页没结果,一次偶然我会了,真是老天爷眷顾我,如今把方法给大家分享,欢迎大家不吝赐教. 直线变箭头: 刚開始是直线: 接着选中直线 ...

  2. Matlab实现PCA

    在主成分分析(PCA)中,介绍了PCA的数学原理,其有用Matlab能够非常方便地对矩阵进行操作! 比方,用Matlab求多个样本的协方差矩阵.求矩阵的特征根和特征向量等. 以下介绍用Matlab实现 ...

  3. SVN常见问题及解决方案

    . 隐藏文件.svn目录删除了怎么办 Checkout后,工作空间下.svn目录下有大量隐藏文件,占用比较大的空间,他们是工作空间的管理文件,不能删除,如果不小心删除了也不要抓狂,不会影响服务器端的, ...

  4. Beginning Python From Novice to Professional (4) - 演示样本格式字符串

    $ gedit price.py #!/usr/bin/env python width = input('Please enter width: ') price_width = 10 item_w ...

  5. Mac OS X在建筑Python科学计算环境

    经验(比如这篇日志:http://blog.csdn.net/waleking/article/details/7578517).他们推荐使用Mac Ports这种软件来管理和安装全部的安装包.依照这 ...

  6. java去全半角空格,trim(), replaceAll(" +",""),replaceAll("\\s*", ""), replaceAll(" | ", "")

    JAVA中去掉空格 . String.trim() trim()是去掉首尾空格 .str.replace(" ", ""); 去掉所有空格,包括首尾.中间 St ...

  7. TestThreadPoolExecutor.java

    package           ; import java.io.IOException;import java.io.InputStream;import java.util.List;impo ...

  8. Windows Phone开发(19):三维透视效果

    原文:Windows Phone开发(19):三维透视效果 三维效果也可以叫透视效果,所以,我干脆叫三维透视效果.理论知识少讲,直接用例开场吧,因为这个三维效果其实很简单,比上一节中的变换更省事,不信 ...

  9. C语言cgi(1)

    1Columbia Universitycs3157 – Advanced ProgrammingSummer 2014, Lab #2, 60ish pointsJune 9, 2014Follow ...

  10. malloc功能具体解释

    一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...