赞
踩
在一个页面中,有一张图片展示,这个页面是一个可滑动页面,但是当点击到这个图片里面的位置的时候,我们需要获取到这个点击位置在图片的哪个位置,即获取到点击点与图片当前的相对位置。
我们在屏幕上可以通过 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的值就是此时点击图片的相对于图片左上角的 //位置的值,如果我们两次点击图片的同一位置,即使图片在页面中显示的位置 //不在同一个位置(滑动了),但是这两次获得到的值是相同的 }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。