import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnKeyListener;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView; /**
* Dialog显示的工具类
*
* @author wangfubin
*
*/
public class PromptManager { /**
* 显示一个自定义的Dialog
*
* @param context
* @param mag
* 想要显示的信息
* @param listener
* 回调接口
*/
public static void showDialog(Context context, String mag,
final dialogListener listener) {
final Dialog d = getDialog(context, 0.5f);
TextView tv = (TextView) d.findViewById(R.id.textView1);
tv.setText(mag);
d.setCanceledOnTouchOutside(true);
Button ok = (Button) d.findViewById(R.id.button1);
Button no = (Button) d.findViewById(R.id.button2); ok.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
listener.clickBut(true);
d.dismiss();
}
});
no.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
listener.clickBut(false);
d.dismiss();
}
});
d.show(); } /**
* 获取显示Dialog的实例对象!
*
* @param context
* @param f
* 透明度
* @return
*/
private static Dialog getDialog(Context context, float f) {
final Dialog d = new Dialog(context, R.style.init_game);
Window window = d.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.dimAmount = f;// 越大越不透明
window.setAttributes(lp);
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
d.setContentView(R.layout.pop_twobtn);
return d;
} /**
* 按功能键,模拟出来Menu进行显示!
*
* @param context
* @param mag
* 要显示的信息!
* @param listener
* 回调接口
*/
public static void showMenu(Context context, String mag,
final dialogListener listener) {
final Dialog d = getDialog(context, 0.5f);
TextView tv = (TextView) d.findViewById(R.id.textView1);
tv.setText(mag);
Window window = d.getWindow();
window.setGravity(Gravity.BOTTOM);
Button ok = (Button) d.findViewById(R.id.button1);
Button no = (Button) d.findViewById(R.id.button2);
d.setCanceledOnTouchOutside(true);// 设置点击外部可以取消这个Dialog
d.setOnKeyListener(new OnKeyListener() { @Override
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
d.dismiss();
}
return false;
}
}); ok.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
listener.clickBut(true);
d.dismiss();
}
});
no.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
/**
* 在按功能键弹出的Dialog上点击取消,其实是什么事情都没做(没写代码) 在baseActivity中,可以看看理解下!
*/
listener.clickBut(false);
d.dismiss();
}
});
d.show(); } /**
* 写一个接口,进行函数的回调,让调用者确定究竟做什么!
*
* @author liuzhao
*/
public interface dialogListener {
void clickBut(boolean isOk);
}
}

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. ansible role 执行顺序

    the dependencies of the 'openshift-master' role.- docker- openshif_common  - os_firewall   - openshi ...

  2. sqlmap基础使用

    测试许多款 sql注入工具 最终还是发现 sqlmap 最为强悍 谁用谁知道!赶紧抛弃掉手上一大堆 sql 注入工具吧 : )测试环境:ubuntu 10.10 & windows 7(x64 ...

  3. OOP的字段

    <?php class Archie{ //字段成员声明格式:修饰符 变量名 [=xxx] public $_name='Archie!'; //public表示共有,类外可以访问 public ...

  4. redis8--数据持久化两种方式

    持久化功能redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会把硬盘中的数据恢复到内存(redis)的里边.数据保存到硬盘的过程就称为"持久化&qu ...

  5. windows线程池四种情形(win核心读书笔记)

    windows线程池四种情形(win核心读书笔记) Mircosoft从Windows2000引入线程池API,并在Vista后对线程池重新构架,引入新的线程池API.以下所有线程池函数均适用于Vis ...

  6. Winform制作圆弧panel

    原理就是手动去画边框留出四个角 然后绘制四张圆弧的图片到panel上 public class ArcPanel : Panel { protected override void OnPaint(P ...

  7. Finish and error to: Error Domain=NSURLErrorDomain Code=-1001 "请求超时。

    错误显示:Finish and error to: Error Domain=NSURLErrorDomain Code=-1001 "请求超时." UserInfo={NSUnd ...

  8. Python3与Python2的区别汇总

    1.print 在Python3.0  是一个函数,正确输入应该是:print (3x) 2.raw_input 在Python3.0改成input

  9. Strusts2--课程笔记9

    防止表单重复提交: 用户可能由于各种原因,对表单进行重复提交.Struts2中使用令牌机制防止表单自动提交.以下引用自北京动力节点: 前端表单提交代码: <%@ page language=&q ...

  10. 【转】HDU1028

    转自博客园ID:2108,老卢同志 http://www.cnblogs.com/--ZHIYUAN/p/6102893.html Ignatius and the Princess III Time ...