怎么实现android 全局悬浮窗

这篇具有很好参考价值的文章主要介绍了怎么实现android 全局悬浮窗。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要实现 Android 全局悬浮窗,可以按照以下步骤:文章来源地址https://www.toymoban.com/news/detail-509473.html

  1. 在 AndroidManifest.xml 文件中添加 SYSTEM_ALERT_WINDOW 权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  1. 创建一个 Service 类,并在其中创建一个 WindowManager 来管理悬浮窗:
public class FloatingWindowService extends Service {

    private WindowManager mWindowManager;
    private View mFloatingView;

    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化 WindowManager
        mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

        // 创建悬浮窗 View
        mFloatingView = LayoutInflater.from(this).inflate(R.layout.floating_window, null);

        // 设置悬浮窗 View 的参数
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ?
                        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY :
                        WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT);

        // 添加悬浮窗 View
        mWindowManager.addView(mFloatingView, params);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        // 移除悬浮窗 View
        if (mFloatingView != null) {
            mWindowManager.removeView(mFloatingView);
        }
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
  1. 在悬浮窗 View 的布局文件中添加需要展示的内容:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <!-- 添加需要展示的内容 -->

</RelativeLayout>
  1. 在 Activity 中启动 Service:
Intent intent = new Intent(this, FloatingWindowService.class);
startService(intent);
  1. 最后,记得在不需要展示悬浮窗时,调用 stopService() 方法停止 Service:
Intent intent = new Intent(this, FloatingWindowService.class);
stopService(intent);

到了这里,关于怎么实现android 全局悬浮窗的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用uniapp实现全局悬浮按钮(可拖动)

    效果如下 实现方案 使用uniapp官方组件 movable-area和movable-view 代码解析 在components新建一个xxx.vue组件 重点在于movable-area与movable-view需要分别增加pointer-events: none和pointer-events: auto用于组件事件穿透与恢复组件事件(此处不加会导致引用该组件的父组件无法使用事件) 组件代码

    2024年02月11日
    浏览(50)
  • android 悬浮窗 模拟微信通话返回桌面悬浮

    现有一款IM聊天需求,在通话页面点击缩小视图或者Home键返回桌面,点击悬浮窗回到通话页面这样一个需求。 权限 首先是权限的获取,请注意,在Android 8.0及以上版本中,需要申请悬浮窗权限(SYSTEM_ALERT_WINDOW)才能显示悬浮窗。你可以在应用启动时请求该权限,或者引导用

    2024年02月01日
    浏览(37)
  • Android NestedScrollView悬浮固定顶部

    项目中有页面涉及到多个元素组 需要NestedScrollView包裹来上下滑动 接到需求 一些标题在滑动到顶部时需要置顶 我之前做过关于Android Behavior之ViewPager+Fragment+RecyclerView实现吸顶效果 大概就是这种效果 只不过这次是随意的组件 比如 TextView 或布局组件 RelativeLayout 等 废话不多说来

    2024年01月24日
    浏览(43)
  • Android 应用弹出悬浮窗

    Android开发者经常遇到应用想弹出悬浮窗的操作,而且有可能还想要高层级弹窗,就像ipone的浮标touch一样。android当然也有类似的悬浮图标,比如前些年我们的流量监控提醒。  这里我们忽略UI美学,简单记录一下: 1、基本使用 它的基本使用步骤是不会变的,只是有时候我们

    2024年02月16日
    浏览(36)
  • Android 点击悬浮窗后台启动Activity问题及方案

    背景:开启悬浮窗,当app进入后台后,点击悬浮窗进入固定页面 问题:当app在后台运行时,点击悬浮窗,以下代码不能拉起app,经排查,部门手机需要开启后台弹出界面权限 如图  不同的机型这个权限的名称也不相同,要开启此权限,要跳转的界面也不同,所以需要获取不同机型的此页面路

    2024年02月11日
    浏览(44)
  • android 12后WindowManager事件穿透类型悬浮窗无效问题

    笔记: 项目需要将一个悬浮窗WindowManager仅显示view给用户看,不可操作,将触摸事件穿透到后面的窗口。WindowManager.LayoutParams代码如下 在android12以下的机型中测试都没问题,触摸事件可以穿透悬浮窗。但在android 12机型测试时,触摸事件无法穿透悬浮窗了。 查了android开发者官

    2024年02月13日
    浏览(50)
  • Android12(S)授权弹窗被悬浮窗遮挡导致无法点击问题分析

    在测试过程中发现,部分情况下当应用请求权限时,权限授予弹窗中的选项无法点击,有时候又可以。点击其他区域发现是可以正常响应,获取按键事件,发现触摸是有正常上报事件的,所以可以排除是触摸失灵导致。 既然是权限授予弹窗无法点击,那么我们就去找权限管理

    2024年02月11日
    浏览(39)
  • Android 全局控件属性设置

            如 设置全局字体、全局文本属性设置         在App使用的主题中,添加属性及属性值 如给所有的文本设置属性,注释部分作用是设置应用全局字体

    2024年02月11日
    浏览(36)
  • android 全局异常处理封装

    app出现了问题,尤其是多线程问题,某个线程出了问题,很不好找,那是不是可以搞一个统一的处理类,将所有的异常信息都统一到一个地方呢,原本只是一个知识点,但我发现这里还可以 保存异常信息到本地或云端,统计异常信息等,所以就封装了一个类 1 用法 开发者只

    2024年02月22日
    浏览(39)
  • Android Framework 全局替换系统字体

    基于Android 11 Android Framework 全局替换系统字体 将需要替换的字体资源放置frameworks/base/data/fonts/目录下。 将系统默认的Roboto字体替换为HarmonyOs字体。 frameworks/base/data/fonts/fonts.xml frameworks/base/data/fonts/Android.mk frameworks/base/data/fonts/fonts.mk 编译刷机验证。 frameworks/base/graphics/java/and

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包