2014-06-13 82 views
5

我已经创建了一个service它将覆盖整个屏幕上的图像。Android创建“鬼”图像(触摸)

这部分是将在整个屏幕的顶部覆盖有图像的代码:

@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)。 所以我的最终目标是,使图像触摸通过

我已经尝试过popupWindow类,由几个SO用户推荐,但其目的不符合我的需求,并且不起作用。

+0

你可以在ImageView背景下使用像#99000000这样的背景颜色的RelativeLayout,对Alpha颜色使用重要部分“#99”或者使用透明颜色,并将onClick事件添加到RelativeLayout中 – Aspicas

+0

如果在onTouchListener中添加'return false'的imageview,所以触摸事件可以传递给相对布局呢? –

+0

在onTouchListener上设置'return false'不起作用。看起来图像引起了问题:空白。有没有办法删除空白? – jyoon

回答

1

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

0

尝试帕拉姆标志设置为:

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

我已经成功尝试过这一点。最后两个将有助于将触摸事件发送到背后的视图。

+0

对不起,这没有奏效。 – jyoon