Dialog对话框管理工具类

简介: import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.
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);
        }
}

 

相关文章
|
4月前
|
数据安全/隐私保护 C++ 开发者
C++ Qt开发:标准Dialog对话框组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍标准对话框`QInputDialog`、`QFileDialog `这两种对话框组件的常用方法及灵活运用。在 Qt 中,标准对话框提供了一些常见的用户交互界面,用于执行特定任务,例如获取用户输入、选择文件路径、显示消息等。这些对话框通常具有标准化的外观和行为,使得在不同的平台上能够保持一致性。在一般的开发过程中,标准对话框是开发者常用的工具之一。
50 1
C++ Qt开发:标准Dialog对话框组件
|
6月前
48EasyUI 窗口- 创建对话框
48EasyUI 窗口- 创建对话框
17 0
|
9月前
|
XML Java Android开发
Android 对话框组件 AlertDialog 四种常用方法
Android 对话框组件 AlertDialog 四种常用方法
103 0
dialog快速实现,无需继承Dialog类,实现播放视频!
dialog快速实现,无需继承Dialog类,实现播放视频!
dialog快速实现,无需继承Dialog类,实现播放视频!
|
C++
C/C++ Qt 标准Dialog对话框组件应用
在Qt中对话框分为两种形式,一种是标准对话框,另一种则是自定义对话框,在一般开发过程中标准对话框使用是最多的了,标准对话框一般包括 QMessageBox,QInputDialog,QFileDialog 这几种,这里我将总结本人在开发过程中常用到的标准对话框的使用技巧。
301 0
C/C++ Qt 标准Dialog对话框组件应用
Qml-Dialog不能隐藏标题栏和按钮自定义
在项目中,需要弹出一个对话框来完成用户输入的功能,为了考虑界面的同一,这里需要将原生自带的标题栏隐藏掉,换成自己写的
530 0
Flutter 24: 图解自定义 Dialog 对话框
0 基础学习 Flutter,第二十四步:自定义对话框了解下~
4702 0
|
XML Android开发 数据格式