Android实现加载时提示“正在加载,请稍后”的方法

下面是详细讲解 Android 实现加载时提示“正在加载,请稍后”的方法的攻略。

1. 使用 ProgressDialog 实现加载提示

ProgressDialog 是 Android 提供的一种用来显示信息(例如“正在加载”)的弹框,实现起来比较简单。以下是实现步骤:

1.1 创建 ProgressDialog 对象

在 Activity 或 Fragment 中,声明一个 ProgressDialog 对象:

private ProgressDialog progressDialog;

1.2 初始化 ProgressDialog

在需要显示加载提示的地方,调用 ProgressDialog.show() 方法创建并显示 ProgressDialog:

progressDialog = ProgressDialog.show(this, "正在加载", "请稍后...");

这时候就会出现一个带有“正在加载”的 dialog,如下图所示:

Android实现加载时提示“正在加载,请稍后”的方法

1.3 取消 ProgressDialog

加载完成后,调用 progressDialog.dismiss() 方法取消 ProgressDialog 显示:

progressDialog.dismiss();

示例

以下是一个使用 ProgressDialog 实现加载提示的示例:

public class MainActivity extends AppCompatActivity {
    private ProgressDialog progressDialog;

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

        Button btnLoadData = findViewById(R.id.btn_load_data);
        btnLoadData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 显示 ProgressDialog
                progressDialog = ProgressDialog.show(MainActivity.this, "正在加载", "请稍后...");

                // 模拟加载数据,延迟 3s
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        // 取消 ProgressDialog
                        progressDialog.dismiss();
                        // 加载数据完成后的逻辑
                        Toast.makeText(MainActivity.this, "数据加载完成", Toast.LENGTH_SHORT).show();
                    }
                }, 3000);
            }
        });
    }
}

该示例中,当用户点击按钮时会显示 ProgressDialog,然后模拟加载数据 3s 后取消 ProgressDialog,显示“数据加载完成”的 Toast。

2. 自定义 LoadingView 实现加载提示

使用自定义的 LoadingView 可以完全自定义加载时的展示效果,以下是实现步骤:

2.1 创建 LoadingView

首先创建一个 LoadingView,例如一个圆形进度条:

<ProgressBar
    android:id="@+id/progress_bar"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:indeterminateDrawable="@drawable/progress_bar_drawable"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

其中 progress_bar_drawable 是一个圆形进度条的样式文件,例如:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="800"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:toDegrees="360" >
    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false" >
        <size
            android:height="48dp"
            android:width="48dp" />
        <gradient
            android:centerColor="#0070c0"
            android:endColor="#0070c0"
            android:startColor="#003d60"
            android:type="sweep"
            android:useLevel="false" />
    </shape>
</rotate>

在实际项目中,可以根据需求自定义 LoadingView 的样式。

2.2 显示 LoadingView

在需要显示加载提示的地方,将自定义的 LoadingView 添加到布局中(例如作为一个 Dialog 或一个 Fragment),并显示出来即可。

以下是一个使用自定义 LoadingView 实现加载提示的示例:

public class MainActivity extends AppCompatActivity {
    private Dialog loadingDialog;

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

        Button btnLoadData = findViewById(R.id.btn_load_data);
        btnLoadData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 创建 Dialog
                loadingDialog = new Dialog(MainActivity.this);
                loadingDialog.setContentView(R.layout.dialog_loading);
                loadingDialog.setCanceledOnTouchOutside(false);

                // 显示 Dialog
                loadingDialog.show();

                // 模拟加载数据,延迟 3s
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        // 取消 Dialog 并释放
                        loadingDialog.dismiss();
                        loadingDialog = null;
                        // 加载数据完成后的逻辑
                        Toast.makeText(MainActivity.this, "数据加载完成", Toast.LENGTH_SHORT).show();
                    }
                }, 3000);
            }
        });
    }
}

该示例中,当用户点击按钮时会创建一个 Dialog 并显示一个自定义的 LoadingView,然后模拟加载数据 3s 后取消 Dialog,显示“数据加载完成”的 Toast。

