当前位置:   article > 正文

【Android】点击图片获取点击位置在图片中的位置_获取点击图片相对于左上角的位置

获取点击图片相对于左上角的位置

需求

在一个页面中,有一张图片展示,这个页面是一个可滑动页面,但是当点击到这个图片里面的位置的时候,我们需要获取到这个点击位置在图片的哪个位置,即获取到点击点与图片当前的相对位置。

分析

我们在屏幕上可以通过 MotionEvent 获取到点击屏幕时的当前的X和Y的位置,但是这个位置是整个屏幕的位置,是以屏幕左上角为原点坐标的相对位置,但我们需要的是点击位置相对于图片的相对位置,因为页面可以滑动,所以当页面滑动之后,我们再点击相对于图片上的位置跟原来相同的点,但是根据屏幕获取到X和Y的位置也会变,所以我们需要获取的X和Y应该是相对于图片的左上角的原点的相对位置。

举个例子

当图片在页面的下部显示的时候,我们点击图片的中心位置,此时通过MotionEvent 获取的坐标是(X1,Y1),但是当图片滑动到页面的上部的时候,还是点击图片的中心位置,此时通过 MotionEvent 获得的坐标是(X2,Y2),两次我们点击的都是图片的中心位置,但是这个(X1,Y1)绝对不等于(X2,Y2),那需要怎么解决这个问题呢?需要我们更改这个坐标原点,因为我们这两次获取的值的坐标原点都是相对屏幕来说的,我们需要把这个坐标原点修改为相对于这张图片。

解决方案
imageView.post {
    val location = IntArray(2)
    imageView.getLocationOnScreen(location)
    
    //图片左上角此时在屏幕中的X位置
    val screenX = location[0]
    //图片左上角此时在屏幕中的Y位置
    val screenY = location[1]
  
  //接下来只要使用 MotionEvent 减去这个值就好了
  newX = event.x - location[0]
  newY = event.y - location[1]
  //这个时候获取到的newX和newY的值就是此时点击图片的相对于图片左上角的
  //位置的值,如果我们两次点击图片的同一位置,即使图片在页面中显示的位置
  //不在同一个位置(滑动了),但是这两次获得到的值是相同的
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/689441
推荐阅读
相关标签
  

闽ICP备14008679号