自定义View如何显示AlertDialog

假设我自定义了一个SurfaceView,实现了Runable接口,我想在这个View的基础上通过某种条件后显示一个AlertDialog,能用什么方式去显示这个Dialog啊?

是遇到了什么问题吗?按理说直接常规操作实例化,弹出就行。Dialog是在上层,不影响哈

new AlertDialog().settitle().setContent().setxxxLisener().show()

直接调用系统的dialog Api就可以。


public static Dialog createLoadingDialog(Context context, String msg) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.dialog_loading, null);// 得到加载view
        LinearLayout layout = (LinearLayout) v
                .findViewById(R.id.dialog_loading_view);// 加载布局
        TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字
        tipTextView.setText(msg);// 设置加载信息

        Dialog loadingDialog = new Dialog(context, R.style.MyDialogStyle);// 创建自定义样式dialog
        loadingDialog.setCancelable(true); // 是否可以按“返回键”消失
        loadingDialog.setCanceledOnTouchOutside(false); // 点击加载框以外的区域
        loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局
        /**
         *将显示Dialog的方法封装在这里面
         */
        Window window = loadingDialog.getWindow();
        WindowManager.LayoutParams lp = window.getAttributes();
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
        window.setGravity(Gravity.CENTER);
        window.setAttributes(lp);
        //window.setWindowAnimations(R.style.PopWindowAnimStyle);
        loadingDialog.show();
        Log.i(TAG, "createLoadingDialog: ");
        return loadingDialog;
    }

    /**
     * 关闭dialog
     *
     * @param mDialogUtils
     */
    public static void closeDialog(Dialog mDialogUtils) {
        if (mDialogUtils != null && mDialogUtils.isShowing()) {
            Log.i(TAG, "closeDialog: ");
            mDialogUtils.dismiss();
        }
    }

你把弹框layout改成自己的就行了,其他的正常按你的逻辑调用