这里是做笔记用,不做过多介绍:

1、布局代码:download.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><ProgressBarandroid:id="@+id/progress"android:layout_width="match_parent"android:layout_height="wrap_content"style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"android:layout_marginTop="100dp"android:paddingLeft="20dp"android:paddingRight="20dp"/><TextViewandroid:id="@+id/bf"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="0%"android:layout_gravity="center"/><Buttonandroid:id="@+id/btnStartLoad"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginTop="20dp"android:text="开始下载"/><ImageViewandroid:id="@+id/image"android:layout_width="match_parent"android:layout_height="150dp"android:layout_gravity="center"/></LinearLayout>

2、接下来是Activity代码:

package com.example.weiwenyi.androidtest;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;import com.example.weiwenyi.androidtest.dowmDemo.iview.DownloadListener;
import com.example.weiwenyi.androidtest.dowmDemo.util.DownloadTask;
import com.example.weiwenyi.androidtest.util.Util;import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;public class DownLoadActivity extends AppCompatActivity implements View.OnClickListener, DownloadListener {ProgressBar progressBar;Button btnStartLoad;TextView bf;ImageView image;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.download);progressBar = findViewById(R.id.progress);btnStartLoad = findViewById(R.id.btnStartLoad);bf = findViewById(R.id.bf);image = findViewById(R.id.image);btnStartLoad.setOnClickListener(this);}DownImageTask downLoadAsynctask;@Overridepublic void onClick(View v) {if (v.getId() == R.id.btnStartLoad){downLoadAsynctask = new DownImageTask();downLoadAsynctask.execute("http://img04.muzhiwan.com/2015/06/16/upload_557fd293326f5.jpg");}}String url = "http://pic4.nipic.com/20091217/3885730_124701000519_2.jpg";@RequiresApi(api = Build.VERSION_CODES.N)@Overridepublic void onProgress(int progress) {progressBar.setProgress(progress,true);}@Overridepublic void onSuccess() {Util.showToast("下载完成");}@Overridepublic void onFailed() {Util.showToast("下载失败");}@Overridepublic void onPaused() {Util.showToast("暂停下载");}@Overridepublic void onCanceled() {Util.showToast("关闭下载");}class DownImageTask  extends AsyncTask<String, Integer, Bitmap> {// 执行预处理@Overrideprotected void onPreExecute() {super.onPreExecute();// 显示进度条}// 后台进程的执行@Overrideprotected Bitmap doInBackground(String... params) {Bitmap   bitmap=null;try {URL url = new URL(params[0]);HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 进度条的更新,我这边只是用一个循环来示范,在实际应用中要使用已下载文件的大小和文件总大小的比例来更新for (int i = 1; i <= 10; i++) {publishProgress(i * 10);Thread.sleep(200);}InputStream inputStream = conn.getInputStream();bitmap = BitmapFactory.decodeStream(inputStream);inputStream.close();Log.i("图片","--1---->  " + bitmap);image.setImageBitmap(bitmap);} catch (Exception e) {e.printStackTrace();
//                msg= e.getMessage();}return bitmap;}// 运行于UI线程,对后台任务的结果做出处理,doInBackground方法执行的结果作为此方法的参数@Overrideprotected void onPostExecute(Bitmap result) {super.onPostExecute(result);Log.i("图片","---2--->  " + result);image.setImageBitmap(result);}// 运行于UI线程,如果在doInBackground(Params...)中使用了publishProgress(Progress...),就会触发此方法@Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);bf.setText( ""+ values[0] +"%" );progressBar.setProgress(values[0]);}}
}

运行实现点击下载,显示进度,下载完并在布局下方显示下载的图片

