VKD*_*Dev 8 java android android-layout
如何覆盖屏幕?
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);
}
...
}
Run Code Online (Sandbox Code Playgroud)和布局参数创建者
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);
}
Run Code Online (Sandbox Code Playgroud)
好的,看起来不错.
标志TYPE_SYSTEM_ALERT 不覆盖系统栏(android <5.0),不覆盖软按钮,但我可以处理onTouch事件
标志TYPE_SYSTEM_OVERLAY 覆盖系统栏,而不是覆盖按钮,我无法处理onTouch事件.
有任何想法吗?
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);
}
Run Code Online (Sandbox Code Playgroud)
在此代码中,您添加了WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
删除此行其工作并在查看其工作时添加触摸事件
对于屏幕覆盖权限,我参考这篇文章如何默认启用屏幕覆盖权限
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |