Android中五种常用对话框的使用

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 Android中五种常用对话框的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

场景

Android中常用的五种对话框为常规对话框、带列表的对话框、自定义的对话框、带进度条的对话框、带日期选择器的对话框。

实现

常规对话框

新建一个空项目,调整activity_main.xml的布局为LinearLayout,并添加一个Button,设置其点击事件

    <Button
        android:id="@+id/button_normal_dialog"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startNormalDialog"
        android:text="启动常规对话框" />

然后在activity中实现其点击方法

/***
 * 启动常规对话框
 * @param view
 */
public void startNormalDialog(View view){
    new AlertDialog.Builder(this)
            .setIcon(R.drawable.ic_launcher_background)
            .setTitle("公众号:霸道的程序猿")
            .setCancelable(false)
            .setMessage("是否删除该条记录")
            .setPositiveButton("是", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"删除记录成功",Toast.LENGTH_LONG).show();
                }
            })
            .setNegativeButton("否", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"取消删除记录",Toast.LENGTH_LONG).show();
                }
            })
            .show();
}

运行项目查看效果

Android中五种常用对话框的使用

带列表的对话框

在布局文件中添加一个按钮

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startListDialog"
        android:text="启动带列表的对话框" />

在activity中实现其点击方法

/**
 * 启动带列表的对话框
 * @param view
 */
public void startListDialog(View view){
            final String[] items = {"关注","公众号","霸道的程序猿","获取","编程教程与资源"};
            new AlertDialog.Builder(this)
                    .setTitle("公众号:霸道的程序猿")
                    .setCancelable(false)
                    .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_LONG).show();
                        }
                    })
                    .setPositiveButton("OK",null)
                    .show(); 

}

运行之后查看效果

Android中五种常用对话框的使用

自定义视图的对话框

在layout下新建layout资源文件dialog_view.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation= "vertical">
 
    <EditText
        android:id="@+id/text_username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="用户名"
        android:inputType="textPersonName" />
 
    <EditText
        android:id="@+id/text_pwd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="密码"
        android:inputType="textPersonName" />
</androidx.appcompat.widget.LinearLayoutCompat>

然后在主布局文件中添加一个按钮

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startCustomDialog"
        android:text="启动自定义的对话框" />

在activity中实现其点击方法

    /**
     * 启动自定义的对话框
     * @param view
     */
    public void startCustomDialog(View view){
                View v = View.inflate(this,R.layout.dialog_view,null);
                final EditText user = v.findViewById(R.id.text_username);
                final EditText pwd = v.findViewById(R.id.text_pwd);
 
                new AlertDialog.Builder(this)
                        .setTitle("公众号:霸道的程序猿")
                        .setCancelable(false)
                        .setView(v)
                        .setPositiveButton("登录", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                String username = user.getText().toString().trim();
                                String password = pwd.getText().toString().trim();
                                Toast.makeText(MainActivity.this,"用户名:"+username+"密码:"+password,Toast.LENGTH_LONG).show();
                            }
                        })
                        .show();
    }

运行之后查看效果

Android中五种常用对话框的使用

带进度条的对话框

在布局文件中添加按钮

    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startProgressDialog"
        android:text="启动带进度条的对话框" />

在activity中实现其点击方法

    /**
     * 启动带进度条的对话框
     * @param view
     */
    public void startProgressDialog(View view){
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("公众号:霸道的程序猿");
        progressDialog.setCancelable(false);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.show();
 
        new Thread(new Runnable() {
            @Override
            public void run() {
               for(inti=1;i<=20;i++){
                    try {
                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    progressDialog.setProgress(progressDialog.getProgress()+5);
                }
                progressDialog.dismiss();
            }
        }).start();
    }

运行之后查看效果

Android中五种常用对话框的使用

带日期选择器的对话框

在布局文件中添加按钮

    <Button
        android:id="@+id/button5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startDatePickDialog"
        android:text="启动带日期选择器的对话框" />

在activity中实现其点击方法

    /**
     * 启动带日期选择器的对话框
     * @param view
     */
    public void startDatePickDialog(View view){
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
 
        new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                Toast.makeText(MainActivity.this,"选中了"+year+"年"+month+"月"+dayOfMonth+"日",Toast.LENGTH_LONG).show();
            }
        },year,month,day).show();
    }

运行之后查看效果

Android中五种常用对话框的使用

activity_main.xml完整代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
 
    <Button
        android:id="@+id/button_normal_dialog"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startNormalDialog"
        android:text="启动常规对话框" />
 
    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startListDialog"
        android:text="启动带列表的对话框" />
 
 
    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startCustomDialog"
        android:text="启动自定义的对话框" />
 
 
    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startProgressDialog"
        android:text="启动带进度条的对话框" />
 
 
    <Button
        android:id="@+id/button5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="startDatePickDialog"
        android:text="启动带日期选择器的对话框" />
</LinearLayout>

MainActivity完整代码

package com.badao.androidstudy;
 
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
 
import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Toast;
 
import java.util.Calendar;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    /***
     * 启动常规对话框
     * @param view
     */
    public void startNormalDialog(View view){
        new AlertDialog.Builder(this)
                .setIcon(R.drawable.ic_launcher_background)
                .setTitle("公众号:霸道的程序猿")
                .setCancelable(false)
                .setMessage("是否删除该条记录")
                .setPositiveButton("是", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,"删除记录成功",Toast.LENGTH_LONG).show();
                    }
                })
                .setNegativeButton("否", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,"取消删除记录",Toast.LENGTH_LONG).show();
                    }
                })
                .show();
    }
 
    /**
     * 启动带列表的对话框
     * @param view
     */
    public void startListDialog(View view){
                final String[] items = {"关注","公众号","霸道的程序猿","获取","编程教程与资源"};
                new AlertDialog.Builder(this)
                        .setTitle("公众号:霸道的程序猿")
                        .setCancelable(false)
                        .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_LONG).show();
                            }
                        })
                        .setPositiveButton("OK",null)
                        .show();
    }
 
    /**
     * 启动自定义的对话框
     * @param view
     */
    public void startCustomDialog(View view){
                View v = View.inflate(this,R.layout.dialog_view,null);
                final EditText user = v.findViewById(R.id.text_username);
                final EditText pwd = v.findViewById(R.id.text_pwd);
 
                new AlertDialog.Builder(this)
                        .setTitle("公众号:霸道的程序猿")
                        .setCancelable(false)
                        .setView(v)
                        .setPositiveButton("登录", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                String username = user.getText().toString().trim();
                                String password = pwd.getText().toString().trim();
                                Toast.makeText(MainActivity.this,"用户名:"+username+"密码:"+password,Toast.LENGTH_LONG).show();
                            }
                        })
                        .show();
    }
 
 
    /**
     * 启动带进度条的对话框
     * @param view
     */
    public void startProgressDialog(View view){
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("公众号:霸道的程序猿");
        progressDialog.setCancelable(false);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.show();
 
        new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i=1;i<=20;i++){
                    try {
                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    progressDialog.setProgress(progressDialog.getProgress()+5);
                }
                progressDialog.dismiss();
            }
        }).start();
    }
 
 
    /**
     * 启动带日期选择器的对话框
     * @param view
     */
    public void startDatePickDialog(View view){
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
 
        new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                Toast.makeText(MainActivity.this,"选中了"+year+"年"+month+"月"+dayOfMonth+"日",Toast.LENGTH_LONG).show();
            }
        },year,month,day).show();
    }
 
 
 
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/136476.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!