600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 自定义dialog 可以读秒自动关闭

自定义dialog 可以读秒自动关闭

时间:2023-03-07 00:38:15

相关推荐

自定义dialog 可以读秒自动关闭

随便写了个自定义dialog 可以读秒自动关闭 看一下就知道了 很简单

/*** Created by miao on /12/6.* 所有的上下文对象必须以activity.this这种传入 否则找不到依赖的窗体 */public class CustomAlertDialog extends AlertDialog {private static CustomAlertDialog mCustomAlertDialog;private static TextView mDialogContent;private static TextView mDialogTitle;private static TextView mCancelBtn;private static Timer mTimer;private static TimerTask mTimerTask;private static TextView mDialogUnit;private static TextView mDialogTimer;private static LinearLayout mLayout;private int count = 3;//读秒出实际开始为2-0public CustomAlertDialog(Context context) {super(context);}public CustomAlertDialog(Context context, int theme) {super(context, theme);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);LayoutInflater inflater = LayoutInflater.from(getContext());// 得到加载viewView v = inflater.inflate(R.layout.custom_alertdialog, null);// 加载布局mLayout = (LinearLayout) v.findViewById(R.id.ll_alert_dialog_match);mDialogTitle = (TextView) v.findViewById(R.id.dialog_title);mDialogContent = (TextView) v.findViewById(R.id.dialog_content);mDialogTimer = (TextView) v.findViewById(R.id.tv_timetrask);mDialogUnit = (TextView) v.findViewById(R.id.tv_unit);mCancelBtn = (TextView) v.findViewById(R.id.btn_cancel);//设置dialog圆角getWindow().setBackgroundDrawable(new BitmapDrawable());setContentView(mLayout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));//读秒设置dialogCountdown();}/*** 有按钮 不显示时长 点击按钮关闭 并处理其他逻辑 外部点击是否可以关闭* 显示自定义dialog* @param context * @param title* @param msg* @param isAllowOutsideClick*/public static void showDialog(Context context, String title, String msg, String btn_name,final OnDialogListener onDialogListener, boolean isAllowOutsideClick) {//创建自定义dialogmCustomAlertDialog = new CustomAlertDialog(context, R.style.dialogBoxTheme);mCustomAlertDialog.setCancelable(false);// 不可以用“返回键”取消mCustomAlertDialog.show();//判断是否需要按钮mCancelBtn.setVisibility(View.INVISIBLE);//是否设置外部点击if (isAllowOutsideClick){mLayout.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {closeDialogAndTimer();}});}mDialogTitle.setText(title);mDialogContent.setText(msg);mCancelBtn.setText(btn_name);mCancelBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {closeDialogAndTimer();if (onDialogListener != null) {onDialogListener.outSideExtraClick();}}});}/*** 有按钮 不显示时长 点击按钮关闭 不处理其他逻辑* 显示自定义dialog** @param context* @param title* @param msg*/public static void showDialog(Context context, String title, String msg, String btn_name) {//创建自定义dialogmCustomAlertDialog = new CustomAlertDialog(context, R.style.dialogBoxTheme);mCustomAlertDialog.setCancelable(false);// 不可以用“返回键”取消mCustomAlertDialog.show();//判断是否需要按钮if (StringUtils.isEmpty(btn_name)) {mCancelBtn.setVisibility(View.INVISIBLE);mLayout.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {closeDialogAndTimer();}});}mDialogTitle.setText(title);mDialogContent.setText(msg);mCancelBtn.setText(btn_name);mCancelBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {closeDialogAndTimer();}});}/*** 无按钮显示时长** @param context 上下文* @param title 标题* @param msg内容* @param second 显示时长*/public static void showDialog(Context context, String title, String msg, long second) {//创建自定义dialogmCustomAlertDialog = new CustomAlertDialog(context, R.style.dialogBoxTheme);mCustomAlertDialog.setCancelable(false);// 不可以用“返回键”取消mCustomAlertDialog.show();mDialogUnit.setVisibility(View.VISIBLE);mDialogTimer.setVisibility(View.VISIBLE);//开始一个读秒定时任务mTimer.schedule(mTimerTask, 0, second);mDialogTitle.setText(title);mDialogContent.setText(msg);}/*** 关闭dialog和定时器*/private static void closeDialogAndTimer() {mCustomAlertDialog.dismiss();mTimerTask.cancel();mTimer.cancel();mTimer = null;}/*** 定义mCancelBtn的点击事件*/public interface OnDialogListener {void outSideExtraClick();}/*** 提示框的读秒方法*/private void dialogCountdown() {mTimer = new Timer();mTimerTask = new TimerTask() {@Overridepublic void run() {if (count <= 0) {UIUtils.runInMainThread(new Runnable() {@Overridepublic void run() {closeDialogAndTimer();}});}UIUtils.runInMainThread(new Runnable() {@Overridepublic void run() {mDialogTimer.setText("" + count);}});count--;}};}/*** 手动关闭方法* 关闭diaolog*/public static void closeDialog() {if (mCustomAlertDialog != null && mCustomAlertDialog.isShowing()) {mCustomAlertDialog.dismiss();mCustomAlertDialog = null;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。