<ProgerssDialog>功能与用法

本文介绍如何在Android应用中使用ProgressDialog来显示不同类型的进度提示。通过三种不同的示例,展示了ProgressDialog的基本用法、定制显示内容及结合后台线程更新进度条的方法。
package com.crazyit.ui.dialogdemo;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;


/**
 * 使用 ProgerssDialog 创建进度对话框
 */
public class ProgerssDialogActivity extends Activity {

    public static final int MAX_PROGRSS = 100;
    //定义一个 100长度的 数组
    private int[] data = new int[50];
    //记录对话框的完成百分比
    public static int progressStatus = 0;
    int i = 0;

   public static ProgressDialog pd1, pd2;

    //定义一个负责更新的进度的 Handler
    private static Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

            //发送消息
            if(msg.what==0x123){
                pd2.setProgress(progressStatus);
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_progerss_dialog);
    }

    //环形进度条
    public void showSpinner(View view) {
        //调用静态方法显示环形进度条
        ProgressDialog.show(this, "任务进行中", "请等待...", false, true);
    }

    //不显示进度的进度条
    public void showIndeterminate(View view) {
        pd1 = new ProgressDialog(ProgerssDialogActivity.this);

        //
        pd1.setTitle("请稍候.."); //设置标题
        pd1.setMessage("玩命加载中..."); //设置对话框显示的内容
        pd1.setCancelable(true);  //设置对话框能用 取消 按钮关闭

        //设置对话框进度条风格
        pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd1.setIndeterminate(true);  //设置对话框是否显示 进度

        //将对话框显示出来
        pd1.show();
    }

    //显示对话框
    public void showProgress(View view) {
        //将进度条的完成进度重新设置成 0
        progressStatus = 0;
        i = 0;  //重新开始填充数组

        pd2 = new ProgressDialog(ProgerssDialogActivity.this);
        pd2.setMax(100); //设置最大值
        pd2.setTitle("任务完成百分比"); //设置对话框标题
        pd2.setMessage("模拟耗时操作任务的百分比");

        //设置对话框不能用 "取消" 按钮关闭
        pd2.setCancelable(false);
//        设置对话框的进度条的 风格样式
        pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

        //设置对话框是否显示 进度条
        pd2.setIndeterminate(false);

        pd2.show();

        //开启一个子线程,模拟耗时操作
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (progressStatus < MAX_PROGRSS) {
                    //获取耗时操作的完成百分比
                    progressStatus = MAX_PROGRSS * doWork() / data.length;

                    //发送空消息到 handler
                    handler.sendEmptyMessage(0x123);
                }

                //如果任务完成
                if (progressStatus >= MAX_PROGRSS) {

                    //就关闭对话框
                    pd2.dismiss();
                }
            }
        }).start();
    }

    //模拟一个耗时操作
    private int doWork() {
        //为数组元素赋值
        data[i++] = (int) (Math.random() * 100);

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return i;
    }
}

布局界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal"
    android:orientation="vertical"
    tools:context="com.crazyit.ui.dialogdemo.ProgerssDialogActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="showSpinner"
        android:text="环形进度条" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="showIndeterminate"
        android:text="不显示进度的进度条" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="showProgress"
        android:text="显示进度的进度条" />
</LinearLayout>

上面的项目中 共是3种 ProgressDialog
第一种 是显示ProgressDialog 最简单的 方法
第二种是 创建了 ProgressDialog 对象,再调用 show( ) 方法显示出来
第三种是 模拟了一个耗时操作 并设置 ProgressDialog 的相关属性,再调用 show( ) 方法显示出来

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)内容概要:本文介绍了基于实时迭代的数值鲁棒非线性模型预测控制(NMPC)双模稳定预测模型的研究Matlab代码实现,重点在于提升系统在存在不确定性扰动情况下的控制性能稳定性。该模型结合实时迭代优化机制,增强了传统NMPC的数值鲁棒性,并通过双模控制策略兼顾动态响应稳态精度,适用于复杂非线性系统的预测控制问题。文中还列举了多个相关技术方向的应用案例,涵盖电力系统、路径规划、信号处理、机器学习等多个领域,展示了该方法的广泛适用性工程价值。; 适合人群:具备一定控制理论基础Matlab编程能力,从事自动化、电气工程、智能制造、机器人控制等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于非线性系统的高性能预测控制设计,如电力系统调度、无人机控制、机器人轨迹跟踪等;②解决存在模型不确定性、外部扰动下的系统稳定控制问题;③通过Matlab仿真验证控制算法的有效性鲁棒性,支撑科研论文复现工程原型开发。; 阅读建议:建议读者结合提供的Matlab代码进行实践,重点关注NMPC的实时迭代机制双模切换逻辑的设计细节,同时参考文中列举的相关研究方向拓展应用场景,强化对数值鲁棒性系统稳定性之间平衡的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值