java - 如何检测Android中点击图像的区域

标签 java android

我在检测图像区域点击时遇到问题。

我有以下图片:

/image/fZmq0.jpg

/image/sb6Va.jpg

/image/YMwpy.jpg

触摸黄色区域时如何检测?

最佳答案

这很容易。您不需要将其切片。

你要做的是

  1. 点击事件。
  2. 获取您点击的位置。
  3. 获取位置的颜色。
  4. 检查颜色是否为黄色。
  5. 当它是黄色的时候,做你想做的事。

看来黄色不仅仅是一种黄色。因此,您可以做的是获得一系列黄色并比较所有可能的黄色。

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            float x = event.getX();
            float y = event.getY();
            if(getColourOfThePixel(x, y)){
                // DO SOMETHING
            }
    }
    return super.onTouchEvent(event);
}

public boolean getColourOfThePixel(float x, float y){
    int colorXY = mBitmap.getPixel(rangeX, rangeY);

    int r = Color.red(colorXY);
    int g = Color.green(colorXY);
    int b = Color.blue(colorXY);

    if (isYellow(r, g, b)) {
        return true;
    }
    return false;
}

public boolean isYellow(int r, int g, int b){
    // CHECK THE RANGE OF YELLOW COLOUR
}

为了确保这一点,你最好有+-x、y范围(比如一个正方形,也许+-20像素),因为有时只检查一个像素可能不起作用。因此,如果方 block 是黄色,那么您想要实现的事件就会成功。

希望这对您有所帮助。

关于java - 如何检测Android中点击图像的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50884780/

相关文章:

java - 如何对数据求和并将其传输到 Firebase?

java - 正在运行的应用程序上的 Swing JLabel 文本更改

java - android发布错误避免 fragment 中的non_default构造函数

java - 在 JFrame 中分层多个组件

java - 为什么堆排序不被认为是一种稳定的排序算法

android - 创建 fragment : constructor vs newInstance()

php - @Part List< MultipartBody.Part> 在 php 中

android - 从服务到 Activity 的 sendBroadcast() 处出现 NullPointerException

Android firebase 应用多个查询

java - 一旦我们在 JBoss AS 中配置了数据源,我们是否应该将 JDBCDriver 添加到我们的 Maven 项目中的依赖项中?