安卓 Material Design 中 ProgressDialog 的使用

阅读时长 7 分钟读完

ProgressDialog 是安卓开发中极为普遍的一个 UI 控件,常常用于在后台线程执行时显示一个进度条,以提示用户等待任务执行的进度和状态。而 Material Design 给出了一套更新的 UI 设计规范,其中也对 ProgressDialog 进行了一定的改进和优化。

本文将介绍在 Material Design 中使用 ProgressDialog 的方法,包括如何自定义样式、设置进度条和取消对话框等操作。

1. 基本用法

ProgressDialog 是一个以对话框形式出现的 UI 控件,在安卓中是一个预设好的控件,通过调用其构造函数来创建一个 ProgressDialog 对象。

在创建 ProgressDialog 对象后,可以对其进行一系列属性设置,包括对话框标题、消息内容、进度样式、进度最大值、进度当前值等等。例如下面是一个设置进度最大值为 100、进度样式为水平进度条的 ProgressDialog 对象。

接下来在后台线程中执行任务,一旦任务完成就隐藏 ProgressDialog 对话框。

-- -------------------- ---- -------
----------------------
--- ---------- ---------- -
    ---------
    ------ ---- ----- -
        -- ----
        --- ---- - - -- - -- ---- ---- -
            ------------------------------
            --- -
                -----------------
            - ----- --------------------- -- -
                --------------------
            -
        -
        -------------------------
    -
-----------
展开代码

注意,这里需要使用 handler 将 UI 操作放到主线程执行,否则会抛出 android.view.ViewRootImpl$CalledFromWrongThreadException 异常。

2. 自定义样式

Material Design 中 ProgressDialog 提供了一些自定义样式,可以通过 setIndeterminateDrawable()setProgressDrawable() 方法对进度样式进行自定义。例如下面是一个圆形进度条的自定义样式。

其中 R.drawable.custom_progress_dialog_circular 是在 res/drawable 目录下定义的一个 XML Drawable 文件,其内容如下。

-- -------------------- ---- -------
----- ------------- ------------------
------- ----------------------------------------------------------
    -----------------------
    --------------------
    --------------------
    ----------------------- -

    ------
        ----------------------------
        --------------------
        --------------------------
        ------------------------

        -----
            ---------------------
            -------------------- --

        ---------
            --------------------------------------------------
            -----------------------------------------------
            -------------------------------------------------
            --------------------
            ------------------------ --
    --------
---------
展开代码

通过设置不同的 XML 绘制文件,可以实现更多自定义样式。

3. 取消对话框

在 ProgressDialog 显示的同时,利用 setCancelable() 方法,可以使用户在点击其它区域或按下返回键时取消对话框。

同时,也可以设置进度条最大时间,例如在 10 秒内完成任务,否则自动取消对话框。

-- -------------------- ---- -------
-----------------------------------
---------------------------
--- --------------------- ----- -
    ---------
    ------ ---- ----------- -------------------- -
        -------------------------------- -------------------- - ------
    -

    ---------
    ------ ---- ---------- -
        -- ---------------------------- -
            -------------------------
        -
    -
----------
展开代码

结语

ProgressDialog 是一个非常常用的 UI 工具,特别是在后台线程执行任务时,可以帮助用户更好地了解任务执行的状态和进度。而 Material Design 中对 ProgressDialog 的改进和优化,也使其更好地符合现代用户的审美和使用习惯。在实际开发中,根据项目需要选择合适的样式和配置,可以使 ProgressDialog 功能更加强大、适用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c01f21314edc268463ed75

纠错
反馈

纠错反馈