- public class Res extends Activity implements View.OnTouchListener {
- Button btn = null;
- int x = 0;
- int y = 0;
- int rawx = 0;
- int rawy = 0;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btn = (Button) findViewById(R.id.button);
- btn.setOnTouchListener(this);
- }
- public boolean onTouch(View view, MotionEvent event) {
- int eventaction = event.getAction();
- switch (eventaction) {
- case MotionEvent.ACTION_DOWN:
- break;
- case MotionEvent.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;
- case MotionEvent.ACTION_UP:
- break;
- }
- return false;
- }
- }
當你觸到按鈕時,x,y是相對於該按鈕左上點(控件本身)的相對位置。
而rawx,rawy始終是相對於屏幕的位置。
getRowX:觸摸點相對於屏幕的座標
getX: 觸摸點相對於按鈕的座標
getTop: 按鈕左上角相對於父view(LinerLayout)的y座標
getLeft: 按鈕左上角相對於父view(LinerLayout)的x座標
可以想象 getRight()等同於下面的計算:getLeft()+getWidth()。