在Android里面,后台的任务下载功能是非常常用的,比如在APP Store里面下载应用,下载应用时,需要跟用户进行交互,告诉用户当前正在下载以及下载完成等。

今天我将通过使用Android的原生控件 ProgressDialog 来实现一个“模拟后台下载”的效果。实现思路如下:

  1. 用户点击按钮,模拟开始下载

  2. 显示一个进度框,并修改后台界面上的文字,告知用户当前正在下载、需要等待

  3. 开启一个线程,模拟后台下载任务,假设下载需要3秒钟完成,让该线程等待3秒

  4. 线程执行完成后,关闭进度框,并更新界面上的文字,告知用户下载完成

源码如下:

1、主Activity

`public class ProgressDialogDemo extends Activity {

private Button button;

private TextView textView;

private ProgressDialog mDialog;

@Override
protected void onCreate(Bundle onSavedInstance) {
super.onCreate(onSavedInstance);
setContentView(R.layout.progress_dialog_demo); button = findViewById(R.id.buttonProgressDialog);
textView = findViewById(R.id.textView6); button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // 创建并显示进度加载框
mDialog = ProgressDialog.show(ProgressDialogDemo.this,
"Please wait..",
"Calculating in the background...",
true); // 设置文字内容,告诉用户当前正在后台计算
textView.setText("Calculating in the background..."); new Thread() {
@Override
public void run() {
try { // 模拟耗时的后台计算
sleep(3000);
} catch (InterruptedException e) { } finally { // 耗时的后台计算完成,关闭进度框,再次以文字的形式告诉用户
mDialog.dismiss();
refreshTextView();
}
}
}.start();
}
});
} private void refreshTextView() {
textView.post(new Runnable() {
@Override
public void run() { // 需要在主线程去重新设置文字
textView.setText("Done with calculating.");
}
});
}

}`

2、布局文件progress_dialog_demo.xml:

`

<TextView
android:paddingTop="20dp"
android:text="This is a progress dialog demo."
android:layout_width="match_parent"
android:layout_gravity="center"
android:layout_height="wrap_content" android:id="@+id/textView6"/>
<Button
android:text="Start Background Calculating"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:id="@+id/buttonProgressDialog"/>

`

3、效果图如下:(注意看后台界面上文字的变化)

不过,这个 ProgressDialog类从Android 8.0开始被废弃了,因为这个类有个缺点是:

该框显示时,用户无法跟应用进行交互。

建议使用 ProgressBar 或者通知 Notification代替,后面会分享 ProgressBar 的使用。

【Android初级】如何实现一个“模拟后台下载”的加载效果(附源码)的更多相关文章

  1. cesium 入门开发系列矢量瓦片加载展示(附源码下载)

    前言 cesium 入门开发系列环境知识点了解:cesium api文档介绍,详细介绍 cesium 每个类的函数以及属性等等cesium 在线例子 内容概览 cesium 实现矢量瓦片加载效果 源代 ...

  2. 使用 SVG 实现一个漂亮的页面预加载效果

    今天我们要为您展示如何使用 CSS 动画, SVG 和 JavaScript 创建一个简单的页面预加载效果.对于网站来说,这些预载入得画面提供了一种创造性的方法,使用户在等待内容加载的时候不会那么无聊 ...

  3. cesium 实现风场图效果(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  4. Android 音视频深入 十九 使用ijkplayer做个视频播放器(附源码下载)

    项目地址https://github.com/979451341/Myijkplayer 前段时候我觉得FFmpeg做个视频播放器好难,虽然播放上没问题,但暂停还有通过拖动进度条来设置播放进度,这些都 ...

  5. Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)

    http://blog.csdn.net/yanzi1225627/article/details/22222735 如前文所示的TCP局域网传送东西,除了对传输层的TCP/UDP支持良好外,Andr ...

  6. 一个基于jQuery写的弹窗效果(附源码)

    最近项目中频繁遇到需要弹出窗口的功能,一直使用浏览器默认的Alert和Confirm弹窗,感觉视觉效果不是那么好,而从网上下载的话又找不到合适的,找到的话有些也是十分臃肿,有时候感觉学习配置的功夫自己 ...

  7. cesium1.65api版本贴地贴模型标绘工具效果(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  8. openlayers6实现webgl点图层渲染效果(附源码下载)

    前言:openlayers6推出来的有一段时间,推出来的新特性见:https://github.com/openlayers/openlayers/releases/该版本的主要功能是能够组合具有不同 ...

  9. cesium1.63.1api版本贴地贴模型量算工具效果(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材.不少 ...

随机推荐

  1. openstack高可用集群19-linuxbridge结合vxlan

    生产环境,假设我们的openstack是公有云,我们一般的linuxbridge结合vlan的模式相对于大量的用户来说是vlan是不够用的,于是我们引进vxlan技术解决云主机内网网络通讯的问题. 我 ...

  2. 编译nginx增加fair模块

    安装必要的软件 ubuntu里是 apt install wget gcc make zlib1g-dev libpcre3-dev 去官网下载最新稳定版的nginx源码 git clone 源码 g ...

  3. JVM 经典垃圾收集器

    本文部分摘自<深入理解 Java 虚拟机第三版> 概述 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的实践者.Java 虚拟机规范中对垃圾收集器的实现做出规定,因此不同的厂 ...

  4. Android 开源框架 -Toasty

    GitHub地址 用法: 第一步:根目录的 build.gradle: allprojects { repositories { ... maven { url "https://jitpa ...

  5. salesforce零基础学习(九十九)Salesforce Data Skew(数据倾斜)

    本篇参考: https://developer.salesforce.com/blogs/engineering/2013/04/managing-lookup-skew-to-avoid-recor ...

  6. Thymeleaf语法总结 | 笔记分享

    Thymeleaf语法总结 一.Thymeleaf介绍 Thymeleaf是Spring boot推荐使用的模版引擎,直接以html显示,前后端可以很好的分离.   二.Thymeleaf语法(Thy ...

  7. Pytest测试框架(三):pytest fixture 用法

    xUnit style 结构的 fixture用于初始化测试函数, pytest fixture是对传统的 xUnit 架构的setup/teardown功能的改进.pytest fixture为测试 ...

  8. Ubuntu20.04编译ffmpeg

    1.安装编译所需工具,GCC 2.安装yasm nasm yasm和nasm是两个编译器,编译ffmpeg需要用到 安装命令: sudo aptitude install yasm nasm 3.安装 ...

  9. jupyter安装插件Nbextensions,实现代码提示功能(终极方法)

    jupyter安装插件,实现代码提示功能 第一步 pip install jupyter_contrib_nbextensions -i https://mirrors.tuna.tsinghua.e ...

  10. 软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结

    本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款 ...