Android Studio 1-1 Dialog对话框

Dialog对话框

一 常用对话框

1、普通对话框

效果:在这里插入图片描述

 //构建对象
                AlertDialog.Builder builder = new AlertDialog.Builder(this);

                //设置图标
                builder.setIcon(R.drawable.ic_launcher_background);
                //设置标题
                builder.setTitle("hello world");
                //设置内容
                builder.setMessage("我是Android");
                //设置确定按钮
                builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了ok", Toast.LENGTH_SHORT).show();
                    }
                });
                //设置取消按钮
                builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了cancel", Toast.LENGTH_SHORT).show();
                    }
                });
                //使用构建者 创建对话框
                AlertDialog dialog = builder.create();
                //切记显示
                dialog.show();

2、单选对话框

 //构建者
                AlertDialog.Builder builderSingle = new AlertDialog.Builder(this);
                //设置图标
                builderSingle.setIcon(R.drawable.ic_launcher_background);
                //设置标题
                builderSingle.setTitle("昵称");

                builderSingle.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了ok", Toast.LENGTH_SHORT).show();
                    }
                });
                builderSingle.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了cancel", Toast.LENGTH_SHORT).show();
                    }
                });

                //设置单选列表
                final String[] items = {"朔風", "岚月", "金鸿"};

                //参数一 列表  参数二 默认选中下表  参数三 事件监听
                builderSingle.setSingleChoiceItems(items, 2, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你选中烦恼的" + items[which], Toast.LENGTH_SHORT).show();
                    }
                });
                //使用建造者创建对话框
                AlertDialog dialogSingle = builderSingle.create();
                //显示
                dialogSingle.show();

3、多选对话框

final String[] itemsMultiple = {"玄武", "青龙", "朱雀", "白虎"};
                final boolean[] flags = {true, false, true, false};
                //构建着
                AlertDialog.Builder builderMultple = new AlertDialog.Builder(this);
                //设置图标
                builderMultple.setIcon(R.drawable.ic_launcher_background);
                //设置标题
                builderMultple.setTitle("四象");
                builderMultple.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        for (int i = 0; i < flags.length; i++) {
                            if (flags[i]) {
                                Toast.makeText(MainActivity.this, "是" + itemsMultiple[i], Toast.LENGTH_SHORT).show();
                            }
                        }
                    }
                });
                builderMultple.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了cancel", Toast.LENGTH_SHORT).show();
                    }
                });

                builderMultple.setMultiChoiceItems(itemsMultiple, flags, new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        flags[which] = isChecked;
                    }
                });
                AlertDialog dialogMultiple = builderMultple.create();
                dialogMultiple.show();

4、模糊进度条对话框

 //实例化对象
                final ProgressDialog dialog_indistinct=new ProgressDialog(this);
                /**
                 * 设置属性
                 */
                //设置圆圈
                dialog_indistinct.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                dialog_indistinct.setMax(100);
                dialog_indistinct.setMessage("正在下载");
                //显示
                dialog_indistinct.show();
                //模拟定时器
                final Timer timer=new Timer();
                timer.schedule(new TimerTask() {
                    int progress=0;
                    @Override
                    public void run() {
                        if(progress==100){
                            dialog_indistinct.dismiss();//失去焦点
                            timer.cancel();
                        }
                        dialog_indistinct.setProgress(progress+=10);
                    }
                },0,1000);//从0秒执行,每隔1000毫秒执行一次

5、精确进度条对话框

//实例化对象
                final ProgressDialog dialog_accrate=new ProgressDialog(this);
                //设置属性
                dialog_accrate.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平央视
                dialog_accrate.setMax(100);
                dialog_accrate.setMessage("正在下载");
                //显示
                dialog_accrate.show();
                //模拟定时器
                final Timer timer_accrate=new Timer();
                timer_accrate.schedule(new TimerTask() {
                    int progress=0;
                    @Override
                    public void run() {
                        if(progress==100){
                            dialog_accrate.dismiss();//失去焦点
                            timer_accrate.cancel();
                        }
                        dialog_accrate.setProgress(progress+=10);
                    }
                },0,1000);//从0秒执行,每隔1000毫秒执行一次

