Android悬浮窗屏蔽悬浮窗外部所有的点击事件的实例代码
程序员文章站
2022-06-14 09:33:13
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悬浮窗屏蔽悬浮窗外部所有的点击事件实例代码,希望对大家有所帮助