Android 悬浮窗

2024-04-04

我想制作一个红色的覆盖窗口。你可以在下面看到我的代码。当我单击按钮时它不执行任何操作。哪里有问题?我怎样才能解决这个问题。请提出建议 谢谢你!

public class MainActivity extends AppCompatActivity {
Button button;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button=findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MainActivity.this, OverlayLayer.class);
            startService(intent);
        }
    });
}
}


public class OverlayLayer extends Service {

public IBinder onBind(Intent ıntent) {
    return null;
}
private LinearLayout mLayout;
private WindowManager mManager;


@Override
public void onCreate() {
    super.onCreate();
    mManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
    mLayout = new LinearLayout(this);
    LinearLayout.LayoutParams mParams=new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT);
    mLayout.setBackgroundColor(Color.rgb(255,255,0));
    mLayout.setLayoutParams(mParams);
    WindowManager.LayoutParams parameters=new WindowManager.LayoutParams(400,150,WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,PixelFormat.TRANSLUCENT);
    parameters.x=0;
    parameters.y=0;
    parameters.gravity = Gravity.CENTER;
    mManager.addView(mLayout,parameters);
   }
 }

首先将您的服务添加到 AndroidManifest 中,将其设置为“静态”,因为它位于您的 MainActivity.java 文件中:

<service android:name=".MainActivity$OverlayLayer"/>

//make class static
public static class OverlayLayer extends Service {
...
}

或者创建一个独立的(与 MainActivity 分开的)类,例如 OverlayLayer.java 并将其添加到 Manifest 文件中,例如:

<service android:name=".OverlayLayer"/>

之后使用以下代码在窗口中添加视图:

在窗口上添加视图的标志取决于操作系统,因此以下代码将使其在每个操作系统上工作:

In 覆盖层班级 :

  @Override
        public void onCreate() {
            super.onCreate();
            mManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
            mLayout = new LinearLayout(this);
            LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.MATCH_PARENT);
            mLayout.setBackgroundColor(Color.rgb(255, 255, 0));
            mLayout.setLayoutParams(mParams);


            addToWindow(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
        }


        public void addToWindow(int LAYOUT_FLAG) {
            WindowManager.LayoutParams parameters = new WindowManager.LayoutParams(400, 150, LAYOUT_FLAG, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);
            parameters.x = 0;
            parameters.y = 0;
            parameters.gravity = Gravity.CENTER;
            try {

                mManager.addView(mLayout, parameters);

            } catch (Exception e) {

                if (LAYOUT_FLAG == WindowManager.LayoutParams.TYPE_SYSTEM_ALERT) {
                    addToWindow(WindowManager.LayoutParams.TYPE_TOAST);
                }
                if (LAYOUT_FLAG == WindowManager.LayoutParams.TYPE_TOAST) {
                    addToWindow(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
                }
                if (LAYOUT_FLAG == WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY) {
                    addToWindow(WindowManager.LayoutParams.TYPE_PHONE);
                }
            }
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 悬浮窗 的相关文章

随机推荐

  • Z3 SMT 求解器中的常数相等

    我正在使用 Microsoft 的 Z3 SMT 求解器 并且我正在尝试定义自定义类型的常量 默认情况下 这些常量似乎并不不平等 假设您有以下程序 declare sort S 0 declare const x S declare con
  • 带有淡入淡出效果的完整背景图像

    crossfade gt div animation imageAnimation 30s linear infinite 0s backface visibility hidden background size cover backgr
  • 旁加载静态数据

    在 ParDo 中处理数据时 我需要使用存储在 Google Cloud Storage 上的 JSON 架构 我想这可能是侧面加载 我读了他们称之为文档的页面 https beam apache org releases pydoc 2
  • 如何将 [[nodiscard]] 属性应用于 lambda?

    我想防止人们在不处理返回值的情况下调用 lambda Clang 4 0 拒绝我尝试过的一切 使用 std c 1z 进行编译 auto x nodiscard return 1 error nodiscard attribute cann
  • 处理segfault信号SIGSEGV需要使用siginfo_t确定segfault的原因

    我正在为 pthread 库制作一个包装器 它允许每个线程拥有自己的一组非共享内存 现在 如果任何线程尝试读取另一个线程的数据 程序就会出现段错误 这很好 我可以用叹息者抓住它并打电话pthread exit 并继续执行该程序 但并不是所有
  • Bootstrap 下拉列表 z-index 显示在模式窗口页脚下

    我在引导程序方面遇到了一些样式问题 我有一个包含下拉菜单的小模态窗口 但是我似乎无法让下拉菜单显示在窗口的页脚上 我已经使用了下拉列表的 zindex 确保它高于 Windows 但没有运气 谁能建议我应该改变什么 The html div
  • 如何创建浮动操作按钮转变成单张材料

    我正在尝试查看设计库中是否存在任何内置动画来创建浮动操作按钮 并将其转换为单个材料表 如材料设计图像中所示 https material design storage googleapis com publish material v 4
  • Android:访问硬件相机预览帧数据而不绘制它们

    根据 Java SDK 端的 android 相机文档 必须为相机预览帧提供一个要绘制的 可见且活动的 表面 以便访问帧数据 我已经链接了我在这里遇到的一些内容 我是新人 所以最多有 2 个超链接 但是在最终在这里发布我自己的问题之前 我查
  • Heroku DATABASE_URL 作为 Maven 的 JDBC Url

    我在 Heroku 上的应用程序使用 DATABASE URL 使用 Java 将其解析为带有用户名和密码的 JDBC URL 很简单 那里没有问题 但是 我有一个带有 Maven 插件的 JOOQ 生成器和 Flyway 迁移器 但我不知
  • 如何使用 CodeIgniter ACL 库?

    如何实现 ACL 库 对用户角色使用 ACL 的最佳方法是什么 在标准 PHP 中 我会编写如下代码 if userTypeId Admin hello Admin else if userTypeId Member hello membe
  • 创建 ManagedCertificate 会导致“状态:FailedNotVisible”

    使用 Kubernetes 1 12 6 gke 7 或更高版本 可以创建一个 ManagedCertificate 然后从将服务暴露到互联网的入口资源中引用该证书 运行 kubectl describe Managedcertificat
  • 我可以检查 CoInitialize 是否已被调用吗?

    在具有ADO数据库连接的多线程环境中 我想知道CoInitialize是否已被调用 我该如何检查这个 通常你不应该做这个检查而只是打电话CoInitialize CoUnInitialize一对 你仍然可以这样做 function IsCo
  • 条码字段长度

    我正在写一些考勤软件 每个会员都会有一张带有条形码的身份证 他们将用它来登录活动 条形码字段在我的数据库中应该有多长 我想要接受 Code 39 和 Code 128 条形码 我知道这些是可变长度代码 那么我应该将最大长度设置为多少 Tha
  • 将方法指针转换为整数,然后调用它

    我想知道以下是否可能 如果可以 怎么办 请代码示例 如何储存一个指向对象方法的指针 as an 整数值 如何将该整数值转换回 方法指针 以及call it 我想要做的是将 方法指针 存储在 TComponent 派生对象的整数标记值中 然后
  • 如何确认SQL注入

    有什么方法可以确认特定的安全漏洞是通过 SQL 注入完成的吗 这里没有简单的方法 但是如果您启用了用于记录每个 SQL 语句的 SQL 服务器 这就是我要做的 通常 当我在某处进行 SQL 注入时 我会在结束前一个字符串后使用其中一个作为始
  • 如何在Fragment中实现缩放捏合手势

    我用过 ScaleGestureDetector 我使用了这段代码 但它在片段中不起作用 而且也没有显示任何错误 请任何人都可以帮助我解决这个问题 提前致谢 但是当我在活动中使用相同的代码时它工作得很好 public class Fragm
  • 如何使用 Groovy 获取 Jenkins 当前构建项目的具体信息?

    在 Jenkins Hudson 中 在 Postbuild Groovy 脚本的帮助下 我想获得以下其中一项 环境变量 例如当前的 JOB NAME BUILD NUMBER 等 当前项目的特定版本号的结果 当前项目中最后一次不成功构建的
  • 在 Node.js 数据流中通过换行获取块

    有一次我认为你可以告诉 Node js 子进程按换行符对数据进行分块 如下所示 子进程的 stderr 数据事件针对字符和单词而不是行触发 理想情况下 我可以传递一个标志来告诉流仅在一行数据准备就绪时触发数据事件 难道就没有办法做到这一点吗
  • Android - 即使应用程序被终止或设备重新启动,也会在后台运行服务

    我想保持服务在后台运行 即使我的应用程序被终止 我在用着android intent action USER PRESENT事件 但该服务仅在屏幕解锁时运行 我试过android intent action BOOT COMPLETED但下
  • Android 悬浮窗

    我想制作一个红色的覆盖窗口 你可以在下面看到我的代码 当我单击按钮时它不执行任何操作 哪里有问题 我怎样才能解决这个问题 请提出建议 谢谢你 public class MainActivity extends AppCompatActivi