6、时间对话框

 /**
                 * @param context 上下文
                 * @param listener 监听器
                 * @param hourOfDay 默认的时
                 * @param minute 默认的分钟
                 * @param is24HourView 是否采用24时禁止
                 */
                //日历对象
                Calendar calendarTime = Calendar.getInstance();
                //实例化对象
                new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        Toast.makeText(MainActivity.this, hourOfDay + ":" + minute, Toast.LENGTH_SHORT).show();
                    }
                }, calendarTime.get(Calendar.HOUR), calendarTime.get(Calendar.MINUTE), true).show();

7、日历对话框

 /**
                 * @param context 上下文
                 * @param listener 监听器
                 * @param year 默认的年
                 * @param month 默认的月
                 * @param dayOfMonth 默认的日
                 */
                //日历对象
                Calendar calendar = Calendar.getInstance();
                new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        Toast.makeText(MainActivity.this, year + "-" + (month + 1) + "-" + dayOfMonth, Toast.LENGTH_SHORT).show();
                    }
                }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();

8、自定义对话框

自定义类

package com.example.day01work;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MyDialog extends Dialog {

    private Button yes;
    private Button no;
    private TextView title;
    private TextView message;

    private String TitleStr;
    private String MessageStr;
    private String yesStr;
    private String noStr;

    private onYesOnclickListener yesOnclickListener;
    private onNoOnclickListener noOnclickListener;

    public interface onYesOnclickListener {
        public void onYesOnclick();
    }
    public interface onNoOnclickListener {
        public void onNoOnclick();
    }

    public void setYesOnclickListener(String yesStr,onYesOnclickListener yesOnclickListener) {
        this.yesStr = yesStr;
        this.yesOnclickListener = yesOnclickListener;
    }

    public void setNoOnclickListener(onNoOnclickListener noOnclickListener) {
        this.noOnclickListener = noOnclickListener;
    }

    public MyDialog(Context context) {
        super(context);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom);

        title =  findViewById(R.id.title);
        message = findViewById(R.id.message);
        no = findViewById(R.id.no);
        yes = findViewById(R.id.yes);

        if (TitleStr != null){
            title.setText(TitleStr);
        }
        if (MessageStr != null) {
            message.setText(MessageStr);
        }
        if (yesStr != null) {
            yes.setText(yesStr);
        }
        if (noStr != null) {
            no.setText(noStr);
        }

        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (yesOnclickListener != null){
                    yesOnclickListener.onYesOnclick();
                    dismiss();
                }
            }
        });
        no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (noOnclickListener != null) {
                    noOnclickListener.onNoOnclick();
                    dismiss();
                }
            }
        });

    }

    public void setTitleStr(String titleStr) {
        TitleStr = titleStr;
    }

    public void setMessageStr(String messageStr) {
        MessageStr = messageStr;
    }

    public void setYesStr(String yesStr) {
        this.yesStr = yesStr;
    }

    public void setNoStr(String noStr) {
        this.noStr = noStr;
    }
}

实例化后

   MyDialog myDialog = new MyDialog(MainActivity.this);
                myDialog.setTitleStr("提示");
                myDialog.setMessageStr("保护视力,眼保健操,现在开始");

                myDialog.setYesOnclickListener("这就是ok呐!", new MyDialog.onYesOnclickListener() {
                    @Override
                    public void onYesOnclick() {
                        Toast.makeText(MainActivity.this, "这就是ok呐!", Toast.LENGTH_SHORT).show();
                    }
                });
                myDialog.setNoOnclickListener(new MyDialog.onNoOnclickListener() {
                    @Override
                    public void onNoOnclick() {
                        Toast.makeText(MainActivity.this, "这就是取消的no 方法呐!", Toast.LENGTH_SHORT).show();
                    }

                });
                myDialog.show();
发布了20 篇原创文章 · 获赞 4 · 访问量 910

猜你喜欢

转载自blog.csdn.net/v1141261428/article/details/98241035
今日推荐