WindowManager X Y无法正常工作

时间:2018-07-07 16:21:37

标签: android overlay window-managers

我正在使用Android窗口管理器在用户手机上显示覆盖图像,但未将ImageView设置在正确的位置,它始终默认为屏幕的中心。我知道该位置是正确的,因为我使用了辅助功能服务来触摸该位置,并且在手机中启用了显示功能后,它正在触摸正确的位置。那么为什么imageview不能转到这个位置呢?

我可以在其中找到要放置图像的位置,并在应用程序中找到imageview:

Point centerPoint = getCenterPointOfView(myImageView);
int xImageLocation = centerPoint.x;
int yImageLocation = centerPoint.y;

然后我用这个打开新的叠加层:

//Add the view to the window.
    final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            LAYOUT_FLAG,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);

params.x = xImageLocation;
params.y = yImageLocation;

mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    if (mWindowManager != null) {
        mWindowManager.addView(mFloatingView, params);
    }else {
        return;
    }

1 个答案:

答案 0 :(得分:1)

您需要将gravity中的WindowManager.LayoutParams设置为Gravity.TOP | Gravity.LEFT

您已经默认将其设置为Gravity.CENTER,因此,x=0y=0的{​​{1}}应该正好在屏幕中间。