我有一个图像,该图像的某些区域应该是可点击的,例如该图像中的 26 个区域。 最好的方法是什么?
我制作了一张相同大小的图像,图像中每个可点击的区域都有特定的颜色,背景为白色,所以当点击图像时,我可以获取第二张图像在该位置的像素颜色并知道哪个区域是点击。
问题是,我需要在 ScrollView
中显示图片,并且调整图像大小以适合屏幕宽度。我知道我可以使用 event.getRawY() + sv.getScrollY();
计算点击的偏移量,但是如何计算缩放系数?
实际上,由于两个图像的大小相同,我需要考虑缩放系数来计算单击位置,以找到第二个图像中该像素的精确位置。
最佳答案
我认为这个 fragment 对你有帮助。
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getId() == R.id.imageView1 || v.getId() == R.id.image_scrollview) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = (int) event.getX();
startY = (int) event.getY();
break;
case MotionEvent.ACTION_UP:
int cordinate_Y = (int) ((event.getY() + v.getScrollY()) / diffH);
int cordinate_X = (int) ((event.getX() + v.getScrollX()) / diffW);
if ((Math.abs((int) event.getX() - startX) > 10)
|| (Math.abs((int) event.getY() - startY) > 10)) {
break;
}
int pixelColor = bitmap.getPixel(cordinate_X, cordinate_Y);
if (pixelColor != -1) {
showDetails(texts[map.get(pixelColor)],
images[map.get(pixelColor)],
titles[map.get(pixelColor)]);
}
break;
}
}
return false;
}
关于android - 如何计算ScrollView中ImageView的触摸位置,考虑缩放因素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13902032/