package com.roiding.sample;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.Button;publicclass Touch extends Activity {/** Called when the activity is first created. */@Overridepublicvoid onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);final Button btn = (Button) findViewById(R.id.btn_hello);btn.setOnTouchListener(new OnTouchListener() {int[] temp = newint[] { 0, 0 };publicboolean onTouch(View v, MotionEvent event) {int eventaction = event.getAction();Log.i("&&&", "onTouchEvent:" + eventaction);int x = (int) event.getRawX();int y = (int) event.getRawY();switch (eventaction) {case MotionEvent.ACTION_DOWN: // touch down so check if thetemp[0] = (int) event.getX();temp = y - v.getTop();break;case MotionEvent.ACTION_MOVE: // touch drag with the ballv.layout(x - temp[0], y - temp, x + v.getWidth()- temp[0], y - temp + v.getHeight());v.postInvalidate();break;case MotionEvent.ACTION_UP:break;}returnfalse;}});}}
使得Buttton不能拖动出屏幕范围,代码如下:
public class DraftTest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DisplayMetrics dm=getResources().getDisplayMetrics(); final int screenW