<Android> 模态对话框
来源:互联网 发布:大数据公司是做什么的 编辑:程序博客网 时间:2024/06/05 04:59
public class SynDialog extends Dialog { private Handler mHandler; protected int result; Button btnOK; Button btnCancel; TextView tvMessage;TextView tvPrompt; public SynDialog(Context context, boolean showBtn){ super(context); onCreate(); if (!showBtn) { btnCancel.setEnabled(false); btnOK.setEnabled(false); btnOK.setVisibility(View.INVISIBLE); btnCancel.setVisibility(View.INVISIBLE); } } public SynDialog setMessage(String msg) { tvMessage.setText(msg);return SynDialog.this; } @Override public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { btnCancel.performClick(); return true; } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { btnOK.performClick(); return true; } return super.onKeyDown(keyCode, event); } @Override public boolean onTouchEvent(@NonNull MotionEvent event) { if (btnCancel.getVisibility() == View.VISIBLE) { return false; } return super.onTouchEvent(event); } public void onCreate() { setContentView(R.layout.popupwindow); btnOK = findViewById(R.id.dialog_ok); btnOK.setOnClickListener(new android.view.View.OnClickListener() { @Override public void onClick(View paramView) { Log.i(FTTAG, "Click ok for update config"); result = 1; finishDialog(); } }); btnCancel = findViewById(R.id.dialog_cancel); btnCancel.setOnClickListener(new android.view.View.OnClickListener() { @Override public void onClick(View paramView) { Log.i(FTTAG, "Click cancel for update config"); result = 0; finishDialog(); } }); tvMessage = findViewById(R.id.dialog_message);tvPrompt = findViewById(R.id.dialog_prompt);btnOK.setText("是");btnCancel.setText("否");tvPrompt.setText("配置更新"); } /** * 结束对话框,将触发返回result对象 */ public void finishDialog(){ mHandler.sendEmptyMessage(0); } /** * 显示同步对话框 * @return 返回result对象 */ public int showDialog() { super.show(); try { Looper.getMainLooper(); mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (SynDialog.this.isShowing()) { SynDialog.this.dismiss(); throw new RuntimeException(); } } }; Looper.loop(); } catch (Exception e) { } return result; } public int showDialog(int delayMs) { super.show(); try { Looper.getMainLooper(); mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (SynDialog.this.isShowing()) { SynDialog.this.dismiss(); throw new RuntimeException(); } } }; mHandler.sendMessageDelayed(Message.obtain(), delayMs); Looper.loop(); } catch (Exception e) { } return result; } }
用法:
mDialog = new SynDialog(MainActivity.this, true); mDialog.setMessage("发现SD卡,是否更新配置文件?\n" + "按键Up选择是,按键Down选择否"); if (mDialog.showDialog() == 0) { return false; }
mDialog = new SynDialog(MainActivity.this, false); if (needReboot) { mDialog.setMessage("配置有更新, 系统3s后将自动重启!"); } else { mDialog.setMessage("配置没有发生变化, 请拔掉SD卡\n" + "本窗口3s后关闭"); } mDialog.showDialog(3000);
阅读全文
0 0
- <Android> 模态对话框
- android设置模态对话框方法
- Android如何实现模态对话框
- 模态对话框,非模态对话框
- 模态对话框 非模态对话框
- Android的同步对话框(AlertDialog模态对话框返回值实现原理)
- 对话框1----建立模态对话框和非模态对话框
- MFC 对话框类、非模态对话框和模态对话框
- Android如何实现模态对话框(Modal Dialog)
- 模态对话框和非模态对话框
- vc 模态对话框和非模态对话框
- 模态对话框和非模态对话框
- 模态对话框 与 非模态对话框
- 模态对话框与非模态对话框
- 模态对话框与非模态对话框
- 将非模态对话框显示为模态对话框
- 模态对话框和非模态对话框
- 模态对话框和非模态对话框
- 多流聚合与JSON全文检索的功能应用
- 获取登录成功的token
- React Native实现仿天猫商品分类页面
- 拟合与估计问题中的鲁棒方法
- tomcat远程调试
- <Android> 模态对话框
- java中&和&&
- request中getParameter和getAttribute的区别
- win7 sublime 构建 python 交互环境 IDLE 遇到的那些事儿
- Recheck Cond filter IO\CPU放大 原理与优化CASE
- Visual Studio项目目录和文件说明
- db2 9.7 信息中心
- 在window7下,在pycharm中,编写python程序,和leapmotion交互
- freopen()函数的使用