Android进度条ProgressBar的实现代码
时间:2022-07-27
本文章向大家介绍Android进度条ProgressBar的实现代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
ProgressBar进度条
当一个应用在后台执行时,前台界面不会有任何信息,这时,用户根本不知道程序是否在执行以及执行的进度等, 因此需要使用进度条来提示程序执行的进度。 而ProgressBar就是来做这个事情的。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?
<android.support.constraint.ConstraintLayout 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="com.amy.processbartest.MainActivity"
<!--水平进度条 --
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
style="@android:style/Widget.ProgressBar.Horizontal" /
<!-- 圆形进度条 --
<ProgressBar
android:id="@+id/progressBar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleLarge"/
</android.support.constraint.ConstraintLayout
MainActivity.java
package com.amy.processbartest;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
import static android.R.attr.id;
public class MainActivity extends AppCompatActivity {
//定义水平进度条
private ProgressBar horizonP;
//定义圆形进度条
private ProgressBar circleP;
//完成进度
private int mProcessStatus = 0;
//声明一个用于处理消息的Handler类的对象
private Handler mHandler;
/**
* 在主活动onCreate方法中,首先获得水平进度条和圆形进度条,
* 然后通过匿名内部类实例化处理消息的Handler类的对象,并重写其handlerMessage方法,
* 实现当好吃操作没有完成时更新进度,否则设置进度条不显示。
* @param savedInstanceState
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
horizonP = (ProgressBar) findViewById(R.id.progressBar1);
circleP = (ProgressBar) findViewById(R.id.progressBar2);
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what == 0x111) {
horizonP.setProgress(mProcessStatus);//更新进度
} else {
Toast.makeText(MainActivity.this,"耗时操作已经完成",Toast.LENGTH_SHORT).show();
horizonP.setVisibility(View.GONE);
circleP.setVisibility(View.GONE);
}
}
};
//开个线程用语模拟耗时操作
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
mProcessStatus = doWork();//获取耗时操作完成的百分比
Message msg = new Message();
if (mProcessStatus<100) {
msg.what = 0x111;
mHandler.sendMessage(msg);//发送消息
} else {
msg.what = 0x110;
mHandler.sendMessage(msg);//发送消息
break;
}
}
}
//模拟一个耗时操作
private int doWork() {
mProcessStatus += Math.random()*10;//改变完成进度
try {
Thread.sleep(200);//每隔200毫秒进度改变一次
} catch (InterruptedException e) {
e.printStackTrace();
}
return mProcessStatus;//返回新的进度
}
}).start();//开启一个新的线程
}
}
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助。
- 零基础学编程041:欧拉公式的几何意义
- 零基础学编程040:在Windows上安装Python库的正确姿势
- c++/c 获取cpp文件行号跟文件名
- 零基础学编程042:画函数图像
- C-SATS工程副总裁教你如何用TensorFlow分类图像 part2
- C++11 Lambda表达汇总总结
- TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
- C++虚析构函数解析
- C-SATS工程副总裁教你如何用TensorFlow分类图像 part1
- 帝国cms文章页调用当前文章URL如何操作?
- dedecms文章页调用地址(当前文章URL)如何操作?
- 饭团开通一周,3人学会了比特币操作
- Sample K算法
- C#读取“我的文档”等特殊系统路径及环境变量
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释