多种对话框模式

普通对话框

				 //构建者
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                //设置属性
                builder.setIcon(R.drawable.ic_launcher_background);//设置图标
                builder.setTitle("压了个呸得!");//设置标题
                builder.setMessage("说:你是猪。");//设置内容
                //设置确定按钮
                builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "点我就对了!嘻嘻~", Toast.LENGTH_SHORT).show();
                    }
                });
                //设置取消按钮
                builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "看准点再点,我是你永远得不到爸爸!", Toast.LENGTH_SHORT).show();
                    }
                });
                //使用建造者创建对话框
                AlertDialog dialog = builder.create();
                //显示
                dialog.show();

单选对话框

 				//构建者
                AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
                //设置属性
                builder1.setIcon(R.drawable.ic_launcher_background);//设置图标
                builder1.setTitle("女朋友和妈妈同时掉水里你救谁?");//设置标题
                builder1.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "明智之举哦!棒棒!", Toast.LENGTH_SHORT).show();
                    }
                });
                builder1.setNegativeButton("cancle", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "犹豫了吗?", Toast.LENGTH_SHORT).show();
                    }
                });
                final String[] item = {"妈妈","女朋友","救命"};
                //设置单选列表
                //参数1:列表 参数2:默认选中下标 参数3:时间监听
                builder1.setSingleChoiceItems(item, 0, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "我就知道你会选:"+item[i], Toast.LENGTH_SHORT).show();
                    }
                });
                //使用建造者创建对话框
                AlertDialog dialog1 = builder1.create();
                //显示
                dialog1.show();

多选对话框

 				//构建者
                AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
                //设置属性
                builder2.setIcon(R.drawable.ic_launcher_background);
                builder2.setTitle("更古不变得问题,金钱,美女,权力,任你选~");
                builder2.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "小伙子果然够贪心!", Toast.LENGTH_SHORT).show();
                    }
                });
                builder2.setNegativeButton("cancle", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "后悔了吧,不瞒你说:我全都要!", Toast.LENGTH_SHORT).show();
                    }
                });

                final String item1[] = {"金钱","美女","权力"};
                final boolean flag[] = {false,false,false};
                //设置多选列表
                //参数一 列表  参数二 默认选中下标  参数三 事件监听
                builder2.setMultiChoiceItems(item1, flag, new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                        flag[i] = b;
                    }
                });
                //使用创造者创建对话框
                AlertDialog dialog2 = builder2.create();
                //显示
                dialog2.show();

自定义对话框

 				View view = LayoutInflater.from(this).inflate(R.layout.layout_item_dialog,null);
                ImageView imageView = view.findViewById(R.id.imageView);
                imageView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Toast.makeText(MainActivity.this, "不要爱上我哦!", Toast.LENGTH_SHORT).show();
                        //点击图片就可以土司或者关闭对话框
                    }
                });
                AlertDialog.Builder builder3 = new AlertDialog.Builder(this);
                builder3.setView(view);
                AlertDialog dialog3 = builder3.create();
                dialog3.show();

条形进度条对话框

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

圆形进度条对话框

				//TODO 1:实例化对象
                final ProgressDialog dialog5=new ProgressDialog(this);
                //TODO 2:设置属性
                dialog5.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置圆圈
                dialog5.setMax(100);
                dialog5.setMessage("正在下载");
                //TODO 3:显示
                dialog5.show();
                //TODO 4:模拟定时器
                final Timer timer1=new Timer();
                timer1.schedule(new TimerTask() {
                    int progress=0;
                    @Override
                    public void run() {
                        if(progress==100){
                            dialog5.dismiss();//消失
                            timer1.cancel();
                        }
                        dialog5.setProgress(progress+=20);
                    }
                },0,1000);//0秒后执行,每隔1000毫秒执行一次

日期选择对话框

				/**
                 * @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();

时间选择对话框

				/**
                 * @param context 上下文
                 * @param listener 监听器
                 * @param hourOfDay 默认的时
                 * @param minute 默认的分钟
                 * @param is24HourView 是否采用24时禁止
                 */
                //日历对象
                Calendar calendar1 = Calendar.getInstance();
                //实例化对象
                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();
                    }
                },calendar1.get(Calendar.HOUR),calendar1.get(Calendar.MINUTE),true).show();
             

自定义的对话框(重点)

