AndroidStudio悬浮窗
最近在研究悬浮窗,先展示下效果图
需要掌握的知识有:
- WindowManager类:
- addView方法用于添加一个悬浮窗。
- updateViewLayout方法用于更新悬浮窗的参数。
- removeView用于移除悬浮窗。
- 获取WindowManager对象:
windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
- WindowManager.LayoutParams类:
- type值用于确定悬浮窗的类型,一般设为2002,表示在所有应用程序之上,但在状态栏之下。
- flags值用于确定悬浮窗的行为,比如说不可聚焦,非模态对话框等等。
- gravity值用于确定悬浮窗的对齐方式,一般设为左上角对齐,这样当拖动悬浮窗的时候方便计算坐标。
- x值用于确定悬浮窗的位置,如果要横向移动悬浮窗,就需要改变这个值。
- y值用于确定悬浮窗的位置,如果要纵向移动悬浮窗,就需要改变这个值。
- width值用于指定悬浮窗的宽度。
- height值用于指定悬浮窗的高度。
- 对于一个没有被载入或者想要动态载入的界面,使用LayoutInflater.inflate()来载入:
LayoutInflater layoutInflater = LayoutInflater.from(context);layoutInflater.inflate(R.layout.float_window_small, this);
- 发布apk,安装到手机以后,手动开启软件权限(在手机设置中)。
-------------------------------------------------------------------
- MainActivity:点击“创建悬浮窗”按钮,开启Service