WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
//获取的是WindowManagerImpl.CompatModeWrapper
mWindowManager = (WindowManager)getSystemService(getApplication().WINDOW_SERVICE);
Log.i(TAG, "mWindowManager--->" + mWindowManager);
//设置window type
wmParams.type = WindowManager.LayoutParams.TYPE_PHONE;
//设置图片格式,效果为背景透明
wmParams.format = PixelFormat.RGBA_8888;
//设置浮动窗口不可聚焦(实现操作除浮动窗口外的其他可见窗口的操作)
wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
//调整悬浮窗显示的停靠位置为右侧底部
wmParams.gravity = Gravity.RIGHT | Gravity.BOTTOM;
// 以屏幕左上角为原点,设置x、y初始值,相对于gravity
Display display = mWindowManager.getDefaultDisplay();
Point size = new Point(); display.getSize(size);
int width = size.x;
int height = size.y;
wmParams.x = 0;
wmParams.y = height/7;
//设置悬浮窗口长宽数据
wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
这里说明下:wmParams.gravity = Gravity.RIGHT | Gravity.BOTTOM;
Gravity.RIGHT wmParams.x = 0;表示距离右侧为0
Gravity.BOTTOM wmParams.y = height/7;表示距离底部是屏幕高度的7/1
那我们的悬浮窗的位置就是在屏幕的右下方,距离底部高度是屏幕的7/1