android实现模拟加载中的效果

实现模拟加载中的效果,一般可以通过以下方式实现:

方法一:使用ProgressDialog

ProgressDialog是Android内置的一种对话框,可以方便地实现加载中的效果。

步骤一:创建ProgressDialog

在需要展示加载中效果的Activity中,创建ProgressDialog,并设置相关参数。

ProgressDialog progressDialog = new ProgressDialog(Activity.this);
progressDialog.setTitle("加载中");
progressDialog.setMessage("数据加载中,请稍后...");
progressDialog.setCancelable(false);//屏蔽返回键和屏幕外点击事件

步骤二:显示ProgressDialog

在需要展示加载中效果的地方,显示ProgressDialog。

progressDialog.show();

步骤三:关闭ProgressDialog

在数据加载完成后,关闭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);
        progressDialog = new ProgressDialog(MainActivity.this); //创建ProgressDialog
        progressDialog.setTitle("加载中");
        progressDialog.setMessage("数据加载中,请稍后...");
        progressDialog.setCancelable(false);//屏蔽返回键和屏幕外点击事件
        progressDialog.show();//显示ProgressDialog
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                progressDialog.dismiss();//关闭ProgressDialog
            }
        }).start();
    }
}

方法二:使用自定义对话框

如果需要实现更加自定义的数据加载中效果,可以考虑通过自定义对话框实现。

步骤一:创建自定义布局

创建一个自定义布局,布局中可以包含一些需要展示的动画、图片等效果。

步骤二:将自定义布局设置给Dialog

通过AlertDialog.Builder创建一个Dialog,并将自定义布局设置给Dialog。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(R.layout.dialog_custom_loading);
AlertDialog dialog = builder.create();
dialog.show();

步骤三:在数据加载完成后关闭Dialog

在数据加载完成后,调用Dialog的dismiss()方法关闭Dialog。

dialog.dismiss();

示例二:使用自定义对话框

示例中自定义布局中添加了一个ProgressBar来展示加载中效果。

activity_main.xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_show_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="展示自定义对话框"
        android:textSize="18sp" />

</LinearLayout>

dialog_custom_loading.xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#80000000"
    android:padding="30dp">

    <ProgressBar
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_below="@+id/pb_loading"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="数据正在加载中,请稍后..."
        android:textColor="#ffffff" />
</RelativeLayout>

MainActivity中代码:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btnShowDialog = findViewById(R.id.btn_show_dialog);
        btnShowDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setView(R.layout.dialog_custom_loading);//将自定义布局设置给Dialog
                AlertDialog dialog = builder.create();
                dialog.show();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Thread.sleep(3000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        dialog.dismiss();//关闭Dialog
                    }
                }).start();
            }
        });
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:android实现模拟加载中的效果 - Python技术站

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

相关文章

  • 《方方格子》(wps版)_v3.6.6.0

    《方方格子》(wps版)_v3.6.6.0 近年来,随着科技的不断进步,电脑已经成为我们日常生活中不可或缺的工具之一。而在使用电脑时,一个好用的文字处理软件可以大大提高我们的工作效率。那么,今天我要向大家介绍的就是一款非常受欢迎的文字处理软件——《方方格子》(wps版)_v3.6.6.0。 什么是《方方格子》(wps版)_v3.6.6.0? 《方方格子》(w…

    其他 2023年3月29日
    00
  • 详解React+Koa实现服务端渲染(SSR)

    详解React+Koa实现服务端渲染(SSR) 什么是服务端渲染(SSR) 服务端渲染是指在服务端生成页面的 HTML 内容,然后将其发送给浏览器进行展示,相较于传统 SPA 的客户端渲染,服务端渲染具有一些优势: 更好的 SEO 表现,搜索引擎能够抓取到页面内容。 更快的首屏加载速度,因为生成的 HTML 会比客户端渲染快很多。 更好的用户体验,因为用户看…

    other 2023年6月27日
    00
  • Linux 下 安装jdk 1.7

    Linux 下 安装JDK 1.7 在 Linux 下安装 JDK 1.7 通常需要经过以下步骤: 1. 下载 JDK 1.7 JDK 1.7 的安装文件可以在 Oracle 官网下载,也可以在其他可信的第三方网站下载,建议选择官方网站进行下载以确保文件的安全性。 2. 解压 JDK 1.7 下载完成后,需要将文件解压至指定文件夹中。解压方式为执行以下命令:…

    其他 2023年3月28日
    00
  • GIT如何修改账号密码重新登录和保存密码

    首先,我们需要了解Git的本地配置和全局配置两种配置方式。本地配置只会影响当前仓库,而全局配置会影响所有的仓库。 修改本地配置 查看当前本地配置 在终端中输入以下命令: git config –list 可以查看到本地仓库当前的配置,包含用户名和邮箱信息。 修改用户名或邮箱 如果需要修改用户名或邮箱,可以通过以下命令进行修改: git config use…

    other 2023年6月27日
    00
  • 易语言怎么输入负数?易语言输入负数的方法

    很抱歉,由于当前平台的限制,我无法以标准的markdown格式文本回答您的问题。但是,我可以为您提供详细的攻略,包含两个示例说明。以下是关于易语言输入负数的方法的完整攻略: 方法一:使用负号前缀 在易语言中,可以使用负号前缀来表示负数。例如,如果要输入-10,可以直接在输入框中输入\”-10\”。 示例说明: a = -10 方法二:使用变量赋值 可以使用变…

    other 2023年10月19日
    00
  • 微信小程序开发中组件的生命周期详细介绍

    微信小程序开发中,组件的生命周期是指组件实例从创建到销毁的整个过程中的各个环节。组件的生命周期可以分为创建、更新和销毁三个阶段,每个阶段有对应的生命周期函数,开发者可以在生命周期函数中编写业务逻辑代码,来响应组件的生命周期事件。 组件的生命周期 一个组件的完整生命周期会包括以下三个阶段: 创建阶段 组件创建阶段的生命周期函数: created attache…

    other 2023年6月27日
    00
  • Windows Server 2019 DHCP服务器配置与管理——理论 Ⅰ

    下面是关于“Windows Server 2019 DHCP服务器配置与管理——理论 Ⅰ”的完整攻略。 1. 理论部分 1.1 DHCP概述 DHCP是Dynamic Host Configuration Protocol的缩写,中文翻译为动态主机配置协议。它是一个在局域网(LAN)中,负责为客户机分配IP地址的标准化协议。 1.2 DHCP原理 DHCP服…

    other 2023年6月27日
    00
  • 一文带你熟练掌握Java中的日期时间相关类

    一文带你熟练掌握Java中的日期时间相关类 前言 在Java编程中,日期时间操作是一个常见的需求,涉及到的类也比较多,如java.util.Date、java.util.Calendar、java.time.LocalDate、java.time.LocalDateTime等等。面对如此众多的类,我们应该如何进行选择使用呢?这篇文章将为您介绍Java中常用的…

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