android - 检测图像(位图)上色点的触摸

标签 android android-layout

我需要检测下图红点上的触摸,所以在触摸到红点后我可以采取行动。 我想我需要检测触摸坐标,并检查它是否与红点匹配。但是我怎样才能检测到红点位置呢?是否可以? 注意:如果有帮助,我可以选择图像格式,但可能我们需要使用位图。

我需要以编程方式获取点位置。我收到图片,我需要处理点上的触摸事件。但是我可以收到不同点位置的不同图像

感谢所有想法!

enter image description here

最佳答案

我看到的最简单的解决方案是:

1- 获取 imageView 大小,因为它可能会根据设备屏幕大小和/或分辨率发生变化。

int IVwidth = imageView.getWidth();
int IVHeight = imageView.getHeight();

2-获取位图宽度/高度,然后找到位图宽度和 imageView 宽度之间的数学关系(比率), 简单地:

float HeightRatio = (float)bm.getHeight() / (float)iv.getHeight();
float WidthRatio = (float)bm.getWidth() / (float)iv.getWidth();

假设我们有一个 (800*600) 大小的位图和一个 (400*300) 大小的 imageView 这将为您提供 (2.0) 的高度和宽度比率。

3- 现在,当事件 ImageViewTouched 被引发时,您可以很容易地获得触摸坐标,因为事件会将它们传递给您。请注意,捕获触摸事件非常容易,只需将其添加到 View 即可实现;

    ImageView iv = (ImageView) findViewById(R.id.imageView1);
    iv.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {

            if(arg1.getAction() == MotionEvent.ACTION_UP)
            {
                int x = arg1.getX();
                int y = arg1.getY();
                int XonImage = x * WidthRatio;
                int YonImage = Y * HeightRatio;
                if(bm.getPixel(XonImage, YonImage) == Color.RED)
                {
                 // BINGOOOOOOO, do your magic here
                }
            }

            return false;
        }
    });

如需更多信息,请毫不犹豫地询问。 干杯

关于android - 检测图像(位图)上色点的触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13074979/

相关文章:

java - 将 Facebook 图片上传到 imageview

android - DocumentContract 上的 ContentResolver 查询列出所有文件,忽略选择

android - 在android中使用基于密码的加密

android - 为我没有源代码的应用程序禁用 WAL?

android - 在布局中放置 3 个图像

java - 工具栏重叠内容

android - Binder 线程、进度条和 OutOfResourcesExceptions

android - 如何通过 Scanner 向 TableLayout 添加数据?

Android Volley Https SSL 自签名和 Google Maps API

android - 适用于Android的Google云端硬盘SDK,将文件上传到Google云端硬盘时出现错误400错误请求