弹出叠加
为了将视图放在每个应用程序的顶部,你必须将视图分配给相应的窗口管理器。为此,你需要系统警报权限,可以通过将以下行添加到清单文件来请求:
<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);
瞧! 你的视图已成功放在所有其他应用程序之上。
注意: 你的视图不会放在键盘上。