android - 如何计算ScrollView中ImageView的触摸位置,考虑缩放因素?

标签 android android-imageview android-scrollview

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

enter image description here

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

问题是,我需要在 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/

相关文章:

Android KenBurnEffect 问题

android - ViewPager 不显示内容

android - 设置 LinearLayout 可见并调用 getBottom

Android Picasso Image Viewer - 内存不足异常内存泄漏

android - 如何在 Android 中动态查找 scrollview 滚动位置?

Android ScrollView fillViewport 不工作

Android类图

android - android 7 (N OS) 上的 java.lang.SecurityException : Permission Denial: not allowed to send broadcast android. intent.action.NEW_OUTGOING_CALL

java - Android 的 Kotlin "expensive"中的枚举类是否与 Java 中的一样?

c# - 从项目中检索父项时出错