1. 程式人生 > >Android之UI--打造12種Dialog對話框

Android之UI--打造12種Dialog對話框

指正 ati 整體 port login ast select log inflater

最近有空,來把app中常用到的Dialog對話框寫一篇博客,在app中很多地方都會用到Dialog對話框,今天小編我就給大家介紹Dialog對話框。

先看看效果圖:

技術分享

12種,可根據需求選擇,上圖可知,底部彈框也可通過Dialog對話框實現,可以不用PopupWindow來實現了,比較方便

Android Support Library v22.1 中開始提供了 Material 風格的 Dialog 控件 ,看起來也是很好看的

Material 風格的 Dialog類:android.support.v7.app.AlertDialog

這個 V7 包中的 AlertDialog 在 Android 2.1 以上可以提供兼容性的 Material 風格 Dialog

舉例說明一下:

public static AlertDialog.Builder getMessageDialog(Context context, String message, DialogInterface.OnClickListener onClickListener) {
        AlertDialog.Builder builder = getDialog(context);
        builder.setTitle("我是標題");
        builder.setMessage(message);/*消息內容*/
        builder.setIcon(R.mipmap.ic_launcher);
/*logo圖標*/ builder.setPositiveButton("確定", onClickListener);/*確定事件監聽*/    builder.setNegativeButton("取消", null);/*取消事件(可以監聽或不監聽(關閉窗口))*/ return builder; }

使用調用

 DialogHelper.getMessageDialog(this, "我是信息", new DialogInterface.OnClickListener() {
                    @Override
                    
public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,"基本對話框,並監聽確定按鈕",Toast.LENGTH_LONG).show(); } }).show();

效果如圖:

技術分享

進度條對話框

技術分享

 /***
     * 獲取一個進度對話框(耗時操作使用)
     *
     * @param context
     * @param message 加載提示信息
     * @return
     */
    public static ProgressDialog getWaitDialog(Context context, String message) {
        ProgressDialog waitDialog = new ProgressDialog(context);
        if (!TextUtils.isEmpty(message)) {
            waitDialog.setMessage(message);
        }
        return waitDialog;
    }

只含信息和監聽確定和取消按鈕,選擇對話框

技術分享 技術分享

單選對話框 和自定義對話框(有時候自帶的各種方法並不能滿足我們的Dialog的設計需求,這時候我們可以自己寫一個 xml 設計符合需求的Dialog。(僅為設計Dialog的Message部分,並不是Dialog整體))

技術分享 技術分享

  /***
     *單選對話框
     * @param context
     * @param title  標題
     * @param arrays  數組信息
     * @param selectIndex  默認選中
     * @param onClickListener  單選按鈕選擇事件
     * @param onOkClickListener  確定按鈕事件
     * @return
     */
    public static AlertDialog.Builder getSingleChoiceDialog(Context context, String title, String[] arrays, int selectIndex, DialogInterface.OnClickListener onClickListener,  DialogInterface.OnClickListener onOkClickListener) {
        AlertDialog.Builder builder = getDialog(context);
        builder.setSingleChoiceItems(arrays, selectIndex, onClickListener);
        if (!TextUtils.isEmpty(title)) {
            builder.setTitle(title);
        }
        builder.setPositiveButton("確定", onOkClickListener);
        builder.setNegativeButton("取消", null);//null===關閉對話框
        return builder;
    }
            /***
                 * 自定義對話框
                 */
           LayoutInflater inflater = getLayoutInflater();
           View   dialog = inflater.inflate(R.layout.dialog_normal_layout,(ViewGroup) findViewById(R.id.dialog));
           final EditText editText = (EditText) dialog.findViewById(R.id.et);
           AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
           builder1.setTitle("這裏是Title");
           builder1.setPositiveButton("確定", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {
                   Toast.makeText(MainActivity.this, editText.getText().toString(), Toast.LENGTH_SHORT).show();
               }
               });
                builder1.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                    }
                });
                builder1.setView(dialog);
                builder1.setIcon(R.mipmap.ic_launcher);
                builder1.show();

app經常需要的如下彈窗,四周是圓角,IOS幾乎都是這個效果,底部對話框也是(照片選擇或者分享),

技術分享 技術分享

以上兩種方式需要自定義Dialog類來實現此功能,使用 android.app.Dialog 類即可 創建類繼承Dialog來實現。

由於代碼太多,就不一一貼出來了,直接下載即可,不要積分哦!

不足之處請留言指正!有問題的可以給我留言!謝謝!

Android之UI--打造12種Dialog對話框