1. import android.app.Dialog;
  2. import android.content.Context;
  3. import android.content.DialogInterface;
  4. import android.content.DialogInterface.OnKeyListener;
  5. import android.view.Gravity;
  6. import android.view.KeyEvent;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.view.Window;
  10. import android.view.WindowManager;
  11. import android.widget.Button;
  12. import android.widget.TextView;
  13.  
  14. /**
  15. * Dialog显示的工具类
  16. *
  17. * @author wangfubin
  18. *
  19. */
  20. public class PromptManager {
  21.  
  22. /**
  23. * 显示一个自定义的Dialog
  24. *
  25. * @param context
  26. * @param mag
  27. * 想要显示的信息
  28. * @param listener
  29. * 回调接口
  30. */
  31. public static void showDialog(Context context, String mag,
  32. final dialogListener listener) {
  33. final Dialog d = getDialog(context, 0.5f);
  34. TextView tv = (TextView) d.findViewById(R.id.textView1);
  35. tv.setText(mag);
  36. d.setCanceledOnTouchOutside(true);
  37. Button ok = (Button) d.findViewById(R.id.button1);
  38. Button no = (Button) d.findViewById(R.id.button2);
  39.  
  40. ok.setOnClickListener(new OnClickListener() {
  41.  
  42. @Override
  43. public void onClick(View v) {
  44. listener.clickBut(true);
  45. d.dismiss();
  46. }
  47. });
  48. no.setOnClickListener(new OnClickListener() {
  49.  
  50. @Override
  51. public void onClick(View v) {
  52. listener.clickBut(false);
  53. d.dismiss();
  54. }
  55. });
  56. d.show();
  57.  
  58. }
  59.  
  60. /**
  61. * 获取显示Dialog的实例对象!
  62. *
  63. * @param context
  64. * @param f
  65. * 透明度
  66. * @return
  67. */
  68. private static Dialog getDialog(Context context, float f) {
  69. final Dialog d = new Dialog(context, R.style.init_game);
  70. Window window = d.getWindow();
  71. WindowManager.LayoutParams lp = window.getAttributes();
  72. lp.dimAmount = f;// 越大越不透明
  73. window.setAttributes(lp);
  74. window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
  75. window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  76. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  77. d.setContentView(R.layout.pop_twobtn);
  78. return d;
  79. }
  80.  
  81. /**
  82. * 按功能键,模拟出来Menu进行显示!
  83. *
  84. * @param context
  85. * @param mag
  86. * 要显示的信息!
  87. * @param listener
  88. * 回调接口
  89. */
  90. public static void showMenu(Context context, String mag,
  91. final dialogListener listener) {
  92. final Dialog d = getDialog(context, 0.5f);
  93. TextView tv = (TextView) d.findViewById(R.id.textView1);
  94. tv.setText(mag);
  95. Window window = d.getWindow();
  96. window.setGravity(Gravity.BOTTOM);
  97. Button ok = (Button) d.findViewById(R.id.button1);
  98. Button no = (Button) d.findViewById(R.id.button2);
  99. d.setCanceledOnTouchOutside(true);// 设置点击外部可以取消这个Dialog
  100. d.setOnKeyListener(new OnKeyListener() {
  101.  
  102. @Override
  103. public boolean onKey(DialogInterface dialog, int keyCode,
  104. KeyEvent event) {
  105. if (keyCode == KeyEvent.KEYCODE_MENU) {
  106. d.dismiss();
  107. }
  108. return false;
  109. }
  110. });
  111.  
  112. ok.setOnClickListener(new OnClickListener() {
  113.  
  114. @Override
  115. public void onClick(View v) {
  116. listener.clickBut(true);
  117. d.dismiss();
  118. }
  119. });
  120. no.setOnClickListener(new OnClickListener() {
  121.  
  122. @Override
  123. public void onClick(View v) {
  124. /**
  125. * 在按功能键弹出的Dialog上点击取消,其实是什么事情都没做(没写代码) 在baseActivity中,可以看看理解下!
  126. */
  127. listener.clickBut(false);
  128. d.dismiss();
  129. }
  130. });
  131. d.show();
  132.  
  133. }
  134.  
  135. /**
  136. * 写一个接口,进行函数的回调,让调用者确定究竟做什么!
  137. *
  138. * @author liuzhao
  139. */
  140. public interface dialogListener {
  141. void clickBut(boolean isOk);
  142. }
  143. }

