zoukankan      html  css  js  c++  java
  • 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()一样的道理
  • 相关阅读:
    获取本机ip地址以及主机名称
    java导出excel
    plsql连接远程数据库
    Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.解决办法
    导出项目文件到本地指定目录(zip)
    java集合对字符串或对象去重
    js文字转语音播放
    java实现的Excel批量导入
    字符串分割的实现
    所生成项目的处理器架构“MSIL”与 “x86”不匹配
  • 原文地址:https://www.cnblogs.com/wangying222/p/5498753.html
Copyright © 2011-2022 走看看