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()一样的道理
  • 相关阅读:
    codeforces C. Cows and Sequence 解题报告
    codeforces A. Point on Spiral 解题报告
    codeforces C. New Year Ratings Change 解题报告
    codeforces A. Fox and Box Accumulation 解题报告
    codeforces B. Multitasking 解题报告
    git命令使用
    shell简单使用
    知识束缚
    php 调用系统命令
    数据传输方式(前端与后台 ,后台与后台)
  • 原文地址:https://www.cnblogs.com/wangying222/p/5498753.html
Copyright © 2011-2022 走看看