应用程序内的浮动视图

Mic*_*ler 5 android floating android-view

我正在尝试实现一个浮动的可拖动视图,该视图将显示在单个应用程序的所有活动中。
这意味着用户将能够在屏幕上拖动屏幕的 30% 高度和 50% 宽度的视图,并将其绘制在应用程序中的任何 Activity 上方。当用户切换到同一应用程序中的另一个活动时,浮动视图应保留在同一位置。

我知道可以使用SYSTEM_ALERT_WINDOW权限,我想避免这种情况,因为此视图只需要在应用程序中显示,并且我不希望要求用户批准此类权限。

另一个重要点:
该视图将成为 SDK 的一部分。
这意味着我不对应用程序的活动/片段/布局负责。
我可以有/假设:

  • 托管应用程序将子类化的基本应用程序
  • 所有根布局都有一些标识符并且属于某种特定类型(例如所有根布局都是RelativeLayout并且有一个 id root_layout

4-6 年前被问过的类似问题,有 0 个满意的答案:

Eya*_*ael 0

我可以建议您使用在后台运行的服务来保存该特定视图。使用服务将满足您的需求,即您希望特定视图保持有效,直到用户选择手动禁用或关闭它。您需要使用异步服务,即 IntentService,这样它就不会影响您的 ui 主线程(不要忘记活动的生命周期和层次结构)。

请参阅以下链接。1 - 链接到谷歌开发人员 https://developer.android.com/training/run-background-service/create-service

2 - 链接到此类实现的示例 https://medium.com/exploring-code/create-chat-heads-like-facebook-messenger-32f7f1a62064

  • @androidbash我最终使用 ActivityLifecycleCallbacks 并将我的视图添加为每个新活动的装饰视图的子视图,同时手动保留视图的位置(将其定位在新活动中与前一个活动相同的位置)。 (3认同)