Android 如何使用imageview.setontouchlistener上的每个设备屏幕获取x和y位置?

Android 如何使用imageview.setontouchlistener上的每个设备屏幕获取x和y位置?,android,imageview,Android,Imageview,此位置仅适用于480x800屏幕设备。但不要正确使用1024x600设备。我怎样才能修好它 sinif = (ImageView) findViewById(R.id.imageSinif); sinif.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int

此位置仅适用于480x800屏幕设备。但不要正确使用1024x600设备。我怎样才能修好它

       sinif = (ImageView) findViewById(R.id.imageSinif);
    sinif.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int x = (int) event.getX();
            int y = (int) event.getY();
            Toast.makeText(getApplicationContext(),"x= " +x + " y= " +y, Toast.LENGTH_SHORT).show();

            if ((610 < event.getX() && event.getX() < 703)
                    && (11 < event.getY() && event.getY() < 128)
                    && deger == 0) {
                // i want run any method in there. for example:
                myAnimation.setVisibility(View.INVISIBLE);
                sinif.setEnabled(false);
                sinif.setVisibility(View.INVISIBLE);
                sorulist.setVisibility(View.VISIBLE);
                text1.setOnClickListener(dinle);
                text2.setOnClickListener(dinle);
            }
            return false;
        }
    });
sinif=(ImageView)findviewbyd(R.id.imageSinif);
sinif.setOnTouchListener(新的OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
int x=(int)event.getX();
int y=(int)event.getY();
Toast.makeText(getApplicationContext(),“x=“+x+”y=“+y,Toast.LENGTH_SHORT).show();
if((610
问题是您正在将触摸屏X和Y的值与硬编码值(例如601703,11128)进行比较。但由于android规范的像素值取决于设备,所以您需要将其转换为取决于设备的大小

if ((convertSizeToDeviceDependent(610) < event.getX() && event.getX() < convertSizeToDeviceDependent(703))
                && (convertSizeToDeviceDependent(11) < event.getY() && event.getY() < convertSizeToDeviceDependent(128)) && deger == 0) {
            // i want run any method in there. for example:
            myAnimation.setVisibility(View.INVISIBLE);
            sinif.setEnabled(false);
            sinif.setVisibility(View.INVISIBLE);
            sorulist.setVisibility(View.VISIBLE);
            text1.setOnClickListener(dinle);
            text2.setOnClickListener(dinle);
        }

如果不执行任何操作,&&event.get进入if,我将删除if中除deger==0之外的所有部分,除非您希望将按钮限制为仅在小区域内设置使用getImageMatrix()和invert()将其转换为mapPoints(),我如何使用?你有例子吗@pskink只需获取矩阵,将其反转()并在反转矩阵上调用mapPoints(),它不适用于高像素设备。我想160是dpi。哪些设备具有160dpi,它可以工作@比拉杰Zalavadia@bkm使用我在评论中写的映射点
public int convertSizeToDeviceDependent(int value) {
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        return ((dm.densityDpi * value) / 160);
    }