实现进度条首先就要知道[AsyncTask],异步任务类
这里推荐这个大佬写的文章,写的很不错

详解Android中AsyncTask的使用

1.xml布局
声明一个显示,两个按钮,一个进度条

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/txt"android:text="还没开始"android:textSize="28sp"android:layout_centerInParent="true"/><!--专门处理进度条 --><ProgressBarandroid:id="@+id/prog"android:layout_width="match_parent"android:layout_height="wrap_content"style="?android:attr/progressBarStyleHorizontal"android:progress="0"android:layout_below="@id/txt"android:layout_marginTop="30dp"/><Buttonandroid:id="@+id/bnt1"android:layout_width="100dp"android:layout_height="80dp"android:src="@drawable/start"android:layout_below="@id/prog"android:layout_marginTop="30dp"android:layout_marginLeft="50dp"android:text="开始"/><Buttonandroid:id="@+id/bnt2"android:layout_width="100dp"android:layout_height="80dp"android:src="@drawable/stop"android:layout_below="@id/prog"android:layout_marginTop="30dp"android:layout_marginLeft="220dp"android:text="暂停"/>
</RelativeLayout>

样式

2.MainActivity
2.1首先要知道异步任务类的使用步骤
2.1.1定义一个AsyncTask子类

    确定参数类型// Params --> execute方法的参数类型,doInBackground方法的参数类型// Progress(进度)-->(pog.setProgress();为int类型) 所有传Integer// Result//因为不需要返回值所以写void
class PogTask extends AsyncTask<Void,Integer,String>{}

2.1.2实例化子类

//首先清楚进度条的运行顺序//onPreExecute(text:加载中)-->doInBackground-->onProgressUpdate-->onPostExecute
// 取消  -->onCancelled
@Override//执行线程任务的页面操作,protected void onPreExecute() {super.onPreExecute();}@Override//不能处理UI操作,处理耗时操作(接受输入参数,返回线程执行结果)protected String doInBackground(Void... voids) {//模拟耗时操作return null;}@Override//在主线程中显示线程任务的执行进度,在doInBackground方法中调用publishProgress()方法会触发该方法protected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);}@Override//接受线程任务的执行结果,将执行结果显示在页面上protected void onPostExecute(String s) {super.onPostExecute(s);}

2.1.3启动方法 -->取消

        @Override//取消(cancel)异步任务时触发该方法protected void onCancelled() {super.onCancelled();}

3.完整代码

public class MainActivity extends AppCompatActivity {//声明变量private Button bnt1,bnt2;private ProgressBar pog;private TextView txt;private PogTask pogTask;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化pogTask = new PogTask();txt = findViewById(R.id.txt);pog = findViewById(R.id.prog);bnt1 = findViewById(R.id.bnt1);bnt2 = findViewById(R.id.bnt2);bnt1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//启动异步任务类if (pogTask.isCancelled()){//判断解决异常问题pogTask = new PogTask();}pogTask.execute();}});bnt2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {pogTask.cancel(true);}});//pog.setProgress();}class PogTask extends AsyncTask<Void,Integer,String>{@Override//执行线程任务的页面操作,protected void onPreExecute() {super.onPreExecute();txt.setText("加载中");}@Override//不能处理UI操作,处理耗时操作(接受输入参数,返回线程执行结果)protected String doInBackground(Void... voids) {//模拟耗时操作(可用随机数)try {for (int i = 1; i <= 100; i++) {publishProgress(i);Thread.sleep(50);   //模拟耗时操作}return "加载完毕";}catch (InterruptedException e){e.printStackTrace();}return null;}@Override//在主线程中显示线程任务的执行进度,在doInBackground方法中调用publishProgress()方法会触发该方法protected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);//用数组pog.setProgress(values[0]);txt.setText("加载中"+values[0]+"%");}@Override//接受线程任务的执行结果,将执行结果显示在页面上protected void onPostExecute(String s) {super.onPostExecute(s);//判空if (s != null){txt.setText(s);}pogTask = new PogTask();}@Override//取消(cancel)异步任务时触发该方法protected void onCancelled() {super.onCancelled();txt.setText("已取消");//并使进度条为0pog.setProgress(0);}}
}

4.实现样式


那么就完成了简易的进度条,Android萌新一枚,有问题望大佬指出,谢谢。