以上就是 Android 实现加载时提示“正在加载,请稍后”的方法的攻略,希望能够对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android实现加载时提示“正在加载,请稍后”的方法 - Python技术站

(1)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • isp算法:深入聊聊lensshading

    ISP算法:深入聊聊Lens Shading ISP(Image Signal Processing)算法是数字图像处理中的一种重要算法,它可以对图像进行各种处理,如去噪、增强色彩校正等。Lens Shading是ISP算法中的一种,可以对图像进行光照校正,消除图像中的光照不匀现象。本攻略将深入聊聊Lens Shading算法,包括算法原理、实现方法和示例说…

    other 2023年5月7日
    00
  • C++中的const

    C++中的const 在C++中,const是常用的关键字之一,它被用于定义常量或者修饰函数参数,可以防止程序因为不小心修改常量而产生错误,从而提高代码的稳定性。在本篇文章中,我们将讨论如何在C++中使用const关键字。 定义常量 定义常量可以通过将一个变量定义为const const int NUM = 10; 这里的NUM被定义为一个常量,它的值不能被…

    其他 2023年3月28日
    00
  • element-ui中如何给el-table的某一行或某一列加样式

    当使用element-ui的el-table组件时,可以通过以下两种方式给某一行或某一列加样式: 使用slot-scope自定义列模板,并添加对应的样式类: <template> <el-table :data="tableData"> <el-table-column prop="name&quo…

    other 2023年6月28日
    00
  • PHP读取目录树的实现方法分析

    下面就是详细讲解“PHP读取目录树的实现方法分析”的完整攻略。 什么是目录树 目录树是指计算机文件系统中,按照层级关系形成的一棵树形结构。在文件系统中,每个目录都可以包含文件和其他目录,因此可以将文件系统看作是一棵由目录和文件组成的树,每个目录都是这个树的一个节点,而叶子节点则是文件。 PHP读取目录树的实现方法分析 PHP 读取目录树的实现方法有许多种,常…

    other 2023年6月26日
    00
  • 易优eyoucms数据表结构和字段说明(数据字典)

    下面我来详细讲解“易优eyoucms数据表结构和字段说明(数据字典)”的完整攻略。 1. 引言 易优eyoucms是一款CMS(内容管理系统)程序,通过数据库存储用户输入的数据,因此对于数据表结构和字段的说明非常重要。本文将介绍易优eyoucms的数据表结构和字段的详细说明,包括每个表的名称、各个字段的名称、数据类型、长度、默认值、是否可以为空、注释等信息。…

    other 2023年6月25日
    00
  • Android Studio发布项目到Jcenter仓库步骤(图文)

    下面我将详细讲解如何将Android Studio项目发布到JCenter仓库。 首先,我们需要了解一些基本概念: JCenter是一个Maven仓库,是Java开发中最常用的仓库之一; Maven是一个Java项目构建工具,用于管理Java项目的依赖、构建、发布等过程; Gradle是Android Studio使用的默认构建工具,支持Maven仓库来管理…

    other 2023年6月26日
    00
  • ASP.NET中 RadioButtonList 单选按钮组控件的使用方法

    当我们需要在ASP.NET web应用程序中实现单选按钮的选择功能时,可以使用RadioButtonList这一控件。以下是ASP.NET中RadioButtonList控件的使用方法: 步骤1- 创建RadioButtonList控件 在ASP.NET web应用程序中,我们可以通过如下代码在网页中创建一个RadioButtonList: <asp:…

    other 2023年6月26日
    00
  • 利用IDEA工具修改Maven多模块项目标识包名全过程记录

    利用IDEA工具修改Maven多模块项目标识包名全过程记录攻略 本攻略将详细介绍如何使用IDEA工具修改Maven多模块项目的标识包名。以下是完整的步骤记录: 步骤一:打开项目 首先,使用IDEA工具打开你的Maven多模块项目。 步骤二:定位要修改的包名 在项目结构中,定位到你想要修改的包名所在的模块。可以通过展开项目结构树,在src/main/java目…

    other 2023年9月7日
    00
合作推广
合作推广
分享本页
返回顶部