场景

进度条效果

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

将布局改为相对布局,然后添加一个ProgressBar,并添加id属性。

然后通过

 android:max="100"

设置进度条最大值

通过

android:layout_alignParentBottom="true"
android:layout_marginBottom="50dp"

设置其位置在底部并设置外边距

关于进度条的样式,参考如下

这里使用的进度条样式是

style="?android:attr/progressBarStyleHorizontal"

完整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=".ProgressBarActivity"><ProgressBarandroid:layout_width="match_parent"android:layout_height="wrap_content"style="?android:attr/progressBarStyleHorizontal"android:max="100"android:layout_alignParentBottom="true"android:layout_marginBottom="50dp"android:id="@+id/progressBar"/></RelativeLayout>

然后来到Activity

要实现进度条的简单流程如下

首先在Activity中声明进度条对象、进度值、Handler对象。

关于Hnadler对象,因为Android不支持在主线程中更新UI控件,所以提供了Handler对象。

首先通过id获取进度条对象,然后实例化Handler,需要重写其handleMessage方法

在handleMessage方法中,通过msg的标识来判断是否完成进度条的加载。

然后需要新开一个线程,在线程中随机给进度条添加进度值,然后判断是否到100,进而报告不同的进度和标识变量。

完整示例代码

package com.badao.relativelayouttest;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;import java.util.prefs.PreferenceChangeEvent;public class ProgressBarActivity extends AppCompatActivity {private ProgressBar progressBar;private int mProgress = 0;private  Handler mHandler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_progress_bar);//获取进度条控件progressBar = (ProgressBar) findViewById(R.id.progressBar);//Android 不支持在主线程中更新UI组件 所以提供了Handler对象mHandler = new Handler(){//通过消息代码msg进行区分是否加载完成@Overridepublic void handleMessage(@NonNull Message msg) {if(msg.what ==0x111){//给进度条赋值progressBar.setProgress(mProgress);}else{Toast.makeText(ProgressBarActivity.this,"加载完成",Toast.LENGTH_SHORT).show();progressBar.setVisibility(View.GONE);}}};//新建一个线程new Thread(new Runnable() {@Overridepublic void run() {while (true){//具体执行的方法的进度,返回进度mProgress = doWork();//定义一个标识,标识进度条是否加载完成Message message = new Message();if(mProgress <100){//表示还没加载到100  则向进度条报告进度message.what = 0x111;mHandler.sendMessage(message);}else{//表示此时已经加载完成,向Handler发送消息  并跳出循环message.what =0x110;mHandler.sendMessage(message);break;}}}//具体执行 并返回进度的方法private int doWork(){//进度条随机加进度mProgress +=Math.random()*10;try {//进程休眠0.5秒Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}return mProgress;}}).start(); //启动进程}
}

