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. String to Double出现误差

    场景描述 做实际项目的时候,由于使用Double类的valueOf得到一个用String类型保存的金额参数(单位为元),当需要转换成以分为单位即整形表示(Integer类表示)时,需要用之前得到的do ...

  2. C# 从零开始 vol.2

    这是第二篇 1:命名空间 命名空间可以理解成类的文件夹,这个命名空间中存放着各种类,当你需要使用到对应的类的时候,就需要导入命名空间后才能使用. 引用:可以理解成添加新的存放类的文件夹,也就是一个项目 ...

  3. sublime text 设置

    https://packagecontrol.io/installation#Simple 下载 php 自动补全 点击菜单栏的:Preferences: 选择:Setting-User项: 然后在大 ...

  4. Node.js入门 NPM

    参考一 Node入门  七天学会NodeJS  Node.js v4.2.4 手册 & 文档  Node.js 教程 node.js摸石头系列 从零开始学习node.js   What is ...

  5. 【 转】 C/C++结构体和联合体的区别

    联合体用途:使几个不同类型的变量共占一段内存(相互覆盖) 结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体-------自定义数据类型 总结: 声明一个联合体: union abc { i ...

  6. 更新sdk

    更新sdk,遇到了更新下载失败问题: Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xmlFetched Ad ...

  7. hdu1026

    #include <stdio.h> #include <string.h> #include <queue> using namespace std; struc ...

  8. hdu1024

    #include <cstdio>#include <iostream>const int MAX = 1000005; using namespace std; int nu ...

  9. HDU 1596 find the safest road(SPFA)

    Problem Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一条 ...

  10. Bullet_Point_Py

    1. if __name__ == "__main__" Term: 模块最高级的代码:模块中没有缩进的代码 Principal 1: 第一次导入模块会执行模块最高级的代码.不管你 ...