Java 触摸点XY与画布的XY不同?
我在画布上画了一个矩形,比如说插入点(5,5)。问题是当我点击它时,接触点是(60,85)。我知道触摸点取自整个屏幕,矩形点仅取自视图部分,但差异仍然很大 我试图将Java 触摸点XY与画布的XY不同?,java,android,android-layout,android-canvas,Java,Android,Android Layout,Android Canvas,我在画布上画了一个矩形,比如说插入点(5,5)。问题是当我点击它时,接触点是(60,85)。我知道触摸点取自整个屏幕,矩形点仅取自视图部分,但差异仍然很大 我试图将图像视图top()和left()从屏幕大小中减去,但仍然无法工作 我尝试的另一个解决方案是将ImageView的martix倒置,然后检查坐标,但结果仍然是一样的 以下是我的另一种方法,但仍然不起作用: @Override protected void onCreate(Bundle savedInstanceState) {
图像视图
top()
和left()
从屏幕大小中减去,但仍然无法工作
我尝试的另一个解决方案是将ImageView
的martix倒置,然后检查坐标,但结果仍然是一样的
以下是我的另一种方法,但仍然不起作用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView DrawingImage = (ImageView) this.findViewById(R.id.image2);
Bitmap bitmap2 = Bitmap.createBitmap((int) getWindowManager()
.getDefaultDisplay().getWidth(), (int) getWindowManager()
.getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap2);
DrawingImage.setImageBitmap(bitmap2);
// Draw Rectangle
Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.FILL);
Point insertRec=new Point(5, 110);
rec.set(insertRec.x, insertRec.y, insertRec.x+25, insertRec.y+20);
canvas.drawRect(rec,paint);
image = (ImageView) findViewById(R.id.image);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test);
image.setImageBitmap(bitmap);
imageX=image.getWidth();
imageY=image.getHeight();
}
@SuppressWarnings("unused")
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_DOWN) {
int x=(int) event.getRawX();
int y=(int) event.getRawY();
final int index = event.getActionIndex();
final float[] coords = new float[] { event.getX(index), event.getY(index) };
Matrix matrix = new Matrix();
image.getImageMatrix().invert(matrix);
matrix.postTranslate(image.getScrollX(), image.getScrollY());
matrix.mapPoints(coords);
int[] arr = new int[2];
image.getLocationInWindow(arr);
int xx=rec.centerX();
int yy=rec.centerY();
if(rec.contains(x - arr[0], y - arr[1])){
Toast.makeText(this, "You pressed a port!!!!!!!!!", Toast.LENGTH_LONG).show();
}
}
有人能帮我吗
提前谢谢你
最好的问候,Dimitar Georgiev为什么不在ImageView中添加一个onTouchListener?坐标将是正确的。我仍然是新的,我真的不知道怎么做。我必须使图片可点击?
DrawingImage.setOnTouchListener(新OnTouchListener(){@Override public boolean onTouch(View v,MotionEvent event){//TODO自动生成的方法存根返回false;})代码>不幸的是,它有相同的结果,或者我没有正确地实现它