查找ImageView相对于其显示的图像的位置

6
所以这里有一个问题。我正在ImageView中显示一张大图,并且需要找到它相对于图片的位置。就像这样:
╔═══════════════════════════════╗
║ Image                         ║ 
║──>╔═════════════╗             ║
║   ║ ImageView   ║             ║
║   ║             ║             ║
║   ╚═════════════╝             ║
║                               ║
║                               ║
╚═══════════════════════════════╝

需要帮助吗?

更新: 由于出现了一些误解,我将详细解释问题。

我有一张图片。实际上是一个位图。我用 CENTER 缩放类型在 ImageView 中显示它。假设图像比 ImageView 大,因此仅显示部分图像。我想找到这部分图像相对于整个图像的位置。

2个回答

2

使用子视图的getTop()和getLeft()方法解决问题了吗?如果视图不是父子关系,但具有相同的父级,则对每个视图进行处理并计算。


图像不是视图。它是一个实际的位图,比ImageView要大。 - F0RR
但是你的位图确实存在某种布局中对吧?如果有一个帧布局,其中这两者都存在,那么在图像视图上使用getLeft()减去用于图像的padding,应该可以得到x坐标对吧? - Alex Volovoy
1
好的,我想解决这个问题:https://dev59.com/2UvSa4cB1Zd3GeqPcSoh 如果我能找出或计算出ImageView的相对位置,那么我就可以使用scrollBy/scrollTo实现滚动。否则,我无法确定图像是否超出了ImageView的边界。 - F0RR
1
啊..是的,我不确定该如何处理。我会尝试在图像视图上去掉比例类型。通过createScaledBitmap(src, dstWidth, dstHeight, filter)或createBitmap(params)自己预先缩放位图 - 这样你就知道相对于原始位置在哪里了。不确定这是否是正确或有效的方法。 - Alex Volovoy
1
这并不像巫术一样复杂 - 如果目标是了解相关的x值。如果您通过指定源中的起始x,y自行缩放位图 - 就完成了任务。如果您要求其他人(操作系统)为您执行此操作,则必须尝试确定这些值 - 因此我建议从一开始就掌控局面。 - Alex Volovoy
显示剩余5条评论

0

图像渲染从图像的左上角开始,因此即使图像比图像视图大,您仍将始终看到左上角。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接