旋转屏时悬浮窗的位置移动设计 - SDKers/FloatWindow GitHub Wiki

旋转屏时悬浮窗的位置移动设计


背景


在旋转屏幕时,悬浮窗会根据老坐标进行展示,且此时拖动也是无效的(拖动计算使用的宽高是旋转之前的)。

方案


悬浮窗在旋转屏幕的时候需要兼容两种模式,一种是应用内使用,一种是全局使用。这意味着需要两种不同的方案。

  • 应用使用

    集成只在应用内使用时,在Application.ActivityLifecycleCallbacks回调中页面打开时,Configuration.orientation判断页面的方向,若变化则调整。

  • 全局使用

    生命周期监听无法生效,此时可以通过重力感应器感应,判断竖向或者横向。

  • 需要增加接口

    需要增加设置是否自动适配,旋转屏幕,默认开始

已知弊端

  1. 重力感应的时候, 如果页面不旋转,悬浮窗会自动变动