Android实现简单的进度条功能
实现进度条首先就要知道[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实现简单的进度条功能相关推荐
- Android超简单的进度条源码
相信大家都知道,打开程序的时候,需要通过进度条或者图片显示.这个时候很方便给应用程序优质的效果.下面我们来看看是如何实现进度条的代码,原理非常简单. 如图: 下面我们来看一下代码的实现. pack ...
- HTML5+CSS+JQuery 实现简单的进度条功能
样式: <style type="text/css"> .processcontainer2{ width:450px; border:1px solid #6C9C2 ...
- html canvas直线进度条,js+HTML5 canvas 实现简单的加载条(进度条)功能示例
本文实例讲述了js+HTML5 canvas 实现简单的加载条(进度条)功能.分享给大家供大家参考,具体如下: www.jb51.net canvas实现加载条动画 /* * 获取canvas, ca ...
- android解压zip文件进度条,Android实现文件解压带进度条功能
解压的工具类 package com.example.videodemo.zip; public class ZipProgressUtil { /*** * 解压通用方法 * * @param zi ...
- Android花样loading进度条(二)-简单环形进度条
背景 Android花样loading进度条系列文章主要讲解如何自定义所需的进度条,包括水平.圆形.环形.圆弧形.不规则形状等. 本篇我们从圆形进度条讲起,讲简单形式的环形进度条,只有进度色彩,没有进 ...
- android qq语音按钮,科技教程:如何在手机QQ中使用新版QQ语音进度条功能?
如今越来越多的小伙伴对于如何在手机QQ中使用新版QQ语音进度条功能?这方面的问题开始感兴趣,看似平静的每一天,在每个人身上都在发生着各种各样的故事,因为大家现在都是想要了解到此类的信息,那么既然现在大 ...
- springboot:实现文件上传下载实时进度条功能【附带源码】
0. 引言 记得刚入行的时候,做了一个文件上传的功能,因为上传时间较久,为了用户友好性,想要添加一个实时进度条,显示进度.奈何当时技术有限,查了许久也没用找到解决方案,最后不了了之. 近来偶然想到这个 ...
- Android 动态改变SeekBar进度条颜色与滑块颜色
Android 动态改变SeekBar进度条颜色与滑块颜色 遇到个动态改变SeekBar进度条颜色与滑块颜色的需求,如图: 有的是根据不同进度改变成不同颜色. 对于这个怎么做呢?大家都知道设置下pro ...
- 苹果x微信语音十秒就断_苹果解释iPhone 12设计初衷;微信回应语音进度条功能...
Hello 大家好,这里是「科技V报」,我是@龙二Pro,昨晚9点之后,iPhone 12系列的媒体内容就正式解禁了,铺天盖地的开箱.上手.评测基本霸占了我们的社交圈,当然了,这主要还是因为大家对于今 ...
最新文章
- 【Spring】银行转账案例
- R语言使用compareGroups包compareGroups函数生成表统计表、createTable函数创建二元表、并导出结果到文档(doc、csv、xlsx、pdf)
- 69.2. wget - retrieves files from the web
- 和逛微博、刷朋友圈一样玩转 GitHub
- 数据库事务原理详解-事务的嵌套
- php关注 取消关注事件,微信公众平台开发关注/取消关注事件例子
- Linux 监控命令 free
- 排序算法时间复杂度、空间复杂度、稳定性比较
- Chap-3 Section 3.3 ELF文件头
- 报错 hint: Updates were rejected because the remote contains work that you do 解决方法
- 有源rc电压放大器实验报告_为什么将放大器装在示波器探头前端?
- 计算机类专业工程认证,计算机类专业工程教育专业认证补充标准
- 普通类创建获取session 方式_Springboot系列之RestApi中获取枚举类属性的几种方式...
- Windows服务器搭建Redis
- 解决同一办公环境局域网下无法添加打印机的情况
- linux下配置Tilera MDE4.1.8方法
- eclipse、myeclipse使用常用的小技巧(eclipse alt+/ 自动补全 )
- 使用Telerik的登陆模板实现DoubanFm的登陆(WP7)
- 【Unity开发小技巧】Unity随机概率扩展(概率可调控)
- 符号“∑”和“Π”的用法。