欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android-UI开发之对话框

程序员文章站 2024-01-31 12:42:16
...

内容概述

  • AlertDialog:功能最为丰富,实际应用最为广泛的对话框
  • ProgressDialog:进度对话框,是对简单进度条的封装
  • DatePickerDialog:日期选择对话框
  • TimePickerDialog:时间选择对话框
  • 自定义对话框:对话框布局自定义,并设置监听事件

一.AlertDialog对话框

  • AlertDialog生成的对话框分为4个区域:图标区、标题区、内容区和按钮区

Android-UI开发之对话框

1.创建对话框的步骤

  • 使用AlertDialog.Builder创建对象
  • 调用AlertDialog.Builder的setTitle()或setCustomTitle()方法设置标题
  • 调用AlertDialog.Builder的setIcon()方法设置图标
  • 调用AlertDialog.Builder的相关设置方法设置对话框内容
  • 调用AlertDialog.Builder的setPositiveButton、setNegativeButton()或setNeutralButton()方法添加多个按钮
  • 调用AlertDialog.Builder的create()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将该对话框显示出来

2.例子一

Android-UI开发之对话框

            new AlertDialog.Builder(MainActivity.this)
                             .setTitle("提示")
                             .setMessage("你喜欢学安卓嘛?")
                             .setPositiveButton("喜欢",null)//null处添加点击事件的监听器
                             .setNegativeButton("一般吧",null)
                             .setNeutralButton("不喜欢",null)
                             .create()
                             .show();
  • 设置单选列表
setSingleChoiceItems(CharSquerence[] a, int b, new
DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialog, int which) { ..}});
  • 设置多选列表
setMultiChoiceItems(CharSquerence[] a, boolean[]
b,OnClickListener listener)
  • 设置普通列表
setItems(CharSquerence[] a,OnClickListener listener)
  • 设置自定义视图
setView(View v)

3.例子二(单选)

Android-UI开发之对话框

             new AlertDialog.Builder(MainActivity.this)
                             .setIcon(android.R.drawable.sym_def_app_icon)
                             .setTitle("单选框")
                             .setSingleChoiceItems(new String [] {"成都","武汉","北京"},0, new DialogInterface.OnClickListener() {

                                 @Override
                                 public void onClick(DialogInterface dialog, int which) {


                                 }
                            })
                             .setNegativeButton("取消",null)
                             .create()
                             .show();

4.例子三(多选)

Android-UI开发之对话框

  String [] items={"javaweb开发","Android开发","大数据","操作系统"};
                   boolean[] defaultChoices = {false , true ,false ,true};//记录是否选中
                     new AlertDialog.Builder(MainActivity.this)
                             .setIcon(android.R.drawable.sym_def_app_icon)
                             .setTitle("多选框")
                             .setMultiChoiceItems(items,defaultChoices,new DialogInterface.OnMultiChoiceClickListener() {
                                 @Override
                                 public void onClick(DialogInterface dialog, int which, boolean isChecked) {

                                 }
                             })
                             .setPositiveButton("确定",null)
                             .create()
                             .show();

5.例子四(列表)

Android-UI开发之对话框

String [] items={"javaweb开发","Android开发","大数据","操作系统"};
                     new AlertDialog.Builder(MainActivity.this)
                             .setIcon(android.R.drawable.sym_def_app_icon)
                             .setTitle("列表对话框")
                             .setItems(items,new DialogInterface.OnClickListener(){
                                 @Override
                                 public void onClick(DialogInterface dialog, int which) {

                                 }
                             })
                             .create()
                             .show();

6.自定义视图步骤

  • 自定义布局文件login.xml
  • 获取布局实例xxxLayout
  • 设置setView(xxxLayout)

具体在后文我们会具体来做解释,这里先点一下

7.拖动条对话框

Android-UI开发之对话框

View view=getLayoutInflater().inflate(R.layout.layout,null);//获取这个视图 自定义对话框基本就是这样获取的
                     new AlertDialog.Builder(MainActivity.this)
                             .setIcon(android.R.drawable.sym_def_app_icon)
                             .setTitle("自定义对话框")
                             .setView(view)
                             .setPositiveButton("确定",null)
                             .create()
                             .show();

二.ProgressDialog进度条对话框

  • ProgressDialog
  • 将进度条简单包裹起来,可以设置进度条的各种式样
  • 启动线程,模拟耗时任务的进行,下载完成后,自动消失
  • setMax:设置最大值
  • setCancelable:设置可以被取消
  • setProgressStyle:设置进度条风格

1.例子一

Android-UI开发之对话框

  ProgressDialog progressDialog=new ProgressDialog(MainActivity.this);
                progressDialog.setMax(100);
                progressDialog.setCancelable(true);
                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDialog.setTitle("下载文件");
                progressDialog.setMessage("已经下载文件");
                progressDialog.show();

三.日期/时间选择对话框

1.DatePickerDialog-日期选择对话框

Android-UI开发之对话框

         Calendar c=Calendar.getInstance();//日期
           DatePickerDialog datepickerDialog=new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
     public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

                    }
                },c.get(Calendar.YEAR)
                ,c.get(Calendar.MONTH)
                ,c.get(Calendar.DATE));

                 datepickerDialog.setIcon(android.R.drawable.sym_def_app_icon);
                 datepickerDialog.setTitle("日期对话框");
                    datepickerDialog.show();

2.TimePickerDialog-时间选择对话框

Android-UI开发之对话框

   Calendar c=Calendar.getInstance();//日期
                TimePickerDialog timePickerDialog=new TimePickerDialog(MainActivity.this,new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

                    }
                },c.get(Calendar.HOUR_OF_DAY)
                ,c.get(Calendar.MINUTE),true);

                timePickerDialog.setIcon(android.R.drawable.alert_dark_frame);
                timePickerDialog.setTitle("时间选择框");
                timePickerDialog.show();

四.自定义选择对话框

1.自定义选择对话框步骤

  • 继承Dialog类
  • 实现
    • 构造方法和onCreate
    • 在styles.xml中自定义style
    • 自定义布局
  • 事件监听
    • View.OnClickListener
  • 传值
    • 自定义并实现接口(传出)
    • 类成员变量(传入)

public class MyDialog extends AlertDialog {

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

    public MyDialog(Context context, int theme) {//这里的第二个参数是你指定的style
        super(context, theme);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        View mView = LayoutInflater.from(getContext()).inflate(R.layout.layout, null);
        super.setContentView(mView);
    }
}
 MyDialog myDialog=new MyDialog(MainActivity.this,android.R.style.Theme_Dialog);//指定提供的style

                myDialog.setIcon(android.R.drawable.sym_def_app_icon);
                myDialog.setTitle("自定义对话框");
                myDialog.show();
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

       <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:orientation="horizontal">

              <TextView
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="用户名"/>

             <EditText
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:hint="请输入你的用户名"/>


       </LinearLayout>

      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal">

             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="密    码"/>

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="请输入你的密码"/>

      </LinearLayout>

      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="vertical">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:text="确定" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:text="取消" />

      </LinearLayout>


</LinearLayout>

Android-UI开发之对话框

END!!!!!!!!!!!!!!!!