我有一个简单的绘图应用程序,我在后面有一个字母的图片,填充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()的相对返回有更好的方法吗?帮助
答案 0 :(得分:1)
它将为您提供相对于屏幕的位置
Rect rect = new Rect();
view.getGlobalVisibleRect(rect);
float top = rect.top;
//there is also rect.bottom, rect.width, rect.height etc.