2

我有一张应该在某些区域可以点击的图像,比如该图像中的 26 个区域。最好的方法是什么?

在此处输入图像描述

我制作了一个大小相同的图像,图像中的每个可点击区域都有特定的颜色,背景为白色,所以当点击图像时,我可以获得该位置第二张图像的像素颜色,并知道点击了哪个区域。

问题是,我需要显示图片ScrollView,并调整图像大小以适应屏幕宽度。我知道我可以使用 计算单击的偏移量event.getRawY() + sv.getScrollY();,但是如何计算缩放因子?

实际上,由于两个图像的大小相同,我需要考虑缩放因子来计算单击位置,以在第二个图像中找到该像素的精确位置。

4

2 回答 2

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;
}
于 2013-07-01T08:57:03.323 回答
0

在您的情况下,它可能更容易使用WebView。您可以使用<map>and<area>来创建可点击区域并将回调发送到您的应用程序使用JavaScript

于 2012-12-16T14:36:47.767 回答