我在我的应用中实现了ViewPager screenlide。我希望用户能够点击打开对话框或网站的部分图像。当我使用iOS时,我做了一个解决方法,在那里我找到了我计划用户拥有的每个设备上的图像坐标。这显然不是最好的方式,但当时我还没有直接计划Android版本。现在,情况发生了变化,我开始认为这种实现非常繁琐且不实用,特别是有那么多Android设备。在不使用坐标和硬编码位置的情况下,能够点击图像的这些部分的最佳方法是什么?任何帮助表示赞赏!谢谢
编辑:这里有一个图片示例(请原谅我可怕的电脑绘图技巧)...黑框代表Android设备屏幕,红框代表整个图像,绿色,黄色和蓝色框是我希望能够点击的部分。如果不清楚,请告诉我。答案 0 :(得分:1)
我知道自从这个问题出现以来已经过了2到3周,但我刚刚找到了问题的答案。如果您知道原始图像的大小(我的是1024x748),那么您可以找到与ImageView和原始图像大小相关的计算近似坐标。
例如,平板电脑屏幕为2048x1440。
一些伪码:
// Touch Coordinates
float eventX = event.getX();
float eventY = event.getY();
// Get ImageView's size
// ImageView v
float viewW = v.getWidth();
float viewH = v.getHeight();
// Ratio:
// originalW and originalH are the image's original size
float ratioW = viewW/originalW;
float ratioH = viewH/originalH;
// Get "true" coordinates
float x = eventX/ratioW;
float y = eventY/ratioH;
上面的代码将为您提供与ImageView
触摸坐标相关的基本图像坐标。此外,ImageView
比例类型必须居中(至少对于我的代码,您的代码可能会有所不同吗?)。
我希望这可以帮助其他人搜索堆栈溢出!这可能不是最强的做事方式,但对于那些有数千个Android设备点击的人来说,这是一个简单的解决方法!