本文实例讲述了Android编程实现下载图片及在手机中展示的方法。分享给大家供大家参考,具体如下:

在项目开发中从互联网上下载图片是经常用到的功能,再次总结一下
1.普通的下载方式
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:src="@drawable/icon" android:layout_width="wrap_content" android:id="@+id/imgPic" android:layout_gravity="center|center_vertical" android:layout_height="fill_parent"> </ImageView> </LinearLayout>
java文件
public class DownloadImage extends Activity {
private ImageView imgPic;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.download_image);
imgPic = (ImageView) findViewById(R.id.imgPic);
String url = "http://ww1.sinaimg.cn/bmiddle/6834c769jw1djjf4p3p9rj.jpg";
loadRmoteImage(url);
}
/**
* @param imgUrl
* 远程图片文件的URL
*
* 下载远程图片
*/
private void loadRmoteImage(String imgUrl) {
URL fileURL = null;
Bitmap bitmap = null;
try {
fileURL = new URL(imgUrl);
} catch (MalformedURLException err) {
err.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) fileURL
.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
int length = (int) conn.getContentLength();
if (length != -1) {
byte[] imgData = new byte[length];
byte[] buffer = new byte[512];
int readLen = 0;
int destPos = 0;
while ((readLen = is.read(buffer)) > 0) {
System.arraycopy(buffer, 0, imgData, destPos, readLen);
destPos += readLen;
}
bitmap = BitmapFactory.decodeByteArray(imgData, 0,
imgData.length);
}
} catch (IOException e) {
e.printStackTrace();
}
imgPic.setImageBitmap(bitmap);
}
2.带进度条的下载
有时候网络差,或者是图片太大,会出现黑屏的情况,用户体验比较差,那么增加一个进度条是提高用户体验的好方法
/**
* @author xushilin xsl xushilin@kingtoneinfo.com
* @version: 创建时间:2011-7-27 下午02:55:56
* 说 明: android中下载图片
* 修改历史:
*/
public class DownloadImage extends Activity {
private ImageView imgPic;
private ProgressBar progressBar;
private int totalSize=0;
private int size=0;
private Handler mHandler;
String url = "http://ww1.sinaimg.cn/bmiddle/6834c769jw1djjf4p3p9rj.jpg";
private Bitmap bitmap=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.download_image);
imgPic = (ImageView) findViewById(R.id.imgPic);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setProgress(getProgressInt(progressBar.getMax()));
mHandler = new Handler() {
public void handleMessage(Message msg) {
progressBar.setProgress(getProgressInt(progressBar.getMax()));
if(bitmap!=null){
imgPic.setImageBitmap(bitmap);
}
}
};
new Thread(){
public void run(){
loadRmoteImage(url);
}
}.start();
}
/**
* @param imgUrl
* 远程图片文件的URL
*
* 下载远程图片
*/
private void loadRmoteImage(String imgUrl) {
URL fileURL = null;
try {
fileURL = new URL(imgUrl);
} catch (MalformedURLException err) {
err.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) fileURL
.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
int length = (int) conn.getContentLength();
totalSize=length;
if (length != -1) {
byte[] imgData = new byte[length];
byte[] buffer = new byte[512];
int readLen = 0;
int destPos = 0;
while ((readLen = is.read(buffer)) > 0) {
System.arraycopy(buffer, 0, imgData, destPos, readLen);
destPos += readLen;
size=destPos;
mHandler.sendEmptyMessage(1);
Thread.sleep(100);
}
bitmap = BitmapFactory.decodeByteArray(imgData, 0,
imgData.length);
mHandler.sendEmptyMessage(1);
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private int getProgressInt(int max) {
int result = (totalSize > 0) ? (int) (size * max * 1.0 / totalSize) : 0;
return result;
}
}
效果如下:
下载过程:
下载完成:
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# 下载图片
# 手机
# 展示
# Android 实现单线程轮循机制批量下载图片
# Android异步下载图片并且缓存图片到本地DEMO详解
# Android带进度条的下载图片示例(AsyncTask异步任务)
# Android使用AsyncTask下载图片并显示进度条功能
# Android实现多线程下载图片的方法
# Android使用okHttp(get方式)下载图片
# Android DownloadMananger管理器实现下载图片功能
# 进阶
# 进度条
# 相关内容
# 感兴趣
# 太大
# 给大家
# 或者是
# 互联
# 更多关于
# 解决方法
# 所述
# 在手
# 图像处理
# 程序设计
# 黑屏
# 机中
# 下午
# 下载完成
# 讲述了
相关文章:
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
建站VPS推荐:2025年高性能服务器配置指南
昆明高端网站制作公司,昆明公租房申请网上登录入口?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
浅谈Javascript中的Label语句
如何用VPS主机快速搭建个人网站?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
建站VPS能否同时实现高效与安全翻墙?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
c++ stringstream用法详解_c++字符串与数字转换利器
定制建站模板如何实现SEO优化与智能系统配置?18字教程
昆明网站制作哪家好,昆明公租房申请网上登录入口?
如何快速生成ASP一键建站模板并优化安全性?
代购小票制作网站有哪些,购物小票的简要说明?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
高端建站如何打造兼具美学与转化的品牌官网?
内部网站制作流程,如何建立公司内部网站?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
股票网站制作软件,网上股票怎么开户?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何快速生成橙子建站落地页链接?
建站主机选哪家性价比最高?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
在线制作视频网站免费,都有哪些好的动漫网站?
如何做网站制作流程,*游戏网站怎么搭建?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
电商平台网站制作流程,电商网站如何制作?
PHP正则匹配日期和时间(时间戳转换)的实例代码
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
网站网页制作专业公司,怎样制作自己的网页?
广平建站公司哪家专业可靠?如何选择?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
,网站推广常用方法?
javascript中对象的定义、使用以及对象和原型链操作小结
电商网站制作价格怎么算,网上拍卖流程以及规则?
重庆市网站制作公司,重庆招聘网站哪个好?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何在橙子建站上传落地页?操作指南详解
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何生成腾讯云建站专用兑换码?
,如何利用word制作宣传手册?
如何续费美橙建站之星域名及服务?
如何在阿里云虚拟服务器快速搭建网站?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
高防服务器租用首荐平台,企业级优惠套餐快速部署
*请认真填写需求信息,我们会在24小时内与您取得联系。