首页 > 解决方案 > 无法获取 imageView 的顶部和底部

问题描述

我有一个简单的绘图应用程序,我在背面有一张字母的图片,将 ImageView 设置为屏幕高度的 45%。我有一个 JSON 文件,它沿字母存储点。我试图在信的图片上显示这些点。

这些点的坐标范围在 y = -440 和 y = 200 之间。为了正确显示这些点,我需要包含字母的 imageView 的顶部和高度来将这些点映射到屏幕上。我必须在运行时将这些点映射到正确的点,因为不同的屏幕尺寸需要不同的比例才能正确显示这些点。

这就是它应该的样子(这是带有特定于手机的校正因子):

在此处输入图像描述

这实际上是这样的:

在此处输入图像描述

我通过绘制点的画布渲染绘图。我很确定问题在于我如何获得 ImageView 的顶部。

这是我尝试过的:

    //1
    float y = view.getTop();
    //2
    final int[] screenPos = new int[2];
    iv.getLocationOnScreen(screenPos);
    float y = screenPos[1];
    //3
    float offset = iv.getTop() - screenPos[1];
    float y = iv.getTop() + offset;

有什么我应该做而我没有做的事情吗?有没有更好的方法来获取 getTop() 的相对回报?帮助。

标签: androidsizescreen

解决方案


它会给你相对于屏幕的位置

Rect rect = new Rect();

view.getGlobalVisibleRect(rect);

float top = rect.top;

//there is also rect.bottom, rect.width, rect.height etc.

推荐阅读