像正常活动一样创建系统覆盖窗口

时间:2018-08-14 11:16:04

标签: java android android-layout lockscreen

我的应用程序锁定了电话,我发现可以通过在普通窗户上创建系统来做到这一点。 但我希望此窗口包含按钮以及生成 TextViews句柄 onClick事件 怎么做 ?你能提供样本代码吗 这是我想做的一个例子 example for the activity

1 个答案:

答案 0 :(得分:0)

以下代码显示了如何通过WindowManager添加叠加视图。不幸的是,这些代码跳到“最近任务”活动时不起作用。

向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);

演示用户界面显示如下:

enter image description here