android studio_Android MotionEvent中getX()和getRawX()的区别实例详解

更新时间:2021-07-30    来源:php常用代码    手机版     字体:

【www.bbyears.com--php常用代码】

Android MotionEvent中getX()和getRawX()的区别实例详解

实例代码:

publicclassResextendsActivityimplementsView.OnTouchListener {      Button btn =null;   intx =0;   inty =0;   intrawx =0;   intrawy =0;           @Override   publicvoidonCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     btn = (Button) findViewById(R.id.button);     btn.setOnTouchListener(this);   }      publicbooleanonTouch(View view, MotionEvent event) {     inteventaction = event.getAction();     switch(eventaction) {     caseMotionEvent.ACTION_DOWN:       break;     caseMotionEvent.ACTION_MOVE:       x = (int) event.getX();       y = (int) event.getY();       rawx = (int) event.getRawX();       rawy = (int) event.getRawY();       Log.d("DEBUG","getX="+ x +"getY="+ y +"n"+"getRawX="+ rawx           +"getRawY="+ rawy +"n");       break;        caseMotionEvent.ACTION_UP:          break;     }     returnfalse;   } } 

结论:

当你触到按钮时,x,y是相对于该按钮左上点(控件本身)的相对位置。

而rawx,rawy始终是相对于屏幕的位置。

可知:

    getRowX:触摸点相对于屏幕的坐标

    getX: 触摸点相对于按钮的坐标

    getTop: 按钮左上角相对于父view(LinerLayout)的y坐标

    getLeft: 按钮左上角相对于父view(LinerLayout)的x坐标

    可以想象 getRight()等同于下面的计算:getLeft()+getWidth()。

    getX()是表示Widget相对于自身左上角的x坐标,而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一样的道理

    本文来源:http://www.bbyears.com/jiaocheng/132849.html