WindowManager创建悬浮窗,比如音量控制的视图弹窗,一些悬浮按钮,悬浮菜单等
WindowManager mManager = (WindowManager) getApplicationContext() .getSystemService(Context.WINDOW_SERVICE);//WindowManager管理器 RelativeLayout mBottomView = (RelativeLayout) LayoutInflater.from( MainActivity.this).inflate(R.layout.window_bottom, null);//布局资源 WindowManager.LayoutParams mParamsBottom = new WindowManager.LayoutParams();// mParamsBottom.type = LayoutParams.TYPE_PHONE;//它置于所有应用程序之上,状态栏之下 mParamsBottom.format = PixelFormat.RGBA_8888; mParamsBottom.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCHABLE; mParamsBottom.gravity = Gravity.LEFT | Gravity.TOP; mParamsBottom.x = 0;//显示的位置 mParamsBottom.y = 200 mParamsBottom.width = LayoutParams.MATCH_PARENT; mParamsBottom.height = LayoutParams.WRAP_CONTENT; mManager.addView(mBottomView, mParamsBottom);
使用悬浮窗需要如下权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
悬浮窗可以根据不同的flag来覆盖
flag相同时,后弹出的覆盖前弹出
找优先级最高的flag