(1)xml布局,自定义对话框布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#11ffffff">
    <Button
        android:id="@+id/out"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:text="X"
        android:textSize="20dp"
        android:gravity="center"
        android:layout_alignTop="@id/line1"
        android:layout_alignRight="@id/line1"
        />
    <LinearLayout
        android:id="@+id/line1"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical">
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:text="警告"

            android:textColor="#38ADFF"
            android:textSize="16sp"/>
        <TextView
            android:id="@+id/message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            android:layout_gravity="center"
            android:text="保护视力,少玩手机"/>
        <View
            android:layout_width="match_parent"
            android:layout_height="1px"
            android:layout_marginTop="15dp"
            android:background="#E4E4E4"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:orientation="horizontal">
            <Button
                android:id="@+id/no"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="10dp"
                android:background="@null"
                android:gravity="center"
                android:lines="1"
                android:text="取消"
                android:textColor="#7D7D7D"
                android:textSize="16sp"/>
            <View
                android:layout_width="1px"
                android:layout_height="match_parent"
                android:background="#E4E4E4"/>
            <Button
                android:id="@+id/yes"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginRight="10dp"
                android:background="@null"
                android:gravity="center"
                android:lines="1"
                android:text="确定"
                android:textColor="#38ADFF"
                android:textSize="16sp"/>
        </LinearLayout>
    </LinearLayout>

(2)自定义类,继承Dialog

	public class MyDiyDialog extends Dialog {

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

    public MyDiyDialog(Context context, Button out, Button no, Button yes) {
        super(context);
        this.out = out;
        this.no = no;
        this.yes = yes;
    }

    private String setTitle;
    public void setSetTitle(String setTitle) {
        this.setTitle = setTitle;
    }

    private String setMessage;
    public void setSetMessage(String setMessage) {
        this.setMessage = setMessage;
    }

    private String setYes;
    public void setSetYes(String setYes) {
        this.setYes = setYes;
    }

    private String setNo;
    public void setSetNo(String setNo) {
        this.setNo = setNo;
    }

    /**
     * 确定按钮点击事件
     * 1:定义一个点击事件的接口
     * 2: 写一个借口类型的成员属性
     * 3:提供一个Set方法
     */
    private YesOnClick yesOnClick;
    public interface YesOnClick{
        void onClick();
    }
    public void YesOnClick(YesOnClick yesOnClick) {
        this.yesOnClick = yesOnClick;
    }
    /**
     * 取消按钮点击事件
     * 1:定义一个点击事件的接口
     * 2: 写一个借口类型的成员属性
     * 3:提供一个Set方法
     */
    private NoOnClick noOnClick;
    public interface NoOnClick{
        void onClick();
    }
    public void setNoOnClick(NoOnClick noOnClick) {
        this.noOnClick = noOnClick;
    }

    private OutOnClick outOnClick;
    private String outStr;
    public interface OutOnClick{
        void onClick();
    }
    public void setOutOnClick(String name,OutOnClick outOnClick) {
        this.outStr = name;
        this.outOnClick = outOnClick;
    }

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

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initView();
    }

    private void initView() {
        setContentView(R.layout.layout_item_diylog);
        out = (Button) findViewById(R.id.out);
        out.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                outOnClick.onClick();
            }
        });
        title = (TextView) findViewById(R.id.title);
        title.setText(setTitle);
        message = (TextView) findViewById(R.id.message);
        message.setText(setMessage);
        no = (Button) findViewById(R.id.no);
        no.setText(setNo);
        no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                noOnClick.onClick();
                dismiss();
            }
        });
        yes = (Button) findViewById(R.id.yes);
        yes.setText(setYes);
        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //接口回调—>父类引用指向子类对象
                yesOnClick.onClick();
                dismiss();
            }
        });
    }
}

(3)MainActicity

	MyDiyDialog diyDialog = new MyDiyDialog(this);
    diyDialog.setSetTitle("新的头");
    diyDialog.setSetMessage("新内容");
    diyDialog.setSetNo("取消");
    diyDialog.setSetYes("确认");

    diyDialog.YesOnClick(new MyDiyDialog.YesOnClick() {
    		@Override
    		public void onClick() {
    		Toast.makeText(MainActivity.this, "宾狗!", Toast.LENGTH_SHORT).show();
         }
    });
    diyDialog.setNoOnClick(new MyDiyDialog.NoOnClick() {
		    @Override
		    public void onClick() {
		    Toast.makeText(MainActivity.this, "狗带", Toast.LENGTH_SHORT).show();
         }
     });
     diyDialog.setOutOnClick("关闭", new MyDiyDialog.OutOnClick() {
            @Override
            public void onClick() {
        	Toast.makeText(MainActivity.this, "你怎么忍心", Toast.LENGTH_SHORT).show();
          }
     });
    diyDialog.show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值