Android进度条完全指南:从基础到高级实现教程

这是文章《安卓进度条示例》的第1部分(共1部分)。

内容片段: 欢迎来到安卓进度条示例教程。今天我们将在应用程序中实现安卓进度条功能。进度条有两种类型:水平进度条和圆形进度条。我们将在安卓应用程序中创建这两种类型的进度条。

安卓进度条简介

安卓进度条是一种图形化视图指示器,用于显示任务的进度。它能够直观地展示任务完成情况,为用户提供完成时间预估。使用进度条是一种良好的用户体验设计实践,因为它可以向用户展示特定任务(如下载图片)的进度状态。

安卓进度条的主要属性

以下是安卓进度条的一些重要属性及其说明:

  • android:max:通过此属性设置进度条的最大值。默认情况下,进度条的最大值为100。
  • android:indeterminate:根据任务时间是否确定,设置一个布尔值。将此属性设置为false将显示实际进度;如果设置为true,则显示循环动画以表示进度正在进行中。
  • android:minHeight:用于设置进度条的最小高度。
  • android:minWidth:用于设置进度条的最小宽度。
  • android:progress:用于设置进度条的当前值。
  • style:默认情况下,进度条显示为旋转的圆形。如果希望将其显示为水平条形,需要将属性设置为:style=”?android:attr/progressBarStyleHorizontal”。

在本教程中,我们将创建一个进度条并通过线程更新来递增其值。我们会让线程在每次递增值后休眠200毫秒,以便缓慢展示进度变化。

安卓进度条示例项目结构

安卓进度条示例

安卓进度条代码实现

activity_main.xml文件中包含一个RelativeLayout作为父视图,其中包含一个水平进度条和一个圆形进度条,以及一个用于数字形式显示进度的TextView组件。

<!-- 主布局文件:activity_main.xml -->
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <!-- 水平进度条 -->
    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="23dp"
        android:layout_marginTop="20dp"
        android:indeterminate="false"
        android:max="100"
        android:minHeight="50dp"
        android:minWidth="200dp"
        android:progress="1" />

    <!-- 圆形进度条 -->
    <ProgressBar
        android:id="@+id/progressBar_cyclic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="50dp"
        android:minWidth="50dp"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <!-- 显示进度数值的文本视图 -->
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/progressBar"
        android:layout_below="@+id/progressBar"/>

</RelativeLayout>

在上述布局中,水平进度条的值根据android:progress属性设置而更新。圆形进度条会持续运行,除非活动被停止。

package com.Olivia.progressbar;

import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private ProgressBar progressBar;  // 水平进度条引用
    private int progressStatus = 0;   // 当前进度状态
    private TextView textView;        // 显示进度的文本视图
    private Handler handler = new Handler();  // 处理UI更新的处理器

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 初始化UI组件
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
        textView = (TextView) findViewById(R.id.textView);
        
        // 在后台线程中启动长时间运行的操作
        new Thread(new Runnable() {
            public void run() {
                while (progressStatus < 100) {
                    progressStatus += 1;
                    
                    // 更新进度条并在文本视图中显示当前值
                    handler.post(new Runnable() {
                        public void run() {
                            progressBar.setProgress(progressStatus);
                            textView.setText(progressStatus+"/"+progressBar.getMax());
                        }
                    });
                    
                    try {
                        // 休眠200毫秒以减慢进度更新速度
                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
}
安卓进度条示例效果

您可以下载完整的安卓进度条示例项目进行学习和参考。

参考资料:安卓开发者官方文档 (developer.android.com)

bannerAds