android 全局dialog,并且兼容android8.0

时间:2024-04-09 20:51:28

android 全局dialog,并且兼容android8.0 系统。


<!-- 浮动通知权限 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

初始化dialog

public static void showLogoutDialog(final Context context) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    /*true 代表点击空白可消失   false代表点击空白哦不可消失 */
    builder.setCancelable(false);
    View view = View.inflate(context, R.layout.dialog_logout, null);
  
    TextView tvOk =   view.findViewById(R.id.id_logout_tv_ok);
    TextView tvCancel =   view.findViewById(R.id.id_logout_tv_cancel);


    builder.setView(view);
    final AlertDialog dialog = builder.create();
    
    //设置弹出全局对话框,但是这句话并不能解决在android的其他手机上能弹出来(例如用户华为p10 就无法弹框)
    // dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
    
    //只有这样才能弹框
    if (Build.VERSION.SDK_INT>=26) {//8.0新特性
        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
    }else{
        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    }

    
    tvOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });

    tvCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });

    dialog.show();
}

调用dialog

showLogoutDialog(mContext);


android 全局dialog,并且兼容android8.0  android 全局dialog,并且兼容android8.0


这样就能简单的把一个dialog 全局显示出了,然而如果你的dialog 界面是有很多逻辑的,例如新年卡片等推送的界面

android 全局dialog,并且兼容android8.0

这种情况是在下面这句设置 style,android 全局dialog,并且兼容android8.0android 全局dialog,并且兼容android8.0android 全局dialog,并且兼容android8.0

AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.Dialog);

这是因为AlertDialog 是很难设置 style,看到这里是不是很扎心了,老铁android 全局dialog,并且兼容android8.0

我也是很扎心,我也是查了很多资料,也下载很多次其他人的demo,说实话效果不咋地却花了不少的下载资源,后来就放弃了,过了一天想了一些,结合以前做过的demo,于是乎放弃了 AlertDialog.

花了不少时间才做成下面的效果,不容易啊android 全局dialog,并且兼容android8.0

android 全局dialog,并且兼容android8.0


上面的效果是是 启动service + 定时器 + 广播,显示的效果 


android 全局dialog,并且兼容android8.0



下载连接地址:

https://download.csdn.net/download/u014133383/10364495