Android创建“Ghost”图像(Touch-through)

时间:2014-06-13 09:18:14

标签: android image overlay

我创建了一个service,它会将图像叠加在整个屏幕的顶部。

此部分是将图像叠加在整个屏幕顶部的代码:

@Override public void onCreate() {
    super.onCreate();

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    img = new ImageView(this);
    img.setImageResource(R.drawable.image); // Image is .png format

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.TYPE_PHONE,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);

        params.gravity = Gravity.CENTER | Gravity.CENTER;
        params.x = 0;
        params.y = 0;

        windowManager.addView(img, params);
}

然而,图像覆盖的任何空间都是不可触及的。我希望图像只是重叠,而不会影响屏幕上的任何其他组件,类似于这样做:

CPU usage overlay example

如何使图像下方的区域可触摸(触摸)?

修改
似乎图像的透明空间填充正方形,并覆盖屏幕(FYI)。 因此,我的最终目标是使图像触摸

我已尝试过几个SO用户推荐的popupWindow课程,但其目的并不能满足我的需求,也不起作用。

3 个答案:

答案 0 :(得分:1)

我发现WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY解决了这个问题。

答案 1 :(得分:0)

答案 2 :(得分:0)

尝试将param标志设置为:

WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | 
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH

我之前尝试过这个。最后两个将有助于将触摸事件发送到它背后的视图。