创建系统覆盖 window 像正常一样 activity
Creating System overlay window Like a normal activity
我的应用程序锁定了 phone ,我发现我可以通过创建一个覆盖层 window 的系统来做到这一点。
但我希望这个 window 包含按钮和 generate TextViews
和 handle onClick
事件
怎么做 ?你能提供示例代码吗
这是我想做的事的例子
example for the activity
以下代码展示了如何通过WindowManager
添加叠加视图。不幸的是,这些代码在跳转到 "Recent Task" Activity.
时不起作用
添加权限 AndroidManifest.xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
然后,在Java中写入这些代码。
WindowManager windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}
layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
layoutParams.x = 0;
layoutParams.y = 0;
layoutParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
View window = LayoutInflater.from(this).inflate(R.layout.layout_window, null, false);
window.findViewById(R.id.left).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "Click Lock", Toast.LENGTH_SHORT).show();
}
});
windowManager.addView(window, layoutParams);
演示用户界面显示如下:
我的应用程序锁定了 phone ,我发现我可以通过创建一个覆盖层 window 的系统来做到这一点。
但我希望这个 window 包含按钮和 generate TextViews
和 handle onClick
事件
怎么做 ?你能提供示例代码吗
这是我想做的事的例子
example for the activity
以下代码展示了如何通过WindowManager
添加叠加视图。不幸的是,这些代码在跳转到 "Recent Task" Activity.
添加权限 AndroidManifest.xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
然后,在Java中写入这些代码。
WindowManager windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}
layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
layoutParams.x = 0;
layoutParams.y = 0;
layoutParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
View window = LayoutInflater.from(this).inflate(R.layout.layout_window, null, false);
window.findViewById(R.id.left).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "Click Lock", Toast.LENGTH_SHORT).show();
}
});
windowManager.addView(window, layoutParams);
演示用户界面显示如下: