📌  相关文章
📜  如何在 Android 中实现加载 AlertDialog?

📅  最后修改于: 2022-05-13 01:54:18.717000             🧑  作者: Mango

如何在 Android 中实现加载 AlertDialog?

AlertDialog被定义为在用户执行或提交特定操作时向用户显示特定消息的小窗口。在本文中,我们将构建一个简单的 android 应用程序,我们将在其中学习如何实现加载 AlertDialog,这意味着每当用户单击提交按钮时,它都会显示一个带有加载进度条和消息的对话框,请稍候,然后时间它被解雇并显示一条消息完成。下面给出了一个示例 GIF,以了解我们将在本文中做什么。请注意,我们将使用Java语言来实现这个项目。

分步实施

第 1 步:创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Java作为编程语言。

步骤 2:使用 activity_main.xml 文件

在这一步中,我们将设计我们的activity_main.xml。这些是我们将添加到我们的 activity_main.xml 中的以下内容



  • 带有 GEEKSOFGEEKS 符号图像的 ImageView。
  • 两个 EditText,一个用于用户名,一个用于密码字段
  • 带有文本提交的按钮。

导航到app > res > layout > activity_main.xml并将以下代码添加到该文件中。下面是activity_main.xml文件的代码

XML


  
    


XML


  
    
  
    
      


Java
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.LayoutInflater;
  
public class dialog {
    // 2 objects activity and dialog
    private Activity activity;  
    private AlertDialog dialog;
  
    // constructor of dialog class 
    // with parameter activity
    dialog(Activity myActivity) {   
        activity = myActivity;
    }
  
    @SuppressLint("InflateParams")
    void startLoadingdialog() {
          
        // adding ALERT Dialog builder object and passing activity as parameter
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
  
        // layoutinflater object and use activity to get layout inflater
        LayoutInflater inflater = activity.getLayoutInflater(); 
        builder.setView(inflater.inflate(R.layout.loading, null));
        builder.setCancelable(true);
  
        dialog = builder.create();
        dialog.show();
    }
  
    // dismiss method
    void dismissdialog() {
        dialog.dismiss();
    }
      
}


XML

    


XML


  
    
  
    
      


Java
import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
  
public class finished extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_finished);
    }
}


Java
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
  
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
    Button login_btn;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        login_btn = findViewById(R.id.button);
  
        // creating object of Loadingdialog class and passing MainActivity as argument
        final dialog loadingdialog = new dialog(MainActivity.this);
  
        // onclicklistener implementation
        login_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
  
                // invoking startLoadingDialog method
                loadingdialog.startLoadingdialog();
  
                // using handler class to set time delay methods
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        // after 4 seconds
                        loadingdialog.dismissdialog();
                        Intent i = new Intent(MainActivity.this, finished.class);
                        // starting finished activity
                        startActivity(i);
                    }
                }, 4000); // 4 seconds
            }
        });
    }
}


第 3 步:创建一个新的布局文件

在这一步中,我们将创建一个新的布局文件来设计我们的对话框。现在创建一个新的布局文件来设计包含加载进度条和带有文本的文本字段的对话框,请稍候。要创建新的布局文件,请按照以下步骤操作:右键单击布局 > 新建 > 布局资源文件并将其命名为加载并在其中添加以下代码。

下面是loading.xml文件的代码:

XML



  
    
  
    
      

第四步:新建一个Java文件



第四步新建一个名为Dialog的Java文件来实现alert对话框和startloadingdialog、dismissdialog等方法。 startloadingdialog函数将有一个 AlertDialog,在调用 startloadingdialog函数,一个警报加载对话框将出现在用户屏幕上,该对话框在 4 秒后消失。在 dialog.dismiss 方法的帮助下,dismissdialog函数将关闭对话框。下面是对话框的代码。 Java文件:

Java

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.LayoutInflater;
  
public class dialog {
    // 2 objects activity and dialog
    private Activity activity;  
    private AlertDialog dialog;
  
    // constructor of dialog class 
    // with parameter activity
    dialog(Activity myActivity) {   
        activity = myActivity;
    }
  
    @SuppressLint("InflateParams")
    void startLoadingdialog() {
          
        // adding ALERT Dialog builder object and passing activity as parameter
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
  
        // layoutinflater object and use activity to get layout inflater
        LayoutInflater inflater = activity.getLayoutInflater(); 
        builder.setView(inflater.inflate(R.layout.loading, null));
        builder.setCancelable(true);
  
        dialog = builder.create();
        dialog.show();
    }
  
    // dismiss method
    void dismissdialog() {
        dialog.dismiss();
    }
      
}

第 5 步:创建矢量资产图标

在这一步中,我们将创建一个矢量资产图标,我们将在第 6 步中使用该图标来设计在执行或调用关闭对话框函数后出现在屏幕上的布局。使用以下步骤为单击图标创建一个新的矢量资产:右键单击可绘制 > 新建 > 矢量资产并搜索检查 > 选择并完成

fig = 矢量资产

XML


    

将颜色代码更改为绿色后:  

图 = 矢量资产

第 6 步:在这一步中,我们将创建一个新活动,其中包含我们在上一步(第 5 步)中创建的矢量资产点击图标,以及一个带有文本的 TextView,该活动将在关闭后对用户可见4 秒间隔内发生的对话。以下是在 ImageView 和文本完成的 TextView 的帮助下实现矢量资产单击图标的 xml 代码。

1.xml文件

XML



  
    
  
    
      

Java文件



无需更改此活动的Java类中的任何内容

Java

import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
  
public class finished extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_finished);
    }
}

第 7 步: 主要活动。 Java文件

现在在最后一步,我们将在 MainActivity 的提交按钮上添加 onclick 侦听器。 Java文件。

方法:

首先,我们将创建一个对话框类的对象,在找到我们提交按钮id的视图后,我们将在提交按钮上实现set onclicklistener方法并调用或实现我们在对话框类中创建的启动加载函数并使用在处理程序类中,我们实现了dismissdialog函数的时间延迟方法,并使用在4 秒延迟时间后将用户带到完成活动的意图启动新的活动方法。

Java

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
  
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
    Button login_btn;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        login_btn = findViewById(R.id.button);
  
        // creating object of Loadingdialog class and passing MainActivity as argument
        final dialog loadingdialog = new dialog(MainActivity.this);
  
        // onclicklistener implementation
        login_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
  
                // invoking startLoadingDialog method
                loadingdialog.startLoadingdialog();
  
                // using handler class to set time delay methods
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        // after 4 seconds
                        loadingdialog.dismissdialog();
                        Intent i = new Intent(MainActivity.this, finished.class);
                        // starting finished activity
                        startActivity(i);
                    }
                }, 4000); // 4 seconds
            }
        });
    }
}

输出:

1. 家庭活动

图 = 主屏幕

2.点击

图 = 加载对话框

3. 4 秒后

图 = 单击矢量资产

输出视频:

项目链接:点我