【发布时间】:2015-04-30 00:20:29
【问题描述】:
如何叠加屏幕?
- 它应该是可触摸的
- 视图必须覆盖系统操作栏
- 视图必须覆盖软按钮 back/home/recent_apps
-
安卓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 不覆盖软按钮,但我可以处理onTouch事件
标记 TYPE_SYSTEM_OVERLAY 覆盖系统栏,不覆盖按钮,我无法处理 onTouch 事件。
有什么想法吗?
【问题讨论】:
-
为什么你的网络设置主题全屏没有标题栏?
-
此视图来自服务,但主题实际适用于活动。如果我错了,请纠正我
-
你在 OnCreate 里面的 Service 里面创建 View ??喜欢对话框?
-
是的,我编辑了我的问题
-
也许我可以在没有视图的情况下检测屏幕上的触摸事件? (适用于所有应用程序)
标签: java android android-layout