弹出叠加

为了将视图放在每个应用程序的顶部,你必须将视图分配给相应的窗口管理器。为此,你需要系统警报权限,可以通过将以下行添加到清单文件来请求:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

注意: 如果你的应用程序被销毁,你的视图将从窗口管理器中删除。因此,最好创建视图并通过前台服务将其分配给窗口管理器。

将视图分配给 WindowManager

你可以按如下方式检索窗口管理器实例:

WindowManager mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);

要定义视图的位置,你必须创建一些布局参数,如下所示:

WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.MATCH_PARENT,
        WindowManager.LayoutParams.TYPE_PHONE,
        WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
        PixelFormat.TRANSLUCENT);
mLayoutParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;

现在,你可以将视图与创建的布局参数一起分配给窗口管理器实例,如下所示:

mWindowManager.addView(yourView, mLayoutParams);

瞧! 你的视图已成功放在所有其他应用程序之上。

注意: 你的视图不会放在键盘上。