欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android悬浮窗屏蔽悬浮窗外部所有的点击事件的实例代码

程序员文章站 2023-11-11 08:33:10
android可以在所有应用上方添加view,就是给windowmanager添加一个view,在创建的view的时候可以给这个view设置layoutparams(and...

android可以在所有应用上方添加view,就是给windowmanager添加一个view,在创建的view的时候可以给这个view设置layoutparams(android.view.windowmanager.layoutparams.layoutparams())属性,默认是屏蔽view区域以外的所有点击事件,即在显示view的时候,屏幕的其它区域都不可点击,包括菜单和返回键等。
当给layoutparams设置合适的flag后,其它区域就可以响应点击了。

示例代码:

/**
  * 创建一个小悬浮窗。初始位置为屏幕的右部中间位置。
  * 
  * @param context 必须为应用程序的context.
  */
 public static void createsmallwindow(context context) {
  windowmanager windowmanager = getwindowmanager(context);
  int screenwidth = windowmanager.getdefaultdisplay().getwidth();
  int screenheight = windowmanager.getdefaultdisplay().getheight();
  if (smallwindow == null) {
   smallwindow = new floatwindowsmallview(context);
   if (smallwindowparams == null) {
    smallwindowparams = new layoutparams();
    smallwindowparams.type = layoutparams.type_phone;
    smallwindowparams.format = pixelformat.rgba_8888;
    smallwindowparams.flags = layoutparams.flag_not_touch_modal
      | layoutparams.flag_not_focusable;
    smallwindowparams.gravity = gravity.left | gravity.top;
    smallwindowparams.width = floatwindowsmallview.viewwidth;
    smallwindowparams.height = floatwindowsmallview.viewheight;
    smallwindowparams.x = screenwidth;
    smallwindowparams.y = screenheight / 2;
   }
   smallwindow.setparams(smallwindowparams);
   windowmanager.addview(smallwindow, smallwindowparams);
   logprinter.i(tag, "添加了小浮标view");
  }
 }
smallwindowparams.flags = layoutparams.flag_not_touch_modal | layoutparams.flag_not_focusable;

这行代码控制view以外的区域可以响应点击和触摸事件。如果没有设置flag,则view以外区域不能响应

以上所述是小编给大家介绍的android悬浮窗屏蔽悬浮窗外部所有的点击事件实例代码,希望对大家有所帮助