夏普,388.59,琪吾网
这里要解释一下:android 8.0我们要弹出一个dialog时,不要设置
windowmanager.layoutparams.type为windowmanager.layoutparams.type_system_alert,?
而是要设置为:windowmanager.layoutparams.type_application_overlay
代码如下:
windowmanager.layoutparams lp = dialog.getwindow().getattributes(); lp.width = (int) (display.getwidth() - width); //设置宽度 //窗口类型 if (build.version.sdk_int >= build.version_codes.o) { lp.type = windowmanager.layoutparams.type_application_overlay; } else { lp.type = windowmanager.layoutparams.type_system_alert; } dialog.getwindow().setattributes(lp); dialog.show();
故:我们要在设置窗口类型的时候判断是否为8.0及以上,然后进行不同的设置。
注意:设置窗口类型一定要在dialog调用show()方法之前。
此外,我们还需要在androidmanifest.xml中添加权限:
如果是android 8.0系统,需要我们动态授权悬浮窗权限,代码如下:
@targetapi(build.version_codes.o) protected boolean requestdrawoverlays() { if (!settings.candrawoverlays(mcontext)) { showmsg("使用本应用需要您开启悬浮窗权限,请前往设置。"); intent intent = new intent(settings.action_manage_overlay_permission, uri.parse("package:" + mcontext.getpackagename())); startactivityforresult(intent, constant.overlay_permission_req_code); return false; } return true; }
@override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); switch (requestcode) { case constant.overlay_permission_req_code: if (requestdrawoverlays()) { //允许悬浮窗 } break; } }
到此已经ok了,第一次入坑,记录一下。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论