gpt4 book ai didi

java - OnTouchListener 坐标不正确

转载 作者:太空宇宙 更新时间:2023-11-04 12:54:22 25 4
gpt4 key购买 nike

我有一个 OnTouchListener,但是当我实际测试我的程序并触摸屏幕时,显示的颜色不是应有的颜色。我使用颜色 block 进行了测试,它可以工作,但是坐标仍然关闭,如果您在一种颜色上触摸得太远,它会显示另一种颜色。我相信这是因为产生的坐标是与整个屏幕而不是 ImageView 进行比较 - 我希望从中选择它。我如何使 OnTouchListener 仅用于 ImageView 而不是整个屏幕?谢谢。

final Bitmap bitmap2 = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {


Matrix inverse = new Matrix();
v.getMatrix().invert(inverse);
float[] touchPoint = new float[] {event.getX(), event.getY()};
inverse.mapPoints(touchPoint);
int x = Integer.valueOf((int)touchPoint[0]);
int y = Integer.valueOf((int)touchPoint[1]);


// int x = (int) event.getX();
// int y = (int) event.getY();
int pixel = bitmap2.getPixel(x, y);


int red = Color.red(pixel);
int blue = Color.blue(pixel);
int green = Color.green(pixel);

Bitmap bitmap = BitmapFactory.decodeFile(output.getAbsolutePath());
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.rgb(red,green,blue));


Bitmap workingBitmap = Bitmap.createBitmap(bitmap);
Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);


Canvas canvas = new Canvas(mutableBitmap);
canvas.drawRect(50, 50, 500, 250, paint);

ImageView imageView = (ImageView)findViewById(R.id.Image_view);
imageView.setAdjustViewBounds(true);
imageView.setImageBitmap(mutableBitmap);


return true;
}

});

}


}

最佳答案

I believe this is because the the coordinates produced are in comparison to the whole screen

是的,需要做一些简单的推导才能获取imageView上的触摸坐标:

int[] imgCoords = new int[2];
imageView.getLocationOnScreen(imgCoords);

获取触摸的X,Y并从中取出imageView坐标:

int wholeX = (int) event.getX();
int wholeY = (int) event.getY();

int imageX = wholeX - imgCoords[0];
int imageY = wholeY - imgCoords[1];

关于java - OnTouchListener 坐标不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35536489/

25 4 0
文章推荐: java - 使用java进行sqlite查询
文章推荐: linux - 无法从命令发送电子邮件
文章推荐: c++ - 如何在 C++11 中有效地选择标准库容器?
文章推荐: html - 隐藏
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com