"ui"; /** * 一次性探测:两个 TYPE_APPLICATION_OVERLAY 窗口能否**同时绘制**。 * 结论看截图:红块 A 与绿块 B 是否都出现。 * 另外顺带测 FLAG_NOT_TOUCHABLE 能否动态开关。 */ var wm = context.getSystemService("window"); var LP = android.view.WindowManager.LayoutParams; function mk(x, y, w, h, color, text) { var v = new android.widget.TextView(context); v.setText(text); v.setTextColor(-1); v.setTextSize(40); v.setBackgroundColor(color); var lp = new LP(); lp.type = 2038; // TYPE_APPLICATION_OVERLAY lp.format = -3; // TRANSLUCENT lp.flags = 0x8 | 0x200; // NOT_FOCUSABLE | LAYOUT_NO_LIMITS lp.gravity = 51; // TOP | LEFT lp.x = x; lp.y = y; lp.width = w; lp.height = h; wm.addView(v, lp); return { v: v, lp: lp }; } var A = mk(20, 300, 200, 200, -65536, "A"); var B = mk(20, 700, 400, 300, -16711936, "B"); toast("两个 overlay 已加"); setTimeout(function () { // 3 秒后把 B 设成不可触摸,再等 3 秒 try { B.lp.flags = B.lp.flags | 0x10; // FLAG_NOT_TOUCHABLE wm.updateViewLayout(B.v, B.lp); toast("B 已设 NOT_TOUCHABLE"); } catch (e) { toast("updateViewLayout 失败 " + e); } }, 3000); setTimeout(function () { toast("探测结束"); }, 9000);