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

yizhihongxing

下面是详细讲解 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日

相关文章

  • c语言malloc函数的用法示例和意义

    下面是关于C语言malloc函数的用法示例和意义的完整攻略。 什么是malloc函数 malloc函数是C语言中用于申请动态内存的函数。它可以在程序运行过程中根据需要动态地分配内存空间。在程序结束时,可以使用free函数释放该空间以避免内存泄漏。 malloc函数的语法 malloc函数的语法如下: void *malloc(size_t size); 其中…

    other 2023年6月26日
    00
  • 青龙面板拉库解决没有或丢失依赖can‘t find module的保姆级教程(附青龙面板脚本仓库)

    下面就为大家详细讲解“青龙面板拉库解决没有或丢失依赖can‘t find module的保姆级教程”。 背景 在使用青龙面板进行任务管理时,由于依赖的缺失或者丢失,可能会出现can’t find module(无法找到模块)的情况。这时需要通过拉取库文件,解决缺失依赖的问题。 解决步骤 1. 进入青龙面板 首先,进入青龙面板,并进入终端界面。 2. 判断缺失…

    other 2023年6月26日
    00
  • dotnetrun命令介绍

    以下是“hue安装与使用的完整攻略”的标准markdown格式文本,其中包含了两个示例说明: Hue安装与使用 Hue是一个开源的Web界面,用于管理Apache Hadoop集群。本文将介绍如何安装和使用Hue,包括如何安装Hue、如何配置Hue和如何使用Hue。 1. 安装Hue 以下是安装Hue的步骤: 下载Hue的安装包。 解压安装包。 进入解压后的…

    other 2023年5月10日
    00
  • C语言实例真题讲解数据结构中单向环形链表

    C语言实例真题讲解数据结构中单向环形链表 1. 单向链表简介 单向链表是数据结构中的一种基础数据类型,是由一系列节点组成的,每个节点都包含了数据和指向下一个节点的指针。链表的优点是可以动态地添加和删除元素,但缺点是访问元素的效率相对较低。 2. 单向链表的扩展性 由于链表的动态性,我们可以对其进行扩展,使得其可以满足更复杂的需求。其中一个扩展便是单向环形链表…

    other 2023年6月27日
    00
  • CentOS下添加新硬盘并分区格式化的详细步骤

    下面是CentOS下添加新硬盘并分区格式化的详细步骤。 步骤一:查看硬盘信息 通过以下命令查看当前系统已经有的硬盘信息: fdisk -l 其中,-l参数表示列出系统中所有硬盘的信息。根据显示内容,可以得知目前系统中已经有哪些硬盘,它们的文件系统分区情况等信息,如下所示: Disk /dev/sda: 21.5 GB, 21474836480 bytes 2…

    other 2023年6月28日
    00
  • Hadoop中namenode和secondarynamenode工作机制讲解

    Hadoop中Namenode和Secondarynamenode的工作机制 在Hadoop中,Namenode是Hadoop分布式文件系统的重要组件之一,它的主要功能是管理文件系统命名空间、控制块的复制和容错、管理数据块的映射信息等。而Secondarynamenode则是辅助Namenode执行某些任务的节点,它的主要任务是定期合并Namenode的编辑…

    other 2023年6月28日
    00
  • 使命召唤19网吧怎么玩 使命召唤19网吧进不去游戏的解决方法

    下面是详细讲解“使命召唤19网吧怎么玩 使命召唤19网吧进不去游戏的解决方法”的完整攻略: 使命召唤19网吧怎么玩 在网吧里使用游戏客户端进行游戏,可以享受到更加流畅的网络体验和更高清晰度的游戏画面。以下是网吧内玩使命召唤19的详细步骤: 打开电脑,接通网络线,并保证网络连接正常。 打开网吧提供的游戏客户端。 在游戏客户端中搜索“使命召唤19”,并下载游戏。…

    other 2023年6月27日
    00
  • 解决springboot bean中大写的字段返回变成小写的问题

    解决Spring Boot Bean中大写的字段返回变成小写的问题 在Spring Boot中,当我们使用Jackson库进行JSON序列化和反序列化时,有时会遇到一个问题:大写的字段在返回结果中被转换成了小写。这可能会导致一些不便,特别是当我们需要保留字段的大小写时。下面是解决这个问题的完整攻略。 步骤一:添加Jackson的配置 首先,我们需要在Spri…

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