Android自定义dialog 单利模式

72 阅读1分钟
package com.newingscom.fpimlockscreen;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.View;

/**
 * Created by Administrator on 2019/4/1 0001.
 */

public class MSDialogManager {
    private static MSDialogManager msDialogManager = new MSDialogManager();
    private AlertDialog alertDialog;

public static MSDialogManager newInstance() {
    return msDialogManager;
}

public void showDialog(Context context) {
    if (alertDialog == null) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.MyDialog);
        View alView = View.inflate(context, R.layout.dialog_lockscreen_lock_remind, null);
        builder.setView(alView);
        alertDialog = builder.create();
        alertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialogInterface) {
                alertDialog = null;
            }
        });
    }
    alertDialog.show();
}


public void dismissDialog() {
    if (alertDialog != null) {
        alertDialog.dismiss();
        alertDialog = null;

    }

}


}
<style name="MyDialog" parent="@android:style/Theme.Holo.Dialog">
        <!-- 是否有边框 -->
        <item name="android:windowFrame">@null</item>
        <!--是否在悬浮Activity之上  -->
        <item name="android:windowIsFloating">true</item>
        <!-- 标题 -->
        <item name="android:windowNoTitle">true</item>
        <!--阴影  -->
        <item name="android:windowIsTranslucent">true</item><!--半透明-->
        <!--背景透明-->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 还可以加入一些弹出和退出的动画 (lan)-->
    </style>

    <!--对话框的样式-->
    <style name="NormalDialogStyle">
        <!--对话框背景 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!--边框 -->
        <item name="android:windowFrame">@null</item>
        <!--没有标题 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 是否浮现在Activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!--背景透明 -->
        <item name="android:windowIsTranslucent">false</item>
        <!-- 是否有覆盖 -->
        <item name="android:windowContentOverlay">@null</item>

        <!--背景变暗-->
        <item name="android:backgroundDimEnabled">true</item>
    </style>