Android ImageView坐标点击

标签 android android-viewpager coordinates android-imageview

我有一个正在我的应用程序中实现的 ViewPager 屏幕幻灯片。我希望用户能够单击图像的某些部分以打开对话框或网站。当我使用 iOS 时,我做了一个变通方法,在我计划用户拥有的每台设备上找到图像的坐标。这显然不是最好的方式,但当时我并没有直接计划 Android 版本。现在,情况发生了变化,我开始认为这种实现会非常乏味且不实用,尤其是在有这么多 Android 设备的情况下。在不使用坐标和硬编码位置的情况下能够单击图像的这些部分的最佳方法是什么?任何帮助表示赞赏!谢谢

编辑:这是一个图片示例(请原谅我可怕的计算机绘图技能)...黑框代表 android 设备屏幕,红框代表整个图像,绿色、黄色和蓝色框是我的部分希望能够点击。如果不清楚,请告诉我。

最佳答案

我知道自从看到这个问题以来已经有 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 设备点击内容的人来说,这是一种简单的解决方法!

关于Android ImageView坐标点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32078195/

相关文章:

Android gradle单元测试找不到库

android - 当它到达 android 中的屏幕顶部时,是否可以滚动并粘贴为标题?

java - ViewPager 不显示自定义 View

android - ActionBar 与 ViewPager - 单击部分可见的选项卡会使应用程序崩溃

c# - 为近似相似的数字生成相同的哈希码

java - 如何从android中的时间选择器获取小时和分钟

android - android应用程序中的闹钟声音

android - 如何在 android 选项卡布局中提供溢出分页?

java - 每 x 圈更改二维数组的值?

javascript - 获取屏幕坐标的css