| 1234567891011121314151617181920212223242526272829303132333435363738 |
- "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);
|