第一天---对话框

第1天Dialog对话框

    • 普通对话框
    • 单选对话框
    • 多选对话框
    • 自定义对话框
    • 进度条对话框
    • 日期选择对话框
    • 选择时间对话框
    • 完全自定义对话框
    • 总布局文件

普通对话框

 public void putong(View view) {
        //1.构造者模式
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        //设置属性
        //设置图标
        builder.setIcon(R.mipmap.immfd);//Icon图标
        //设置标题
        builder.setTitle("情感问答");
        //设置消息
        builder.setMessage("你有女朋友吗?");
        //2.提示文字
        //确定按钮
        //Positive确定;积极的
        builder.setPositiveButton("有", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "你竟然有女朋友,那可要好好珍惜!!!", Toast.LENGTH_SHORT).show();
            }
        });
        //取消按钮
        //Negative取消;消极的
        builder.setNegativeButton("没有", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "程序猿要早点脱单,要不然会被逼婚的", Toast.LENGTH_SHORT).show();
            }
        });
        //3.构建对话框
        AlertDialog alertDialog = builder.create();//create创建
        //4.显示
        alertDialog.show();
    }

单选对话框

 public void danxuan(View view) {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

        builder.setIcon(R.mipmap.immfd);//Icon图标
        //设置标题
        builder.setTitle("选择你喜欢的语言!");
        //内部类调用被final修饰
        final String[] str = new String[]{"java", "php", "C++"};
        //设置点击事件
        //第一个数组,第二个点击的下标,第三个点击事件
        builder.setSingleChoiceItems(str, 0, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, str[i], Toast.LENGTH_SHORT).show();
            }
        });
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "取消选择了", Toast.LENGTH_SHORT).show();
            }
        });


        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }

多选对话框

 public void duoxuan(View view) {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.mipmap.immfd);
        builder.setTitle("标题");

        //定义一个数组定义选项的内容
        final String[] strings = new String[]{"1", "2", "3"};
        //定义一个对应的boolean类型数组
        final boolean[] boo = {true, false, true};

        /**
         * 多选
         * 1.数据源
         * 2.选中的下标
         */
        builder.setMultiChoiceItems(strings, boo, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                boo[i] = b;

                Toast.makeText(MainActivity.this, "" + i + b, Toast.LENGTH_SHORT).show();
            }
        });
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "取消选择了", Toast.LENGTH_SHORT).show();
            }
        });

        AlertDialog alertDialog = builder.create();
        alertDialog.show();

    }

自定义对话框

public void zidingyi(View view) {
        //创建自定义布局
        View inflate = LayoutInflater.from(this).inflate(R.layout.dialog_item, null);
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.mipmap.immfd);
        builder.setTitle("标题");
        //将布局设置到这个创建的构造者模式里边
        builder.setView(inflate);

        AlertDialog alertDialog = builder.create();
        alertDialog.show();


    }

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="标题"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="文本"
        android:gravity="center"
        android:drawableBottom="@mipmap/ic_launcher"
        />

</LinearLayout>

进度条对话框

 //进度条对话框
    public void jindu(View view) {
        //创建进度条
        final ProgressDialog dialog = new ProgressDialog(MainActivity.this);

        //设置消息
        dialog.setMessage("正在下载……");
        //设置最大值
        dialog.setMax(100);
        //设置进度值
        dialog.setProgress(0);
        //设置第二进度值
        dialog.setSecondaryProgress(0);
        //设置显示模式
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

        //定义时间
        final Timer timer = new Timer();
        //创建匿名内部类
        timer.schedule(new TimerTask() {
            //定义一个int类型用来增加进度
            int i = 0;

            @Override
            public void run() {
                i += 10;//增加进度
                //设置进度
                //增加完成之后设置
                dialog.setProgress(i);
                //判断是否大于等于最大值
                if (i >= 100) {
                    //结束
                    timer.cancel();
                    //dismiss隐藏对话框
                    dialog.dismiss();
                }
            }
            //delay设置延时多长时间开始
            //period设置每隔多长时间执行一次
        }, 3000, 1000);
        //显示
        dialog.show();


    }

