我的图像应该可以在某些区域点击,比如该图像中的26个区域。 最好的方法是什么?
我制作了一个大小相同的图像,图像中的每个可点击区域都有特定的颜色,带有白色背景,因此当点击图像时,我可以获得该位置的第二个图像的像素颜色并实现哪个区域是点击。
问题是,我需要在ScrollView
中显示图片,并调整图片大小以适应屏幕宽度。我知道我可以使用event.getRawY() + sv.getScrollY();
计算点击的偏移量,但是如何计算缩放系数?
实际上由于两个图像大小相同,我需要考虑缩放因子来计算点击位置,以找到第二个图像中该像素的精确位置。
答案 0 :(得分:2)
我认为这个剪辑会帮助你。
@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;
}
答案 1 :(得分:0)
在您的情况下,使用WebView
可能会更容易一些。您可以使用<map>
和<area>
创建可点击区域,并使用JavaScript