public class Touch extends Activity { /** Called when the activity is first created. */ Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); btn = (Button) findViewById(R.id.btn_hello); 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; } });
setClickable(true)
/** Called when the activity is first created. */
Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.btn_hello);
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;
}
});
}
}
这是源码,manifest不加scrollview可以自由滑动,加了不能自由滑动,不管setFocusable(true)
setClickable(true)设在哪里都不行
......
} /**
* 在Activity中添加ScrollView实现滚动activity的效果后,activity的滑动效果却无法生效了
* 原因是因为activity没有处理滑动效果,重写以下方法即可解决。
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
detector.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
......
}