一、获取控件坐标
以Button为例
public class MainActivity extends Activity implements OnTouchListener {
private TextView textView;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView)findViewById(R.id.textview);
btn = (Button)findViewById(R.id.buttton);
btn.setOnTouchListener(this); // 为按钮设置触摸监听,需要OnTouchListener接口
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getX(); // getX是获取相对当前控件的坐标
float y = event.getY(); // getRawX是获取相对屏幕左上角的坐标
switch (event.getAction()) {
// ACTION_DOWN 按下
// ACTION_MOVE 在屏幕上移动
// ACTION_UP 离开屏幕
case MotionEvent.ACTION_DOWN: textView.setText("x=" + x + " y=" + y); break;
case MotionEvent.ACTION_MOVE: break;
case MotionEvent.ACTION_UP: break;
}
return false;
}
}
二、获取屏幕任意坐标
public class MainActivity extends Activity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView)findViewById(R.id.textview);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: break;
case MotionEvent.ACTION_MOVE: textView.setText("x=" + x + " y=" + y); break; // 移动才会显示坐标
case MotionEvent.ACTION_UP: break;
}
return true;
}
}
参考:
http://blog.youkuaiyun.com/ithomer/article/details/8757240?ticket=ST-23371-t25neYxcVA0RxS3UG60a-passport.youkuaiyun.com
http://hi.baidu.com/prince_hyai/item/4c2d8cff6d00ae7b3d198bd3