android实现模拟加载中的效果

yizhihongxing

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

方法一:使用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日

相关文章

  • vue常用属性汇总

    以下是关于Vue常用属性的完整攻略,包括属性的定义、使用方法、示例说明和注意事项。 属性的定义 在Vue中,属性是指组件或实例中的数据或方法。属性可以通过data、props、computed、methods等选项来定义和使用。 data:用于定义组件或实例中的数据。 props:用于定义组件之间传递的数据。 computed:用于定义计算属性,即根据已有属…

    other 2023年5月8日
    00
  • C语言初识变量常量字符串转义符及注释方式简介

    C语言初识变量常量字符串转义符及注释方式简介 变量和常量 在C语言中,我们可以定义变量来存储数据。变量就像一个盒子,可以存储不同类型的数据,包括整数,浮点数,字符等等。在C语言中,我们可以使用已经定义好的数据类型来定义变量。 // 定义一个整型变量a,并且给它赋值为10 int a = 10; // 定义一个浮点型变量b,并且给它赋值为3.14 float …

    other 2023年6月20日
    00
  • apache性能测试工具ab使用详解

    Apache性能测试工具ab使用详解攻略 Apache Bench(ab)是一个常用的Apache性能测试工具,用于模拟并发请求并评估服务器的性能。以下是使用ab进行性能测试的详细攻略: 1. 安装ab工具 首先,确保您的系统已经安装了Apache服务器。ab工具通常随Apache服务器一起安装。您可以通过以下命令检查ab工具是否已安装: ab -V 如果显…

    other 2023年10月17日
    00
  • 四个例子说明C语言 全局变量

    C语言全局变量的完整攻略 全局变量是在函数外部定义的变量,可以在程序的任何地方使用。在C语言中,全局变量具有以下特点: 全局作用域:全局变量在整个程序中都是可见的,可以被任何函数访问和修改。 静态存储持续性:全局变量在程序运行期间一直存在,直到程序结束才会被销毁。 默认初始化:如果没有显式地对全局变量进行初始化,它们会被默认初始化为0。 下面通过四个例子来详…

    other 2023年7月28日
    00
  • Windows中的批处理的常用符号介绍

    下面是Windows中的批处理的常用符号介绍的完整攻略。 批处理符号介绍 批处理文件是面向计算机的一个命令脚本,可以自动化完成某一系列操作。在编写批处理脚本时,需要掌握一些特殊符号来完成某些操作。 echo echo命令可以输出文本信息到屏幕上,语法如下: echo <字符串> 示例: 假设要输出“Hello World!”到屏幕上,可以使用以下…

    other 2023年6月26日
    00
  • C++非递归建立二叉树实例

    C++非递归建立二叉树实例的攻略如下: 步骤一:定义二叉树的结构体 首先,我们需要定义一个二叉树的结构体。在这个结构体中,我们需要定义每个节点的值、左右子树指针。 struct TreeNode { int val; TreeNode* left; TreeNode* right; // 构造函数 TreeNode(int x) : val(x), left…

    other 2023年6月27日
    00
  • java获取http请求头的方法示例

    在Java中,我们可以使用HttpServletRequest对象来获取HTTP请求头信息。本文将介绍如何使用HttpServletRequest对象来获取HTTP请求头信息,并提供两个示例说明。 示例一:获取单个HTTP请求信息 以下是一个示例,演示如何获取单个HTTP请求头信息: import javax.servlet.http.HttpServlet…

    other 2023年5月9日
    00
  • 防盗链与x-tengine-error:deniedbyrefereracl

    以下是关于“防盗链与x-tengine-error:deniedbyrefereracl”的完整攻略,包含两个示例。 防盗链与x-tengine-error:deniedbyrefercl 防盗链是一种保护网站资源的方法,可以防止其他站直接链接到你的资源,从而减少带宽消和保护网站安全。但是,有时候防盗链会导致一些问题,如x-tengine-error:den…

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