Android进度条ProgressBar的实现代码
作者:PeterRabbit49 发布时间:2023-01-30 07:12:22
标签: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();//开启一个新的线程
}
}
效果图:
来源:http://blog.csdn.net/PeterRabbit49/article/details/78126287


猜你喜欢
- 本文实例讲述了C#实现让ListBox适应最大Item宽度的方法。分享给大家供大家参考。具体实现方法如下:private void butt
- 前言最近工作上遇到很多批量插入的场景,但是百度很难得到我想要的结果,而且查出来的效果不是很好~所以就自己来写一份给大家参考,希望对大家有用M
- 1.实例1(主要看到[2])1.1.系统功能: 开发一个计算器服务CalculateService,这个服务包含加(plus)、减(minu
- 近日工程中,逐渐感觉到原来复制粘贴代码的笨重,突然想起以前有人和我说起过Git和SVN之类的版本管理工具。由于平时主要是写Java代码,所以
- 背景公司线上有个tomcat服务,里面合并部署了大概8个微服务,之所以没有像其他微服务那样单独部署,其目的是为了节约服务器资源,况且这8个服
- using System;using System.Collections;using System.Xml;namespace Jb51.
- 近期做简单的新闻客户端界面使用到了Jsoup获取,使用起来特别方便,这也是被我一个学长称为学android网络必学的一个东西,在此也是分享一
- 一、下载Android Studio百度搜索“Android Studio"点击中文社区进入,选择最新版本下载。下载后双击安装包开
- 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来
- 一、什么是方法的重载?方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。调用时,会根据不同的参数自动匹配对应的方法。二、构成方
- 在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载。所以自己写了一个压缩文件的工具类。该工具类支持单个文件和文件夹压缩。放代码:
- 本文实例为大家分享了Android利用Canvas标点画线,并加入位移动画的具体代码,供大家参考,具体内容如下1.背景继上次公司需求实现Ca
- 网上教程7.0大多数配置是这样compile ‘com.jakewharton:butterknife:7.0.1' ,不知道他们用
- 前言本篇开始讲解音频编辑的具体操作,从相对简单的音频裁剪开始。要进行音频裁剪,我的方案是开启一个Service服务用于音频裁剪的耗时操作,主
- Android ListView填充数据的方法因为多人开发,为了是自己开发的模块方便融合到主框架中,同时也为了减小apk的大小,要求尽可能少
- 阅读目录(Content)•1.get与post的区别•1.1 get方法 jsp中的代码form表单代码•1.2 action包中serv
- JUC包(java.util.concurrent)中提供了对定时任务的支持,即ScheduledExecutorService接口。本文对
- Android Studio 3.6正式版已经发布https://android-developers.googleblog.com/202
- BeanUtils.copyProperties无法封装使用BeanUtils.copyProperties(user, memeber);
- 官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-a