日期选择对话框

 public void shijian(View view) {
        //创建 系统时间的方法
        Calendar instance = Calendar.getInstance();
        //i   年
        //i1  月
        //i2  日
        new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                Toast.makeText(MainActivity.this, "年:" + i + "月:" + i1 + "日:" + i2, Toast.LENGTH_SHORT).show();

                //设置当前的年、月、日并调用显示
            }
        }, instance.get(Calendar.YEAR), instance.get(Calendar.MONTH), instance.get(Calendar.DAY_OF_MONTH)).show();


    }

选择时间对话框

public void data(View view) {
        //设置系统时间的方法
        Calendar instance = Calendar.getInstance();
        //i  小时HOUR
        //i1 分钟MINUTE
        new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker timePicker, int i, int i1) {
                Toast.makeText(MainActivity.this, i + "点:" + i1 + "分:", Toast.LENGTH_SHORT).show();
            }
        }, instance.get(Calendar.HOUR), instance.get(Calendar.MINUTE), true).show();


    }

完全自定义对话框

 public void wanquan(View view) {

        //创建的自己写的自定义方法
        final MyDialog myDialog = new MyDialog(MainActivity.this);

        //设置信息
        myDialog.setMessageStr("你好");
        //设置头
        myDialog.setTitleStr("我是谁?");
        //设置点击确定
        myDialog.setYesStr("好");
        //设置点击取消
        myDialog.setNoStr("不好");

        //设置确定的点击事件
        myDialog.setYesOnclickListener(new MyDialog.YesOnclickListener() {
            @Override
            public void Onclick() {
                Toast.makeText(MainActivity.this, "点击了yes", Toast.LENGTH_SHORT).show();
                myDialog.dismiss();
            }
        });
        //设置取消的点击事件
        myDialog.setNoOnclikListener(new MyDialog.NoOnclikListener() {
            @Override
            public void NoOnclick() {
                Toast.makeText(MainActivity.this, "点击了no", Toast.LENGTH_SHORT).show();
                myDialog.dismiss();
            }
        });
        
        
        myDialog.show();


    }

自己创建的类MyDialog

package com.bb.day01;

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 TextView title;
    private TextView message;
    private Button no;
    private Button yes;

    private String titleStr;
    private String messageStr;
    private String yesStr;
    private String noStr;

    //重写set方法
    public void setMessageStr(String messageStr) {
        this.messageStr = messageStr;
    }

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

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

    public void setTitleStr(String titleStr) {
        this.titleStr = titleStr;
    }

    public MyDialog(Context context) {
        super(context);
    }
    //点击事件
        private YesOnclickListener yesOnclickListener;
    public interface YesOnclickListener{
        void Onclick();
    }

    public void setYesOnclickListener(YesOnclickListener yesOnclickListener) {
        this.yesOnclickListener = yesOnclickListener;
    }

    //接口回掉no点击事件
    private NoOnclikListener noOnclikListener;
    //定义一个接口公告的
    public interface NoOnclikListener{
        //创建方法
        void NoOnclick();
    }
    //创建set方法
    public void setNoOnclikListener(NoOnclikListener noOnclikListener) {
        this.noOnclikListener = noOnclikListener;
    }

    //创建OnCreate方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //将布局设置到自己写的布局
        setContentView(R.layout.zidingyi_item);
        //控件初始化
        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);
        }
        //设置点击事件
        no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                noOnclikListener.NoOnclick();
            }
        });
        //设置点击事件
        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                yesOnclickListener.Onclick();
            }
        });
    }
}

总布局文件

<?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:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="弹出普通对话框"
        android:onClick="putong"
    android:id="@+id/dilogOne"
    />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="弹出单选对话框"
        android:onClick="danxuan"
        android:id="@+id/dilogTwo"
        />
    <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="弹出多选对话框"
    android:onClick="duoxuan"
    android:id="@+id/dilogduoxuan"
    />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="自定义对话框"
        android:onClick="zidingyi"
        android:id="@+id/zidingyi"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="进度条对话框"
        android:onClick="jindu"
        android:id="@+id/jindu"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="日期选择对话框"
        android:onClick="shijian"
        android:id="@+id/shijian"
        />
    <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="时间对话框"
    android:onClick="data"
    android:id="@+id/data"
    />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="完全自定义对话框"
        android:onClick="wanquan"
        android:id="@+id/wanquan"
        />

</LinearLayout>

你可能感兴趣的:(安卓一,安卓二)