Dialog对话框管理工具类的更多相关文章

  1. android的Log日志打印管理工具类(一)

    android的Log日志的打印管理工具类: package com.gzcivil.utils; import android.util.Log; /** * 日志打印管理 * * @author ...

  2. Android 软件管理工具类Utils

    Android 软件管理工具类Utils /** * Created by uilubo on 2015/9/30. * 工具类 */ public class Utils { public stat ...

  3. 阶段3 2.Spring_07.银行转账案例_4 编写事务管理工具类并分析连接和线程解绑

    事务管理工具类 首先需要有connection.并且是当前线程上的connection.声明connectionUtils.提供set方法等着spring来注入 有异常需要放在事务里面 close关闭 ...

  4. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  5. Fragment管理工具类

    Fragment相关→FragmentUtils.java→Demo addFragment : 新增fragment removeFragment : 移除fragment replaceFragm ...

  6. android 对话框显示工具类

    这个工具类非常简单,但是将显示dialog的方法统一封装,能够大大减少代码重复 package com.ctbri.weather.utils; import android.app.AlertDia ...

  7. 可以获取JVM信息的一些管理工具类

    一些可以获取JVM信息的java工具类 BufferPoolMXBean.class ClassLoadingMXBean.class CompilationMXBean.class GarbageC ...

  8. 【Android工具类】Activity管理工具类AppManager

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 import java.util.Stack; import android.app.Activity; i ...

  9. 【笔记】cookies管理工具类

    package com.ulearning.ulms.util; import java.io.UnsupportedEncodingException; import java.net.URLDec ...

随机推荐

  1. Voting

    Voting time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  2. Arpa's loud Owf and Mehrdad's evil plan

    Arpa's loud Owf and Mehrdad's evil plan time limit per test 1 second memory limit per test 256 megab ...

  3. python 基础学习4-with语句

    why use With? 有些事情需要事先进行设置,事后进行处理,with语句提供了一个很好的处理方式,例如文件读写处理,有时候可能忘记关闭文件,with可以很好地处理这种现象. with语句用来简 ...

  4. C#读取Excel的其中一种方式OleDb读取(100万条)--快速大量插入SQL中

    主要运用表类型 Create table BulkTestTable( Id nvarchar(), UserName nvarchar(), Pwd nvarchar() ) Go CREATE T ...

  5. 显示ubuntu 10.4右上角网络图标

    在面板右击“添加到面板”,选择“通知区域”

  6. Hibernate5--课程笔记1

    Hibernate简介: Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hib ...

  7. 8VC Venture Cup 2017 - Elimination Round

    传送门:http://codeforces.com/contest/755 A题题意是给你一个数字n,让你找到一个数字m,使得n*m+1为合数,范围比较小,直接线性筛出1e6的质数,然后暴力枚举一下就 ...

  8. Javascript获取不重复的随机数值

    /** * 获取不重复随机数 * @param integer start 随机数最小值 * @param integer end 随机数最大值 * @param integer size 随机数获取 ...

  9. 计算机网络课程优秀备考PPT之第四章介质访问控制层(四)

    为了记录自己从2016.9~2017.1的<计算机网络>助教生涯,也为了及时梳理和整写笔记! 前期博客是, 计算机网络课程优秀备考PPT之第一章概述(一) 计算机网络课程优秀备考PPT之第 ...

  10. 《JS权威指南学习总结--9.2 类和构造函数》

    内容要点: 例9-1展示了在JS中定义类的其中一种方法.但这种方法并不常用,毕竟它没有定义构造函数,构造函数是用来初始化新创建的对象的. 使用关键字new来调用构造函数会自动创建一个新对象,因此构造函 ...