• android MotionEvent中getX()和getRawX()的区别


     1     public class Res extends Activity implements View.OnTouchListener {    
     2         
     3         Button btn = null;    
     4         int x = 0;    
     5         int y = 0;    
     6         int rawx = 0;    
     7         int rawy = 0;    
     8         
     9             
    10         @Override    
    11         public void onCreate(Bundle savedInstanceState) {    
    12             super.onCreate(savedInstanceState);    
    13             setContentView(R.layout.main);    
    14             btn = (Button) findViewById(R.id.button);    
    15             btn.setOnTouchListener(this);    
    16         }    
    17         
    18         public boolean onTouch(View view, MotionEvent event) {    
    19             int eventaction = event.getAction();    
    20             switch (eventaction) {    
    21             case MotionEvent.ACTION_DOWN:    
    22                 break;    
    23             case MotionEvent.ACTION_MOVE:    
    24                 x = (int) event.getX();    
    25                 y = (int) event.getY();    
    26                 rawx = (int) event.getRawX();    
    27                 rawy = (int) event.getRawY();    
    28                 Log.d("DEBUG", "getX=" + x + "getY=" + y + "n" + "getRawX=" + rawx    
    29                         + "getRawY=" + rawy + "n");    
    30                 break;    
    31         
    32             case MotionEvent.ACTION_UP:    
    33         
    34                 break;    
    35             }    
    36             return false;    
    37         }    
    38     }    
    39 
    40 
    41 
    42 
    43 结论:
    44 当你触到按钮时,x,y是相对于该按钮左上点(控件本身)的相对位置。
    45 而rawx,rawy始终是相对于屏幕的位置。
    46 
    47 
    48 
    49 
    50 可知:
    51 
    52 getRowX:触摸点相对于屏幕的坐标
    53 getX: 触摸点相对于按钮的坐标
    54 getTop: 按钮左上角相对于父view(LinerLayout)的y坐标
    55 getLeft: 按钮左上角相对于父view(LinerLayout)的x坐标
    56 
    57 可以想象 getRight()等同于下面的计算:getLeft()+getWidth()。
    58 
    59 getX()是表示Widget相对于自身左上角的x坐标,而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一样的道理
  • 相关阅读:
    1.python全栈之路:python基础
    21、指定元素置后——数组
    20、泰勒展开式
    19、显示表达式的运算形式
    1、模拟蚂蚁借呗—利息计算
    05、C语言——循环结构
    04、C语言——选择结构
    03、C语言——顺序结构
    02、C语言——C语言组成与数据
    07、C语言——函数
  • 原文地址:https://www.cnblogs.com/wangying222/p/5498753.html
Copyright © 2020-2023  润新知