这个可能帮到你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;public class MainActivity extends Activity { /** Called when the activity is first created. */ private Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn = (Button) findViewById(R.id.btnHello); btn.setOnTouchListener(new OnTouchListener() { int[] temp = new int[] { 0, 0 }; public boolean 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 the temp[0] = (int) event.getX(); temp[1] = y - v.getTop(); break; case MotionEvent.ACTION_MOVE: // touch drag with the ball v.layout(x - temp[0], y - temp[1], x + v.getWidth() - temp[0], y - temp[1] + v.getHeight()); v.postInvalidate(); break; case MotionEvent.ACTION_UP: break; } return false; } }); } }
在我机上运行成功了,你可以参考下需要说明的是 The type AbsoluteLayout.LayoutParams is deprecated Button bnt = (Button)findViewById(R.id.button_moves); bnt.setOnClickListener(new OnClickListener() {
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;public class MainActivity extends Activity {
/** Called when the activity is first created. */
private Button btn; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.btnHello);
btn.setOnTouchListener(new OnTouchListener() {
int[] temp = new int[] { 0, 0 }; public boolean 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 the
temp[0] = (int) event.getX();
temp[1] = y - v.getTop();
break; case MotionEvent.ACTION_MOVE: // touch drag with the ball
v.layout(x - temp[0], y - temp[1], x + v.getWidth()
- temp[0], y - temp[1] + v.getHeight());
v.postInvalidate();
break; case MotionEvent.ACTION_UP:
break;
}
return false;
}
}); }
}
bnt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) { //重新设置按钮位置
Button bnts = (Button)findViewById(R.id.button_moves); AbsoluteLayout.LayoutParams vg = (AbsoluteLayout.LayoutParams)bnts.getLayoutParams();
vg.x = getRandom();
vg.y = getRandom();
bnts.setLayoutParams(vg);
}
}); /**
* 得到一个随机数
*
* @return
* @author BK_DeathKninght
* @date 2011-6-30
*/
private int getRandom() {
int Temp = (int)Math.round(Math.random()*124+4);
return Temp;
}