Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習筆記二十八之AlertDialog提示對話框和幾個常用的提示框

Android學習筆記二十八之AlertDialog提示對話框和幾個常用的提示框

編輯:關於Android編程

在我們實際開發中,常常需要有對話框彈出跟用戶交互。AndroidOS提供有多種對話框,這一節,我們介紹一下AlertDialog和幾個常用Dialog,AlertDialog是ProgressDialog的父類,構造器是protected的,所以不能直接new出來這個對象,需要用到AlertDialog.Builder中的create()方法。下面介紹一下創建AlertDialog需要了解的幾個方法:

setTitle:為對話框設置標題 setIcon :為對話框設置圖標 setMessage:為對話框設置內容 setView : 給對話框設置自定義樣式 setItems :設置對話框要顯示的一個list,一般用於顯示幾個命令時 setMultiChoiceItems :用來設置對話框顯示一系列的復選框 setSingleChoiceItems:用來設置對話框的單選列表 setNeutralButton :普通按鈕 setPositiveButton :給對話框添加”Yes”按鈕 setNegativeButton :對話框添加”No”按鈕 create : 創建對話框,必須要調用 show :顯示對話框,必須要調用

下面我們通過例子體會AlertDialog的幾種常用情況:

第一種、普通的對話框

創建一個普通的對話框,比如給用戶選擇是否退出程序等的時候,例子代碼如下:

AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
            builder.setTitle("提示");
            builder.setMessage("你是否要退出應用?");
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    ToastUtils.showToast(AlertDialogActivity.this, "你點擊了取消按鈕");
                }
            });
            builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    ToastUtils.showToast(AlertDialogActivity.this, "你點擊了確定按鈕");
                }
            });
            builder.create().show();

第二種、帶列表的普通對話框

例子代碼如下:

        final String[] cars = {"寶馬", "奔馳", "馬自達", "卡羅拉", "本田", "豐田", "長安", "紅旗"};
            final AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
            builder.setTitle("選擇你喜歡的車");
            builder.setItems(cars, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    ToastUtils.showToast(AlertDialogActivity.this, "你選了:" + cars[i]);
                }
            });
            builder.create().show();

第三種、帶單選列表的對話框

例子代碼如下:

            final String[] language = {"Java語言", "PHP語言", "Android語言", "IOS語言", "C++語言", "C#語言"};
            final String[] select = {""};
            AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
            builder.setTitle("選擇你喜歡的語言,只能選一項");
            builder.setSingleChoiceItems(language, 0, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    select[0] = language[i];
                }
            });
            builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    ToastUtils.showToast(AlertDialogActivity.this, "你選了:" + select[0]);
                }
            });
            builder.create().show();

第四種、帶多選列表的對話框

例子代碼如下:

            final String[] menu = {"絲瓜面筋", "糖醋鯉魚", "糖醋排骨", "剁椒魚頭", "清蒸鹹魚", "魚香肉絲", "清炒上海青", "麻婆豆腐"};
            final boolean[] isCheck = {false, false, false, false, false, false, false, false};
            AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
            builder.setTitle("請選擇你的想要的菜");
            builder.setMultiChoiceItems(menu, isCheck, new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                    isCheck[i] = b;
                }
            });
            builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    String select = "";
                    for (int j = 0; j < isCheck.length; j++) {
                        if (isCheck[j]) {
                            select += menu[j];
                        }
                    }
                    ToastUtils.showToast(AlertDialogActivity.this, "你選擇的菜有:" + select);
                }
            });
            builder.create();
            builder.show();

最後實現效果如下:

\

這裡只是簡單的實現,先是new一個AlertDialog.Builder,然後設置一些相應的內容,最後調用create方法創建,調用show方法顯示出來。對於AlertDialog的介紹就到這裡了,也可以自定義AlertDialog,這個留到後面講自定義控件的時候再細講。下面我們介紹一下ProgressDialog。

ProgressDialog進度提示框

  AndroidOS提供給我們創建進度條對話框有兩種方式,一種是直接new,另外一種是調用靜態方法show。下面,我們通過例子體會一下ProgressDialog。

創建一個圓形進度條

//通過show方法創建一個進度條對話框
 ProgressDialog.show(ProgressDialogActivity.this, "通訊中", "正在通訊,請稍候...", false, true);

創建一個長方形進度條

            //通過new方法創建一個對話框
            progressDialog = new ProgressDialog(ProgressDialogActivity.this);
            //設置進度條的最大值
            progressDialog.setMax(maxProgress);
            //設置標題
            progressDialog.setTitle("正在下載");
            //設置提示信息內容
            progressDialog.setMessage("安裝包正在下載,馬上就好...");
            //設置是否允許點擊進度條對話框外面取消對話框
            progressDialog.setCancelable(false);
            //設置進度條的樣式,這個為長方形
            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            //設置是否顯示進度,false顯示
            progressDialog.setIndeterminate(false);
            //將進度條對話框show出來
            progressDialog.show();
            //新建一個線程更新進度
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (progress < maxProgress) {
                        //模擬耗時方法
                        sleep();
                        progress += 2;
                        handler.sendEmptyMessage(111);
                    }
                }
            }).start();

效果圖:

\

這樣可以實現一個ProgressDialog進度條對話框,在這裡知識簡單實現,我們也可以按照需求自定義進度條對話框。

DatePickerDialog日期選擇提示框

  這個和TimePickerDiaog都比較簡單,直接放代碼示例,就不在解析了,代碼如下:

            Calendar calendar = Calendar.getInstance();
            //第一個參數是上下文對象,第二個是監聽器,第三個是設置當前年份,第四個是設置月份,第五個是設置當前日份
            new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                    String result = "你選擇的是:" + i + "年" + (i1 + 1) + "月" + i2 + "日";
                    ToastUtils.showToast(MainActivity.this, result);
                }
            }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();

TimePickerDialog時間選擇提示框

        Calendar calendar = Calendar.getInstance();
            //第一個參數是上下文對象,第二個是監聽器,第三個是設置當前小時數,第四個是分鐘數,第五個是是否顯示24小時制
            new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker, int i, int i1) {
                    String result = "你選擇的是:" + i + "時" + i1 + "分";
                    ToastUtils.showToast(MainActivity.this, result);
                }
            }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true).show();

最後實現效果圖:

\

最後附上國內鏡像API

AlertDialog對話框

ProgressDialog進度條對話框

DatePickerDialog日期選擇提示框

TimePickerDialog時間選擇提示框

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved