最近有空,來把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來實現。
由於代碼太多,就不一一貼出來了,直接下載即可,不要積分哦! 源碼點擊下載
不足之處請留言指正!有問題的可以給我留言!謝謝!