• 第25讲 UI组件之 AlertDialog 的各种实现


    第25讲 UI组件之AlertDialog 的各种实现

    对话框(Dialog是程序运行中的弹出窗口,例如当用户要删除一个联系方式时,会弹出一个对话框。

    Android提供了多种对话框:警告对话框(AlertDialog),进度对话框(ProcessDialog),日期选择对话框(DatePickerDialog),时间选择对话框(TimePickerDialog)。

    1.警告对话框AlertDialog

    1). AlertDialog的结构:

    AlertDialog是一个提示窗口,要求用户做出选择。该对话框中一般会有几个选择按钮、标题信息和提示信息。

      a. title 标题是可选部分,如果正文中已经表达清楚信息,可以不设标题。

      b. content area 提示内容部分,

    c. adition buttons 可以添加操作按钮。

    提示:不应该有超过三个操作按钮在对话框。

    2).如何创建一个AlertDialog对象:

     

    3). 代码实现

    1、简单的对话框


    public void test1(Viewview) {

    //如何创建一个AlertDialog

    //1. AlertDialog.Builder建立一个builder对象,由该类来创建对话框。

    AlertDialog.Builderbuilder=new Builder(this);

    //2.通过Builder对象设置对话框的标题、内容、按钮以及按钮将要响应的事件。

    builder.setTitle("提示信息");

    builder.setMessage("我的第一个对话框");

    builder.setPositiveButton("确定", newOnClickListener() {            // 设置确定按钮

    public void onClick(DialogInterface dialog, int which) {

    Toast.makeText(MainActivity.this,"确定", 0).show();

    }

    });

    builder.setNegativeButton("取消", newOnClickListener() {                   //设置取消按钮

    public void onClick(DialogInterface dialog, int which) {

    Toast.makeText(MainActivity.this,"取消", 0).show();

    }

    });

    //3. 调用Buildercreate()方法可以创建对话框dialog

    AlertDialogalertDialog=builder.create();

    //4. 调用AlertDialogshow()方法显示对话框。

    alertDialog.show();

    }

    2、弹出列表

     

    可以对其中的message进行设置

     private String[] ss = new String[]{"北京","云南","香港"};

    public void test2(Viewview) {

    AlertDialog.Builderbuilder=new Builder(this);

    builder.setTitle("提示信息");

    builder.setItems(ss, new OnClickListener() {

    public void onClick(DialogInterfacedialog, int which) {

    Toast.makeText(MainActivity.this,ss[which], 0).show();

    }

    });

    AlertDialogalertDialog=builder.create();

    alertDialog.show();

    }

    3、弹出单选列表


    public void test3(Viewview) {

    AlertDialog.Builderbuilder=new Builder(this);

    builder.setTitle("提示信息");

    builder.setSingleChoiceItems(ss, 0, new OnClickListener(){

    public void onClick(DialogInterfacedialog, int which) {

    Toast.makeText(MainActivity.this,ss[which], 0).show();

    }

    });

    AlertDialogalertDialog=builder.create();

    alertDialog.show();

    }

    4、弹出多选框

    public void test4(Viewview) {

    AlertDialog.Builderbuilder=new Builder(this);

    builder.setTitle("提示信息");

    builder.setMultiChoiceItems(ss, null, new OnMultiChoiceClickListener(){

    public void onClick(DialogInterface dialog, int which, boolean isChecked){

    Toast.makeText(MainActivity.this,ss[which], 0).show();

    }

    });

    AlertDialogalertDialog=builder.create();

    alertDialog.show();

    }

    其中,null处为默认选择了哪些项,null代表默认什么都没有选。可以改为

    new boolean[]{true,true, false}代表第1、2项为默认选中项。

    2. ProgressDialog:进度对话框

    有两种创建进度条对话框的方式:

    1.直接调用ProgressDialog提供的静态方法show()显示即可

    2.创建ProgressDialog,再设置对话框的参数,最后show()出来即可

    1.调用静态方法显示的环形进度条:show()方法的参数依次为:当前的Activity.this;标题;提示内容;是否显示进度;是否可以按"回退"键关闭

    2.另一种的流程是:

    ①new ProgressDialog(当前Activity.this);   ②设置标题:setTitle()

    ③设置内容:setMessage()                                 ④设置是否可通过回退按钮关闭:setCancelable()

    ⑤设置进度条是否显示进度,设置为true的话就会变成第p3中不会动的进度条,setIndeterminate()

    ⑥设置进度条的类型:两种STYLE_HORIZONTAL水平进度条     STYLE_SPINNER圆形进度条

    ⑦设置进度条的进度值:setProgress()

    3. DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框

    这里的话先要说明一点啊: 这个Date/TimePickerDialog只是供用户来选择日期时间,对于android系统的系统时间,日期没有任何影响,google暂时没有公布系统日期时间设置的API,

     构造方法:

    DatePickerDialog(当前视图.this; DatePickerDialog.OnDateSetListener()监听器;年;月;日)

    TimePickerDialog(当前视图.this; TimePickerDialog.OnTimeSetListener()监听器;小时,分钟,是否采用24小时制)

    private Button btndate;  

    private Button btntime;  

     private String result = "";

    btndate = (Button) findViewById(R.id.btndate);  

    btntime = (Button) findViewById(R.id.btntime);  

    btndate.setOnClickListener(new OnClickListener() {  

                       public void onClick(View v) {  

    //这句话是获得当前的系统时间  

                    Calendar cale = Calendar.getInstance();  

                    /*这里的话因为比较麻烦,所有就直接new一个DatePickerDialog对象,构造方法中的参数依次为: 

                    上下文,OnDateSetListener的监听器,整形的年,月,日 

                    */  

                    new DatePickerDialog(MainActivity.this,new DatePickerDialog.OnDateSetListener() {  

                                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {  

                                         result += "你选择的是"+year+"年"+monthOfYear+"月"+dayOfMonth+"日";  

                                         Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();  

                                }  

                    }  

                    ,cale.get(Calendar.YEAR)  

                    ,cale.get(Calendar.MONTH)  

                    ,cale.get(Calendar.DAY_OF_MONTH)).show();  

                }  

            });  

              

          btntime.setOnClickListener(new OnClickListener() {  

                       public void onClick(View v) {  

                                Calendar cale = Calendar.getInstance();  

                                new TimePickerDialog(MainActivity.thisnew TimePickerDialog.OnTimeSetListener() {  

                                         public void onTimeSet(TimePicker view, int hourOfDay, int minute) {  

                                         result = "";  

                                         result += "您选择的时间是:"+hourOfDay+"时"+minute+"分";  

                                         Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();  

                                }  

                    }, cale.get(Calendar.HOUR_OF_DAY), cale.get(Calendar.MINUTE), true).show();  

                }  

            });  

  • 相关阅读:
    算法面试题解答(三)
    计算机基础知识问答
    算法面试题解答(五)
    关于POD
    算法面试题解答(四)
    算法面试题解答(一)
    Perfect Interview (序)
    如何调整Dreamhost主机PHP上传尺寸的限制/How to change the maximal size of uploading in your Dreamhost
    Final Fantasy XIII Finished
    Ortholab has been moved to Google Code
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171597.html
Copyright © 2020-2023  润新知