Android实现简单的进度条功能相关推荐

  1. Android超简单的进度条源码

    相信大家都知道,打开程序的时候,需要通过进度条或者图片显示.这个时候很方便给应用程序优质的效果.下面我们来看看是如何实现进度条的代码,原理非常简单. 如图:  下面我们来看一下代码的实现. pack ...

  2. HTML5+CSS+JQuery 实现简单的进度条功能

    样式: <style type="text/css"> .processcontainer2{ width:450px; border:1px solid #6C9C2 ...

  3. html canvas直线进度条,js+HTML5 canvas 实现简单的加载条(进度条)功能示例

    本文实例讲述了js+HTML5 canvas 实现简单的加载条(进度条)功能.分享给大家供大家参考,具体如下: www.jb51.net canvas实现加载条动画 /* * 获取canvas, ca ...

  4. android解压zip文件进度条,Android实现文件解压带进度条功能

    解压的工具类 package com.example.videodemo.zip; public class ZipProgressUtil { /*** * 解压通用方法 * * @param zi ...

  5. Android花样loading进度条(二)-简单环形进度条

    背景 Android花样loading进度条系列文章主要讲解如何自定义所需的进度条,包括水平.圆形.环形.圆弧形.不规则形状等. 本篇我们从圆形进度条讲起,讲简单形式的环形进度条,只有进度色彩,没有进 ...

  6. android qq语音按钮,科技教程:如何在手机QQ中使用新版QQ语音进度条功能?

    如今越来越多的小伙伴对于如何在手机QQ中使用新版QQ语音进度条功能?这方面的问题开始感兴趣,看似平静的每一天,在每个人身上都在发生着各种各样的故事,因为大家现在都是想要了解到此类的信息,那么既然现在大 ...

  7. springboot:实现文件上传下载实时进度条功能【附带源码】

    0. 引言 记得刚入行的时候,做了一个文件上传的功能,因为上传时间较久,为了用户友好性,想要添加一个实时进度条,显示进度.奈何当时技术有限,查了许久也没用找到解决方案,最后不了了之. 近来偶然想到这个 ...

  8. Android 动态改变SeekBar进度条颜色与滑块颜色

    Android 动态改变SeekBar进度条颜色与滑块颜色 遇到个动态改变SeekBar进度条颜色与滑块颜色的需求,如图: 有的是根据不同进度改变成不同颜色. 对于这个怎么做呢?大家都知道设置下pro ...

  9. 苹果x微信语音十秒就断_苹果解释iPhone 12设计初衷;微信回应语音进度条功能...

    Hello 大家好,这里是「科技V报」,我是@龙二Pro,昨晚9点之后,iPhone 12系列的媒体内容就正式解禁了,铺天盖地的开箱.上手.评测基本霸占了我们的社交圈,当然了,这主要还是因为大家对于今 ...

最新文章

  1. 【Spring】银行转账案例
  2. R语言使用compareGroups包compareGroups函数生成表统计表、createTable函数创建二元表、并导出结果到文档(doc、csv、xlsx、pdf)
  3. 69.2. wget - retrieves files from the web
  4. 和逛微博、刷朋友圈一样玩转 GitHub
  5. 数据库事务原理详解-事务的嵌套
  6. php关注 取消关注事件,微信公众平台开发关注/取消关注事件例子
  7. Linux 监控命令 free
  8. 排序算法时间复杂度、空间复杂度、稳定性比较
  9. Chap-3 Section 3.3 ELF文件头
  10. 报错 hint: Updates were rejected because the remote contains work that you do 解决方法
  11. 有源rc电压放大器实验报告_为什么将放大器装在示波器探头前端?
  12. 计算机类专业工程认证,计算机类专业工程教育专业认证补充标准
  13. 普通类创建获取session 方式_Springboot系列之RestApi中获取枚举类属性的几种方式...
  14. Windows服务器搭建Redis
  15. 解决同一办公环境局域网下无法添加打印机的情况
  16. linux下配置Tilera MDE4.1.8方法
  17. eclipse、myeclipse使用常用的小技巧(eclipse alt+/ 自动补全 )
  18. 使用Telerik的登陆模板实现DoubanFm的登陆(WP7)
  19. 【Unity开发小技巧】Unity随机概率扩展(概率可调控)
  20. 符号“∑”和“Π”的用法。

热门文章

  1. 简单区分WiFi通信和WLAN通信
  2. 浏览器兼容问题 php,浏览器兼容性问题的实例分析
  3. typescript学习笔记2 配置浏览器兼容性
  4. iphone xr xs_如何在iPhone X,XR,XS和XS Max上截屏
  5. 读取gb2312编码的xml失败问题分析
  6. 计算平均值python
  7. 中谷教育Python03笔记——变量
  8. LayUi中接口传数据成功,表格不显示数据
  9. python实现docx文档首行缩进2字符
  10. Android学习资源大全