无法获得imageView的顶部和底部

时间:2018-06-18 15:47:07

标签: android size screen

我有一个简单的绘图应用程序,我在后面有一个字母的图片,填充ImageView设置为屏幕高度的45%。我有一个JSON文件,可以存储信件中的点。我试图在信件的图片上显示这些点。

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

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

enter image description here

这实际上是这样的:

enter image description here

我通过画布渲染绘图,我将点绘制到。我很确定问题在于我如何获得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()的相对返回有更好的方法吗?帮助

1 个答案:

答案 0 :(得分:1)

它将为您提供相对于屏幕的位置

Rect rect = new Rect();

view.getGlobalVisibleRect(rect);

float top = rect.top;

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