Android实现下载文件(图片)显示进度相关推荐

  1. android下载通知栏,Android开发中实现下载文件通知栏显示进度条

    android开发中实现下载文件通知栏显示进度条. 1.使用asynctask异步任务实现,调用publishprogress()方法刷新进度来实现(已优化) public class myasync ...

  2. Android 下载文件并显示进度条

    2019独角兽企业重金招聘Python工程师标准>>> OK,上一篇文章讲了上传文件到服务端,并显示进度条 那么这边文章主要讲下载文件并显示进度条. 由于简单,所以只上传代码.还是需 ...

  3. 实现在 .net 中使用 HttpClient 下载文件时显示进度

    在 .net framework 中,要实现下载文件并显示进度的话,最简单的做法是使用 WebClient 类.订阅 DownloadProgressChanged 事件就行了. 但是很可惜,WebC ...

  4. 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具

    转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...

  5. C# Winform下载文件并显示进度条

    private void btnDown_Click(object sender, EventArgs e) { DownloadFile("http://localhost:1928/We ...

  6. C#下载文件(可显示进度)的方法实现

    在做WIN FORM程序中经常要使用到升级功能,就需要从服务器上下载最新扔软件程序.如何下载呢?代码实现如下: /// <summary>                 /// c#,. ...

  7. Unity下载文件并显示进度

    public class ItemScript : MonoBehaviour {//异步对象 private WWW downloadOperation; // Use this for initi ...

  8. java 下载文件 进度条_java – 从服务器下载文件时显示进度条

    如果我很了解你,你想显示一个进度条,直到你的服务器准备好发送一个文件,而不是显示蜜蜂下载的文件的进度. 如果是这样,你正在处理艰难的练习.一个可靠的进度条需要知道(相当准确)你在做什么以及需要多长时间 ...

  9. Android Retrofit下载文件进度

    In this tutorial, we'll create an android application which downloads a file from the URL using Retr ...

  10. python实现http下载文件-Python HTTP下载文件并显示下载进度条功能的实现

    下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: im ...

最新文章

  1. java 创建servlet_javaweb02-创建第一个Servlet
  2. Docker系列 五.Docker容器数据卷
  3. FPGA的设计艺术(3)静态时序分析
  4. MySQL导出数据到文件中
  5. EditPlus注册码在线生成,强大
  6. js怎么在一个div中嵌入另一网站_好程序员web前端学习路线分享HTML5常见面试题集锦一...
  7. Codeforces Round #540 (Div. 3)(部分题解)
  8. 字符流读取,乱码问题
  9. 引用另一模板的宏_生信人值得拥有的编程模板Shell
  10. MyBatis学习总结(13)——Mybatis查询之resultMap和resultType区别
  11. VMware相关的缩略语和缩略语
  12. 判断是否为长按_【物流知识】物流配送合理化判断7大标志
  13. 使用NUnit在.Net编程中进行单元测试(转载)
  14. java 中文url转码_对 url 中含有的中文进行转码操作
  15. 【经典详解】<T> T 和 T的用法和区别,public <T> List<T> f(T a){}的详解
  16. 教您用Xshell快速连接远程电脑
  17. 温度转换 python
  18. 好想学python猜谜_有人可以教我猜字谜吗 好想学 怎样才可以学好猜字谜呢
  19. 一个自建的Java命令行解析参数类ArgumentsParser
  20. After Effects Apprentice: 19 Motion Tracking with Cinema 4D Lite After Effects学徒19:运动跟踪与Cinema 4D Li

热门文章

  1. centos6 trouble shooting
  2. 数据库之逻辑设计阶段(候选码、主码、外码、范式…)
  3. Worthington产气荚膜梭菌神经氨酸酶的特征及测定
  4. 英语学习详细笔记(三)代名词
  5. 读书笔记:详解FPGA人工智能的驱动引擎(石侃)
  6. 如何让一幅图片逐渐变淡
  7. [转帖]Tensor是神马?为什么还会Flow?
  8. 北航计算机考研小黑书,不会真有人以为四川大学分数低吧?川大最高分比北航南大最高分还高...
  9. shareSDK判断是否安装微博客户端、qq客户端不好使,或分享无法调起微博、qq客户端。
  10. 华为服务器进入系统怎么退出安全模式,华为手机安全模式怎么解除 华为手机安全模式解除办法...