android - 无法获取 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() 的相对回报?帮助。
解决方案
它会给你相对于屏幕的位置
Rect rect = new Rect();
view.getGlobalVisibleRect(rect);
float top = rect.top;
//there is also rect.bottom, rect.width, rect.height etc.
推荐阅读
- regex - 正则表达式:如何选择后面的字符
没有选择那个 ? - ios - SwiftUI 列表不显示图像
- javascript - 替代componentWillMount注册axios拦截器?反应
- codeigniter - Codeigniter 更新:更新数据时可能出错,但不显示错误,更不用说更新数据了
- tensorflow - 急切执行函数的输入不能是带有变分自动编码器的 Keras 符号张量
- c++ - 使用 char 类型将十进制转换为字符串和字符串转换为十进制
- python - 从字符串中提取数据
- c# - 带有加入,组和总和的Linq不起作用
- mongodb - MongoDB查找匹配数组中的两个元素
- unity3d - 简单的cutout,即mask,基于普通标准shader的shader和一个mask