<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ProgressBar android:id="@+id/progressBar" style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btn_pb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_pb" /> </LinearLayout>
ProgressBar让用户感觉程序与他们有交互,所以我觉得设计好一个好的进度条会调整用户对程序的操作感,我也是初步学习,现在就将笔记整理一下。
Java Code
package cn.qiuzhping.module1; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; public class PB extends Activity { private int dataLength = 1000; private int[] data = new int[dataLength];// 该程序模拟填充长度为1000的数组 int index = 0;// 数组下标 int step = 0;// 记录ProgressBar的完成进度 Handler mHandler = null;// 用于线程之间交互 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pb); final ProgressBar progrssBar = (ProgressBar) findViewById(R.id.progressBar); progrssBar.setMax(dataLength); mHandler = new Handler() {// 创建一个负责更新的进度的Handler @Override public void handleMessage(Message msg) { if (msg.what == 0x111) {// 根据定义的标志 表明消息是由该程序发送的,然后更新进度条。 progrssBar.setProgress(step);// 主进度 progrssBar.setSecondaryProgress(step + 50);// 次进度 Log.i("mHandler", " progressBar step = " + step); } } }; final Button startBtn = (Button) findViewById(R.id.btn_pb); startBtn.setOnClickListener(new startBtnListener()); } public void timeconsuming() {// 耗时计算 while (step < dataLength) { // Log.i("startBtnListener","timeconsuming"); step = doIndex();// 获取耗时操作的完成百分比 Message m = new Message();// 发送消息到Handler m.what = 0x111;// 给消息定一个标志,让handler接受多个message的时候, // 进行区分给与对应操作的what // 是用户自定义的消息代码,这样接受者可以了解这个消息的信息每个handler各自包含自己的消息代码.所以不用担心自定义的消息跟其他handlers有冲突。 mHandler.sendMessage(m);// 发送消息 } } class startBtnListener implements OnClickListener {// 设置startBtn的监听器 @Override public void onClick(View arg0) { index = 0; step = 0; new Thread() {// 通过设置匿名内部类,启动线程来执行任务 public void run() { timeconsuming(); Log.i("startBtnListener", "timeconsuming()"); } }.start(); } } public int doIndex() {// 模拟一个耗时的操作 int result = (int) (Math.random() * dataLength); data[index++] = result;// 为数组元素赋值 try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } Log.i("doIndex", "index=" + index + "||result=" + result); return index; } }
这样就能简单的使用Android自带样式的水平进度条,比较直观的看到效果。
相关推荐
本项目是一个针对初学者的`ProgressBar`初步学习实例,旨在帮助开发者理解如何在Android应用中集成和使用`ProgressBar`。 `ProgressBar`的基本使用: 1. **XML布局文件中的声明**:在`res/layout`目录下的XML布局...
Android提供了丰富的UI组件,如按钮(Button)、文本输入框(EditText)、图像视图(ImageView)、单选按钮(RadioButton)、复选框(CheckBox)、进度条(ProgressBar)等。这些控件是构建用户界面的基本元素,它们不仅用于展示...
- **进度条**:介绍如何使用进度条(ProgressBar)来显示任务完成情况或数据加载进度。 - **对话框**:讲解对话框(Dialog)的创建方法及其应用场景,如警告框、确认框等。 - **图像控件**:探讨如何在PyGTK中显示...
dawe_01_1108
主要功能: wordpress插件主题系列支持自动采集并发布。 主要采集: 福缘,中创,冒泡 自动采集各大项目网进行整合发布到自己个人网站 插件话更新,减少网络请求,提升稳定性 代码完美开源 傻瓜式操作,一次设置永久使用
测试课本程序运行 修改main.cpp文件 原main.cpp文件内容: #include "OpenCV_example.hpp" #include <iostream> int main() { return 0; } 运行一个程序案例: 假设要运行课本案例的Logo.cpp,在main.cpp文件的main函数里写上一行:run_logo(); 设置运行参数(run>>Edit Configurations),讲working directory设置为当前工程的路径
【框架完整】毕业答辩PPT模板.pptx
内容概要:本文详细介绍了三种方法来应对DeepSeek服务器繁忙问题,着重阐述了如何进行DeepSeek的本地部署,包括详细的硬件和软件环境配置建议,特别是针对不同规模参数模型的具体配置需求,同时提供了简化的部署指南。通过本地部署可以有效缓解因服务器繁忙带来的使用不便问题,同时增强数据的安全性和稳定性。此外,还讨论了一些潜在限制,如内容更新滞后和UI界面美观度问题。 适合人群:适用于希望提高使用效率和保障数据安全的技术人员或研究团队,尤其是正在面临DeepSeek云服务平台拥堵问题的人群。 使用场景及目标:为用户提供了一套全面且灵活的解决方案,使其能够在不受限于互联网的情况下独立开展深度学习相关的工作或实验;旨在帮助用户体验更快的数据处理速度,获得更加稳定可靠的服务体验。 阅读建议:为了更好地理解和实施文中提及的各项操作,请确保熟悉所在的操作系统环境,并按步骤执行每个环节,尤其是对硬件设备的选择和驱动程序的正确安装保持关注。对于初次接触此类项目的人来说,可以先从简单的轻量级配置入手逐步过渡到更为复杂的大型配置上。
dawe_3cd_02_0718
基于COMSOL的非饱和裂隙土降雨入渗特性研究:三维基质模型与VG、Brooks-Corey模型的应用分析,基于COMSOL的非饱和裂隙土降雨入渗特性研究:三维基质模型与VG、Brooks-Corey模型的应用分析,comsol非饱和裂隙土降雨入渗研究,复现lunwen(侯晓萍,樊恒辉.基于COMSOL Multiphysics的非饱和裂隙土降雨入渗特性研究[J].岩土力学,2022,43(02):563-572.),建立三维基质—裂隙土柱模型,使用“空气单元”描述坡面积水水头。 使用VG模型和Brooks-Corey模型分别描述土基质和裂隙的非饱和特性,下图为0-5天内压力水头变化以及降雨断面入渗率以及参考文献对比) ,关键词: comsol; 非饱和裂隙土; 降雨入渗研究; 三维基质-裂隙土柱模型; 空气单元描述坡面积水水头; VG模型; Brooks-Corey模型; 压力水头变化; 降雨断面入渗率; 参考文献对比。,COMSOL模型下裂隙土渗透研究:雨季三维模拟与对比分析
diminico_01_0909
anslow_04_0909
Comsol 6.2版流固耦合注浆及冒浆解析:以达西定律与固体力学模块为核心,实现渗流场与结构场流固耦合方程的嵌入学习案例。附赠参考论文与流固耦合视频教程。,基于Comsol流固耦合理论的注浆过程与冒浆现象分析(6.2版)-深入探讨达西定律模块与固体力学模块的实践应用,Comsol流固耦合注浆及冒浆分析(6.2版本) 采用其中达西定律模块及固体力学模块,通过建立质量源项、体荷载等实现上述考虑渗流场与结构场流固耦合理论方程的嵌入。 附带参考lunwen及流固耦合视频 是学习注浆扩散,流固耦合,变形很好的新手案例。 ,Comsol;流固耦合注浆;冒浆分析;达西定律模块;固体力学模块;渗流场与结构场流固耦合;质量源项;体荷载;学习案例,Comsol 6.2版流固耦合注浆分析:达西定律与固体力学模块应用案例
基于python内置的opencv的图像识别项目
0308_ba_open_report
cole_02_0507
Matlab非线性优化算法实现,基于Matlab的BFGS梯度下降算法结合Armijo线搜索法在多项式目标函数优化中的应用与最优解研究,基于matlab的非线性优化算法实现 通过梯度下降法(具体实现为 BFGS 方法),并结合 Armijo 线搜索方法,对一个多项式目标函数进行优化,找到其最优解。 开发语言:matlab ,核心关键词:Matlab; 非线性优化算法; 梯度下降法; BFGS方法; Armijo线搜索方法; 多项式目标函数; 最优解。,MATLAB中结合BFGS与Armijo线搜索实现多项式目标函数优化算法
【财通证券-2025研报】轻工行业周报:上海二手房成交亮眼,家居315营销开启.pdf
基于SS补偿网络的无线电能传输中的变频移相综合控制策略:谐振稳定与输出电压优化调节,基于多目标综合控制的无线电能传输系统:谐振稳定输出电压的变频移相控制策略。,ss补偿网络变频控制移相控制,同时控制系统保持谐振和稳定输出电压,多目标综合控制 无线电能传输 ,ss补偿网络; 变频控制; 移相控制; 谐振控制; 稳定输出电压控制; 多目标综合控制; 无线电能传输。,综合控制下的无线电能传输系统,实现稳定谐振输出与多目标管理
chang_01_0509