Java 如何在ImageView中使用触摸获得实际图像坐标?

Java 如何在ImageView中使用触摸获得实际图像坐标?,java,android,image,events,touch,Java,Android,Image,Events,Touch,我想使用触摸功能在ImageView中获得图像的实际X和Y坐标 到目前为止,我只得到ImageView内的坐标,即800x600。我的图像通常会有更高的分辨率。我该怎么做 MainActivity.java private void addTouchListener(){ ImageView image = findViewById(R.id.result); image.setOnTouchListener(new View.OnTouchListener()

我想使用触摸功能在ImageView中获得图像的实际X和Y坐标

到目前为止,我只得到ImageView内的坐标,即800x600。我的图像通常会有更高的分辨率。我该怎么做

MainActivity.java

private void addTouchListener(){
        ImageView image = findViewById(R.id.result);

        image.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                float x = motionEvent.getX();
                float y = motionEvent.getY();

                String message = String.format("Coordinates: (%.1f, %.1f)", x, y);

                Log.d(MainActivity.DEBUGTAG, message);

                return false;
            }
        });

    }
activity_main.xml

 <ImageView
        android:id="@+id/result"
        android:layout_width="330dp"
        android:layout_height="250dp"
        android:layout_marginTop="150dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:scaleType="fitXY"
        android:adjustViewBounds="true"
        app:srcCompat="@drawable/leaf" 
/>

您需要在图像视图宽度和实际图像宽度之间进行计算。高度也一样。你会发现这个答案很有帮助

Asume图像视图就像是最大图像中的摄像机位置xv、yv。 XinImage=xtouch+xv YinImage=ytouch+yv