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();// 将得到的数据转化成InputStreamInputStream is = urlConn.getInputStream();// 将InputStream转换成Bitmapbitmap = BitmapFactory.decodeStream(is);is.close();} catch (MalformedURLException e) {// TODO Auto-generated catch blockSystem.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> {@Overrideprotected Boolean doInBackground(String... params) {// TODO Auto-generated method stubSystem.out.println("[downloadImageTask->]doInBackground "+ params[0]);mDownloadImage = HttpUtils.getNetWorkBitmap(params[0]);return true;}// 下载完毕回调@Overrideprotected void onPostExecute(Boolean result) {// TODO Auto-generated method stubimage.setImageBitmap(mDownloadImage);System.out.println("result = " + result);super.onPostExecute(result);}// 更新进度回调@Overrideprotected void onProgressUpdate(Integer... values) {// TODO Auto-generated method stubsuper.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通过url下载图片到手机本地并显示和删除本地ImageUtil工具类
文章目录 布局 Activity BroadcastReceiver 文件工具类 图片工具类 Manifest MyApplication 完成代码下载 这里的demo是一个通过下载地址下载图片文件到 ...
- Android图片上传和下载,android 上传/下载 图片
public class HttpAssist { private static final String TAG = "uploadFile"; private static f ...
- RXJava思维下载图片
目录 为什么要学习RxJava? 什么是响应式编程? RXJava思维下载图片 为什么要学习RxJava? 改变思维(响应式编程思想),编程效率提升 官网:ReactiveX 什么是响应式编程? [根 ...
- 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
. 最新下载 : 2017年 8 月 28 日 : 平台 Android Studio 软件包 大小 SHA-1 校验和 Windows (64 位) android-studio-bundle-16 ...
- 【Android 应用开发】Android 开发环境下载地址
此文章来自于[http://blog.csdn.net/shulianghan/article/details/38023959] 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+ ...
- android imageview 显示资源图片,ImageView显示网络图片资源
Android ImageView如何加载网络图片资源有些事,可以看透,但不要看破;有些人,可以看穿,但不要戳穿;有些话,能不说就沉默,藏在心里更适合;有些伤,能不揭就不提起,无声忘记更明智. 用im ...
- Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片 Android6.0中把Apache HTTP Client所有的包与类都标记为deprecated ...
- android多线程下载图片
很多时候我们需要在Android设备上下载远程服务器上的图片进行显示,今天Android123整理出两种比较好的方法来实现远程图片的下载. 方法一.直接通过Android提供的Http类访问远程 ...
- Android框架——下载图片框架Fresco
版权声明:本文为博主原创文章,未经博主允许不得转载.转载注明出处:Sunzxyong 流行的网络框架 目前流行的网络图片框架: Picasso.Universal Image Loader.Voll ...
最新文章
- 学习笔记第三十一节课
- Springboot .properties或.yml配置文件读取pom.xml文件值
- java url 返回值_java提交url后返回值怎么取
- mybatis笔记之使用Mapper接口注解
- 南丁格尔邮票图片大全_【鉴赏】武夷山普通纪念币鉴赏(高清图片)
- bzoj 2429: [HAOI2006]聪明的猴子(最小生成树)
- DataScience:风控场景之金融评分卡模型构建—将逻辑回归LoR模型结果转为评分卡之详细攻略
- 苹果app的几种发布方式
- 如何写出一份优秀的简历和求职信?
- 判断字符串数组能否首尾相连
- 安卓手机APP 开发
- 上海亚商投顾:三大指数集体调整 消费板块逆市活跃
- CentOS7 通过 cups 与 Windows 共享 HP 1020PLUS 打印机无响应故障处理
- (三)pjsip 监听
- 线程池除了常见的4种拒绝策略
- Windows10下搭建jekyll环境
- 使用matlab制作音乐
- elasticsearch遇到的问题(一) 底层修改同义词典synonyms.txt未生效,将同义词加到分词器也未生效
- JAVA菜鸟成长记——JNDI
- 反渗透设备:反渗透设备工艺先进
热门文章
- 解析IPostBackEventHandler和WebForm的事件机制
- 线程同步--关键代码段(二)
- ElasticSearch7.2只能用localhost访问但不能用IP地址访问---ElasticSearch工作笔记027
- mycat集群执行带有join的sql语句时报错_can‘t find table define in schema_分片join---Linux运维工作笔记052
- C/C++线程与多线程工作笔记0005---c/c++中的wchar_t类型
- DataBseDesign工作笔记002---数据库表设计
- 在GNS3中如何让NETFLOW能够捕获到流量
- java object怎么拿字段_「Java面试秘籍」String不可变,如何理解
- 带父节点的平衡二叉树_平衡二叉树 通俗易懂
- 逻辑表达式是否合法_Linux shell 逻辑运算符、逻辑表达式详解