自定义android Dialog
16lz
2021-01-23
1.自定义Dialog:
1 import android.app.AlertDialog; 2 import android.app.Dialog; 3 import android.content.Context; 4 import android.view.KeyEvent; 5 import android.view.Window; 6 7 public class HintDialog { 8 9 Dialog mDialog = null;10 private Context mContext;11 private IHintDialog mDialogInstance = null;12 13 /**14 * 构造函数15 * @param context16 */17 public HintDialog(Context context) {18 this.mContext =context;19 mDialog = new AlertDialog(mContext){20 public boolean onKeyDown(int keyCode, KeyEvent event) {21 if(keyCode == KeyEvent.KEYCODE_BACK && mDialogInstance !=null){22 mDialogInstance.onKeyDown(keyCode, event);23 return true;24 }25 return super.onKeyDown(keyCode, event);26 };27 };28 mDialog.setCancelable(false);29 mDialog.setCanceledOnTouchOutside(false);30 }31 32 33 /**34 * 构造函数35 * @param iLayoutResId 此Dialog采用的自定义布局文件36 * @param interfaceInstance 此Dialog需要实现的一些接口回调事件37 */38 public void showDialog(int iLayoutResId,IHintDialog interfaceInstance){39 if(mDialog == null || iLayoutResId == 0){40 return;41 }42 mDialogInstance = interfaceInstance;43 mDialog.show();44 mDialog.setContentView(iLayoutResId);45 Window window = mDialog.getWindow();46 if(mDialogInstance!=null){47 mDialogInstance.showWindowDetail(window);48 }49 }50 51 /**52 * 销毁Dialog53 */54 public void dissmissDialog(){55 if(mDialog!=null && mDialog.isShowing()){56 mDialog.dismiss();57 }58 }59 60 /**61 * 判断Dialog是否显示62 * @return63 */64 public boolean isShowing(){65 if(mDialog!=null && mDialog.isShowing()){66 return mDialog.isShowing();67 }68 return false;69 }70 71 72 /**73 * 事件回调接口74 *75 */76 public interface IHintDialog{77 public void onKeyDown(int keyCode,KeyEvent event);78 public void showWindowDetail(Window window);79 }80 }View Code
2.采用系统Dialog,各种样式:
1 import android.app.AlertDialog; 2 import android.app.Dialog; 3 import android.content.Context; 4 import android.content.DialogInterface.OnClickListener; 5 import android.content.DialogInterface.OnMultiChoiceClickListener; 6 import android.view.View; 7 8 /** 9 * 对话框封装类 10 * 11 * @author Jack_Lu 12 * 13 */ 14 public class DialogTool { 15 16 public static final int NO_ICON = -1; // 无图标 17 18 /** 19 * 创建消息对话框 20 * 21 * @param context 22 * 上下文 必填 23 * @param iconId 24 * 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填 25 * @param title 26 * 标题 必填 27 * @param message 28 * 显示内容 必填 29 * @param btnName 30 * 按钮名称 必填 31 * @param listener 32 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填 33 * @return 34 */ 35 public static Dialog createMessageDialog(Context context, String title, 36 String message, String btnName, OnClickListener listener, int iconId) { 37 Dialog dialog = null; 38 AlertDialog.Builder builder = new AlertDialog.Builder(context); 39 40 if (iconId != NO_ICON) { 41 // 设置对话框图标 42 builder.setIcon(iconId); 43 } 44 // 设置对话框标题 45 builder.setTitle(title); 46 // 设置对话框消息 47 builder.setMessage(message); 48 // 设置按钮 49 builder.setPositiveButton(btnName, listener); 50 // 创建一个消息对话框 51 dialog = builder.create(); 52 53 return dialog; 54 } 55 56 /** 57 * 创建警示(确认、取消)对话框 58 * 59 * @param context 60 * 上下文 必填 61 * @param iconId 62 * 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填 63 * @param title 64 * 标题 必填 65 * @param message 66 * 显示内容 必填 67 * @param positiveBtnName 68 * 确定按钮名称 必填 69 * @param negativeBtnName 70 * 取消按钮名称 必填 71 * @param positiveBtnListener 72 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填 73 * @param negativeBtnListener 74 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填 75 * @return 76 */ 77 public static Dialog createConfirmDialog(Context context, String title, 78 String message, String positiveBtnName, String negativeBtnName, 79 OnClickListener positiveBtnListener, 80 OnClickListener negativeBtnListener, int iconId) { 81 Dialog dialog = null; 82 AlertDialog.Builder builder = new AlertDialog.Builder(context); 83 84 if (iconId != NO_ICON) { 85 // 设置对话框图标 86 builder.setIcon(iconId); 87 } 88 // 设置对话框标题 89 builder.setTitle(title); 90 // 设置对话框消息 91 builder.setMessage(message); 92 // 设置确定按钮 93 builder.setPositiveButton(positiveBtnName, positiveBtnListener); 94 // 设置取消按钮 95 builder.setNegativeButton(negativeBtnName, negativeBtnListener); 96 // 创建一个消息对话框 97 dialog = builder.create(); 98 99 return dialog;100 }101 102 /**103 * 创建单选对话框104 * 105 * @param context106 * 上下文 必填107 * @param iconId108 * 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填109 * @param title110 * 标题 必填111 * @param itemsString112 * 选择项 必填113 * @param positiveBtnName114 * 确定按钮名称 必填115 * @param negativeBtnName116 * 取消按钮名称 必填117 * @param positiveBtnListener118 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填119 * @param negativeBtnListener120 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填121 * @param itemClickListener122 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填123 * @return124 */125 public static Dialog createSingleChoiceDialog(Context context,126 String title, String[] itemsString, String positiveBtnName,127 String negativeBtnName, OnClickListener positiveBtnListener,128 OnClickListener negativeBtnListener,129 OnClickListener itemClickListener, int iconId) {130 Dialog dialog = null;131 AlertDialog.Builder builder = new AlertDialog.Builder(context);132 133 if (iconId != NO_ICON) {134 // 设置对话框图标135 builder.setIcon(iconId);136 }137 // 设置对话框标题138 builder.setTitle(title);139 // 设置单选选项, 参数0: 默认第一个单选按钮被选中140 builder.setSingleChoiceItems(itemsString, 0, itemClickListener);141 // 设置确定按钮142 builder.setPositiveButton(positiveBtnName, positiveBtnListener);143 // 设置确定按钮144 builder.setNegativeButton(negativeBtnName, negativeBtnListener);145 // 创建一个消息对话框146 dialog = builder.create();147 148 return dialog;149 }150 151 /**152 * 创建复选对话框153 * 154 * @param context155 * 上下文 必填156 * @param iconId157 * 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填158 * @param title159 * 标题 必填160 * @param itemsString161 * 选择项 必填162 * @param positiveBtnName163 * 确定按钮名称 必填164 * @param negativeBtnName165 * 取消按钮名称 必填166 * @param positiveBtnListener167 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填168 * @param negativeBtnListener169 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填170 * @param itemClickListener171 * 监听器,需实现android.content.DialogInterface.172 * OnMultiChoiceClickListener;接口 必填173 * @return174 */175 public static Dialog createMultiChoiceDialog(Context context, String title,176 String[] itemsString, String positiveBtnName,177 String negativeBtnName, OnClickListener positiveBtnListener,178 OnClickListener negativeBtnListener,179 OnMultiChoiceClickListener itemClickListener, int iconId) {180 Dialog dialog = null;181 AlertDialog.Builder builder = new AlertDialog.Builder(context);182 183 if (iconId != NO_ICON) {184 // 设置对话框图标185 builder.setIcon(iconId);186 }187 // 设置对话框标题188 builder.setTitle(title);189 // 设置选项190 builder.setMultiChoiceItems(itemsString, null, itemClickListener);191 // 设置确定按钮192 builder.setPositiveButton(positiveBtnName, positiveBtnListener);193 // 设置确定按钮194 builder.setNegativeButton(negativeBtnName, negativeBtnListener);195 // 创建一个消息对话框196 dialog = builder.create();197 198 return dialog;199 }200 201 /**202 * 创建列表对话框203 * 204 * @param context205 * 上下文 必填206 * @param iconId207 * 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填208 * @param title209 * 标题 必填210 * @param itemsString211 * 列表项 必填212 * @param negativeBtnName213 * 取消按钮名称 必填214 * @param negativeBtnListener215 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填216 * @return217 */218 public static Dialog createListDialog(Context context, String title,219 String[] itemsString, String negativeBtnName,220 OnClickListener negativeBtnListener,221 OnClickListener itemClickListener, int iconId) {222 Dialog dialog = null;223 AlertDialog.Builder builder = new AlertDialog.Builder(context);224 225 if (iconId != NO_ICON) {226 // 设置对话框图标227 builder.setIcon(iconId);228 }229 // 设置对话框标题230 builder.setTitle(title);231 // 设置列表选项232 builder.setItems(itemsString, itemClickListener);233 // 设置确定按钮234 builder.setNegativeButton(negativeBtnName, negativeBtnListener);235 // 创建一个消息对话框236 dialog = builder.create();237 238 return dialog;239 }240 241 /**242 * 创建自定义(含确认、取消)对话框243 * 244 * @param context245 * 上下文 必填246 * @param iconId247 * 图标,如:R.drawable.icon 或 DialogTool.NO_ICON 必填248 * @param title249 * 标题 必填250 * @param positiveBtnName251 * 确定按钮名称 必填252 * @param negativeBtnName253 * 取消按钮名称 必填254 * @param positiveBtnListener255 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填256 * @param negativeBtnListener257 * 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填258 * @param view259 * 对话框中自定义视图 必填260 * @return261 */262 public static Dialog createRandomDialog(Context context, String title,263 String positiveBtnName, String negativeBtnName,264 OnClickListener positiveBtnListener,265 OnClickListener negativeBtnListener, View view, int iconId) {266 Dialog dialog = null;267 AlertDialog.Builder builder = new AlertDialog.Builder(context);268 269 if (iconId != NO_ICON) {270 // 设置对话框图标271 builder.setIcon(iconId);272 }273 // 设置对话框标题274 builder.setTitle(title);275 builder.setView(view);276 // 设置确定按钮277 builder.setPositiveButton(positiveBtnName, positiveBtnListener);278 // 设置确定按钮279 builder.setNegativeButton(negativeBtnName, negativeBtnListener);280 // 创建一个消息对话框281 dialog = builder.create();282 283 return dialog;284 }285 286 }View Code
更多相关文章
- Android 自定义布局对话框避免全屏的设置
- Android关闭开机弹出SIM卡变动提示对话框
- Android中对话框的工具类
- Android全屏对话框(附带延时关闭效果)
- android创建自定义对话框
- Android重写返回按钮退回桌面(根据源码查看)
- Android 保存进度对话框
- Android按返回键弹出对话框退出应用程序
- 【从头学android】第一个程序,点按钮显示Hello World