Android进度条ProgressBar的实现代码
作者:PeterRabbit49 时间:2023-01-30 07:12:22
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();//开启一个新的线程
}
}
效果图:
来源:http://blog.csdn.net/PeterRabbit49/article/details/78126287
标签:Android,进度条,ProgressBar
0
投稿
猜你喜欢
Unity实现汽车前后轮倒车轨迹计算
2022-12-18 17:49:47
Springboot之idea之pom文件图标不对问题
2021-12-31 07:27:32
C# string格式的日期时间字符串转为DateTime类型的方法
2022-04-07 09:34:30
maven中配置项目的jdk版本无效的排查方式
2023-07-18 21:43:42
快速了解Java中ThreadLocal类
2021-06-28 03:32:20
Winform开发中使用下拉列表展示字典数据的几种方式
2022-02-23 11:56:41
简单介绍区分applet和application的方法
2022-11-05 07:18:40
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
2021-07-12 04:16:10
SpringBoot中ApplicationEvent和ApplicationListener用法小结
2021-08-11 07:43:04
详解Java中的迭代迭代器Iterator与枚举器Enumeration
2021-08-21 19:32:44
Spring Security实现用户名密码登录详解
2021-05-24 14:32:36
Java中ArrayList在foreach里remove的问题详析
2022-08-04 02:30:40
Java手写线程池的实现方法
2023-10-30 12:50:03
Spring Boot 与DBunit 配合使用方法
2022-07-29 13:29:28
ThreadLocal数据存储结构原理解析
2023-04-27 19:54:55
C#实现JSON解析器MojoUnityJson功能(简单且高效)
2023-12-02 16:44:50
浅谈Java基准性能测试之JMH
2023-01-25 13:17:40
搭建MyBatis-Plus框架并进行数据库增删改查功能
2023-11-09 04:33:43
java运行windows的cmd命令简单代码
2021-06-12 11:50:47
Android自定义流式布局的实现示例
2022-10-14 23:30:44