Android學習筆記10 界面編程之對話框Dialog

在平常的開發中,一個完整的Android應用肯定少不了控件Dialog對話框的使用。下面對幾種常見的對話框作個簡單的總結。

一、Dialog概述
二、Dialog常見子類及使用
  1、AlertDialog
  2、ProgressDialog
  3、DatePickerDialog
  4、TimePickerDialog
三、總結

一、Dialog概述

A dialog is a small window that prompts the user to make a decision or enter additional information.

Dialog對話框是一個小的窗口,用來提示用戶選擇或者輸入信息。

二、Dialog常見類型及使用

Dialog常見的類型有,AlertDialog提示對話框,ProgressDialog進度對話框,DatePickerDialog日期選擇對話框以及TimePickerDialog時間選擇對話框。其中,后面3種對話框都是繼承自AlertDialog的。下面展示它們的基本用法。

AlertDialog

1、AlertDialog概述

A subclass of Dialog that can display one, two or three buttons. If you only want to display a String in this dialog box, use the setMessage() method. If you want to display a more complex view, look up the FrameLayout called "custom" and add your view to it:

AlerDialog是Dialog的一個子類,它可以展示1~3個按鈕。如果你想在對話框內展示一個字符串,使用setMessage()方法。如果你想展示一個更復雜的視圖,你也可以將你自己的視圖添加進去。AlertDialog簡單來說就是一個提示框,我們在App的使用過程中應該經常遇到,比如有的應用會在你刪除某個文件前,彈出一個提示框詢問你是否確定刪除,當你點擊確定后刪除文件,點擊取消時則不刪除。

2、用法簡介

AlertDialog不只能展示一句提示提示,實際上它很強大,可以展示一個字符列表集合,一個單選列表,一個多選列表,如果有需要還能展示一個自己定義的布局文件。

1、基本的提示對話框

private void funShowAlert() {

        final AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setIcon(R.mipmap.ic_launcher);
        builder.setTitle("系統提示");
        builder.setMessage("你確定要退出嗎?");

        builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogActivity.this, "你選擇了是", Toast.LENGTH_SHORT).show();
            }
        });

        builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogActivity.this, "你選擇了否", Toast.LENGTH_SHORT).show();

            }
        });

        builder.create().show();
    }

2、展示單選列表的對話框

private void funShowSingle() {

        final String[] datas = new String[]{"安徽合肥", "浙江杭州", "湖北武漢", "江西南昌"};

        final AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setIcon(R.mipmap.ic_launcher);
        builder.setTitle("選擇你的家鄉");

        builder.setSingleChoiceItems(datas, 1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogActivity.this, "你選擇了 " + datas[which], Toast.LENGTH_SHORT).show();
            }
        });

        builder.create().show();
    }

3、展示自定義布局文件的對話框

private void funShowCustom() {

        final AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setIcon(R.mipmap.ic_launcher);
        builder.setTitle("用戶登錄");

        builder.setView(getLayoutInflater().inflate(R.layout.view_dialog_login, null));

        builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogActivity.this, "開始登錄,請稍候...", Toast.LENGTH_SHORT).show();
            }
        });

        builder.setNegativeButton("取消", null);

        builder.create().show();
    }

ProgressDialog

A dialog showing a progress indicator and an optional text message or view. Only a text message or a view can be used at the same time.

1、概述
進度對話框通常展示一個進度指示條或者一段文本或者視圖,我們在App中經常會遇到這樣的使用,比如用戶登錄時彈出對話框顯示用戶正在登錄中,或者上傳文件時彈出的對話框上顯示的是百分比。

2、簡單使用

private void funShowProgress() {

    ProgressDialog mProgressDialog = ProgressDialog.show(this, "提示", "正在下載文件...", true, false);
    mProgressDialog.show();
    //把進度對話框設置為全局的變量 則可以在別的地方調用dismiss()來取消
}

3、用法解析
我們在這里直接調用了ProgressDialog.show方法實例化了進度對話框,這里有5個參數,分別是上下文,對話框標題,對話框提示消息,對話框進度條是否不明確(這個屬性對于ProgressDailog默認的轉輪模式沒有實際意義,默認下設置為true,它僅僅對帶有ProgressBar的Dialog有作用。修改這個屬性為false后可以實時更新進度條的進度),對話框點擊返回鍵時是否會被取消。

日期選擇對話框 DatePickerDialog

日期選擇對話框主要是用于日期選擇,可以重寫其中的回調方法來獲取獲得的日期,Android 5.0后的對話框設計的還可以。

private void funShowDatePick() {

        Calendar mCalendar = Calendar.getInstance();

        new DatePickerDialog(
                DialogActivity.this,
                new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                        String date = year + "年" + monthOfYear + "月" + dayOfMonth + "日";
                        Toast.makeText(DialogActivity.this, date, Toast.LENGTH_SHORT).show();
                    }
                },
                mCalendar.get(Calendar.YEAR),
                mCalendar.get(Calendar.MONTH),
                mCalendar.get(Calendar.DAY_OF_MONTH)
        ).show();
    }

時間選擇對話框 TimePickerDialog

與日期選擇對話框類似,用來選擇時間。

private void funShowTimePick() {

        Calendar mCalendar = Calendar.getInstance();

        new TimePickerDialog(
                //參數1 上下文
                this,
                //參數1 監聽
     
                new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        String date = hourOfDay + ":" + minute;
                        Toast.makeText(DialogActivity.this, date, Toast.LENGTH_SHORT).show();
                    }
                },
                //初始化 時
                mCalendar.get(Calendar.HOUR_OF_DAY),
                //初始化 分
                mCalendar.get(Calendar.MINUTE),
                //是否為24小時制
                true).show();
    } 

三、總結

以上簡單地總結了常見的幾種對話框的使用方法,需要的時候可以參考一下。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容