Android中ProgressBar的使用-通过Handler与Message实现进度条显示相关推荐

  1. android 播放mp3 倒计时,Android实战 - 音心播放器 (MusicActivity - 倒计时 ,进度条实现)...

    1.背景 还是音乐播放界面,实现倒计时和进度条功能,基本实现过程: 当打开MusicActivity 的时候,MusicService会发送广播给MusicActivity ,后开始当前播放的时间进度 ...

  2. android倒计时水平进度条,Android实战 - 音心播放器 (MusicActivity - 倒计时 ,进度条实现)...

    1.背景 还是音乐播放界面,实现倒计时和进度条功能,基本实现过程: 当打开MusicActivity 的时候,MusicService会发送广播给MusicActivity ,后开始当前播放的时间进度 ...

  3. bootstrap中单个按钮、按钮组、徽章、进度条

    单按钮: 背景按钮:bootstrap提供了具有特殊意义背景的按钮样式,使用时只需给自己的按钮(button.input.a)加bootstrap提供的类名即可,其具体如下: 类名 描述 .btn 基 ...

  4. python tkinter进度条_在python tkinter中Canvas实现进度条显示的方法

    如下所示: from tkinter import * import time #更新进度条函数 def change_schedule(now_schedule,all_schedule): can ...

  5. Mac如何删除在磁盘空间中的可清除空间以及Mac开机时进度条卡100%的解决办法

    Mac如何删除在磁盘空间中的可清除空间以及Mac开机时进度条卡100%的解决办法 1.Mac如何删除在磁盘空间中的可清除空间 对于mac来说磁盘的空间是十分宝贵的,小编会定期的查看一下自己电脑的磁盘使 ...

  6. android中的progressbar,解析android中ProgressBar的用法

    范例说明Android的Widget,有许多是为了与User交互而特别设计的,但也有部分是作为程序提示.显示程序运行状态的Widget.现在介绍的范例,与前一章介绍过的ProgressDialog对话 ...

  7. Android反向进度条(ProgressBar)的实现——从右到左的进度条

    Android反向进度条(ProgressBar)--从右到左的进度条 前言: 最近在项目中需要使用到反向进度条,在网上查了些资料,感觉对自己作用不大,于是自定义样式,实现了反向进度条. 1. 第一步 ...

  8. Android第5天,httpclient,多线程断点续传,进度条,xUtils

    httpclient 使用原始的httpclient public class MainActivity extends Activity {Handler handler = new Handler ...

  9. 《物联网Android程序开发案例式教程》Demo4:模拟进度条

    在日常的应用中,我们经常会下载App.文件等,此时,就需要进度条来提示我们下载进度.这一章将教大家如何模拟下载进度条效果. 本案例需要用到的控件有显示图片的ImageView. 进度条控件Progre ...

最新文章

  1. [转载] 英语科技论文写作——Difference between APAMLA
  2. 图像热点(图像地图)
  3. ajax mysql点赞_ajax 实现点赞功能
  4. 深度学习笔记--单层感知机原理及代码实现
  5. STM32基础定时器详解
  6. softmax函数_反向传播之一:softmax函数
  7. python 分布式存储_Amazon S3 分布式存储的 python 接口实现
  8. JS设计模式——单例模式
  9. 手机如何连接远程桌面?
  10. chrome源代码下载 编译 linux,源代码编译chrome os
  11. 苹果屏蔽更新描述文件_iOS 屏蔽系统更新描述文件更新!快把烦人的系统更新提示关掉...
  12. 镁光 鸡血模式 linux,所以,镁光1100到底是不是全盘slc的模式?之前就几个帖子...
  13. 图文解说S参数(进阶篇)
  14. leetcode剑指offe刷题-第一题-用两个栈实现队列
  15. 使用 VirtualBox 虚拟机在电脑上运行 Android 系统,让电脑变安卓平板!
  16. 元气骑士(联机版)java合作大作业
  17. 「产品社群」话题讨论精华·第3期
  18. C++内存管理与指针的使用
  19. Swift 动画 —— 数字滚动UILabel动画
  20. redis安装和启动

热门文章

  1. python响铃符不响_python语法注意事项
  2. 抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法 (native),是否可同时被 synchronized
  3. oracle创建dblink语句_一文看懂Oracle12c中多租户(容器)从种子创建PDB
  4. python抢票_50 个加速包都抢不到车票,还不如这个 Python 抢票神器!
  5. ebm风扇选型手册_德国EBM离心风扇的八大结构组成你知道吗?
  6. arima模型 p q d 确定_时间序列分析第07讲(ARIMA模型,季节时间序列模型,均值的估计)...
  7. matlab正弦序列频谱,【求助】正弦信号序列fft频谱分析!!!
  8. 基于HTML在线考试系统开题报告,基于JSP的在线考试系统 开题报告.doc
  9. 服务器脚本执行sql文件命令行,sh命令执行sql脚本
  10. 用python 中的链表 实现 截取其中一部分_Python数据结构——链表的实现