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日

相关文章

  • Java框架设计灵魂之反射的示例详解

    Java框架设计中的反射是非常重要的一环,它可以让我们在运行时动态地获取并操作对象信息。下面详细讲解“Java框架设计灵魂之反射的示例详解”的完整攻略。 什么是反射 Java反射是指程序可以在运行时动态获取类的信息并操作对象的属性、方法等。在Java中,反射可以通过java.lang.reflect包中的类实现。 反射的用途 反射有很多用途,比如: 动态地创…

    other 2023年6月27日
    00
  • 新手入门Jvm– JVM对象创建与内存分配机制

    新手入门Jvm– JVM对象创建与内存分配机制 简介 JVM(Java虚拟机)是Java程序的运行环境,它负责将Java字节码转换为机器码并执行。在JVM中,对象的创建和内存分配是非常重要的概念。本攻略将详细介绍JVM对象创建和内存分配的机制。 对象创建过程 在JVM中,对象的创建过程包括以下几个步骤: 类加载:首先,JVM会加载类的定义信息,包括类的结构…

    other 2023年8月2日
    00
  • Android Socket实现多个客户端即时通信聊天

    下面是Android Socket实现多个客户端即时通信聊天的完整攻略: 什么是Socket通信? Socket通信是指通过网络协议栈,将数据从一个进程中传递到另一个进程的机制。Socket通信可以用于实现客户端和服务器之间的通信。在传统的C/S架构中,服务器端通过Socket监听一个特定的端口,等待客户端的连接,一旦有了客户端的连接请求,服务器就会为该连接…

    other 2023年6月25日
    00
  • TCP长连接实践与挑战

    TCP长连接实践与挑战 TCP是一种可靠的传输协议,而HTTP作为应用层协议的一种,使用TCP作为其传输层的协议。TCP的可靠性让其成为HTTP协议的首选传输层协议。而在HTTP/1版本中,每个HTTP请求都会建立一条TCP连接。这种“短连接”的方式在一定程度上限制了HTTP的性能。因此,HTTP/1.x开始出现了使用持久连接的方式,即“HTTP长连接”或者…

    其他 2023年3月28日
    00
  • C#上位机与三菱PLC通讯的实现步骤(图文)

    很抱歉,由于当前平台的限制,我无法以图文形式提供完整攻略。但是,我可以为您提供一份详细的步骤说明,以及两个示例说明。请参考以下内容: C#上位机与三菱PLC通讯的实现步骤 安装必要的软件和驱动:首先,确保您的计算机上已安装了适用于三菱PLC的通讯驱动程序,并且已安装了Visual Studio或其他C#开发环境。 创建C#项目:打开Visual Studio…

    other 2023年10月18日
    00
  • Android中读取中文字符的文件与文件读取相关介绍

    以下是关于Android中读取中文字符的文件与文件读取相关介绍的完整攻略: Android中读取中文字符的文件与文件读取相关介绍 读取文件 在Android中,可以使用FileInputStream或BufferedReader等类来读取文件。以下是一个示例: try { File file = new File(\"path/to/file.tx…

    other 2023年10月13日
    00
  • MySQL命令行删除表中的一个字段

    MySQL命令行删除表中的一个字段的完整攻略分为以下几个步骤: 步骤一:进入MySQL命令行 首先需要通过以下命令进入MySQL命令行: mysql -u username -p 其中,username为你的MySQL用户名。输入以上命令后会提示你输入密码,输入密码后回车即可进入MySQL命令行。 步骤二:选择数据库 进入MySQL命令行后,需要选择要操作的…

    other 2023年6月25日
    00
  • Python中变量的作用域的具体使用

    Python中变量的作用域的具体使用攻略 在Python中,变量的作用域指的是变量在程序中的可见性和访问范围。了解变量的作用域对于编写可维护和可扩展的代码非常重要。本攻略将详细讲解Python中变量作用域的具体使用。 1. 全局作用域 全局作用域是指在整个程序中都可见的变量。在任何函数内部都可以访问全局作用域中的变量。 示例1: x = 10 # 全局变量 …

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