如何叠加屏幕?
- it should be touchable
- view must overlay system action bar
- view must overlay soft buttons back/home/recent_apps
Android 4.0 +
public class MyService extends Service { @Override public void onCreate() { super.onCreate(); WindowManager.LayoutParams params = ViewUtils.generateFullScreenParams(true); final WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); wm.addView(overlayView, params); } ... }
和布局参数创建器
public static WindowManager.LayoutParams generateFullScreenParams() {
return new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
}
好的,看起来不错。
标志TYPE_SYSTEM_ALERT在Android 5.0以下版本不会叠加系统栏,也不会叠加软按钮,但是我可以处理触摸事件。
标志TYPE_SYSTEM_OVERLAY会叠加系统栏,不会叠加按钮,并且我无法处理触摸事件。
有什么想法吗?