activity 或 fragment 实现接口 View.OnTouchListener
如:public class MyFragment extends Fragment implements View.OnTouchListener{
重写实现方法
@Override
public boolean onTouch(View v, MotionEvent event) {
//继承了Activity的onTouchEvent方法,直接监听点击事件
if(event.getAction() == MotionEvent.ACTION_DOWN) {
//当手指按下的时候
x1 = event.getX();
y1 = event.getY();
}
if(event.getAction() == MotionEvent.ACTION_MOVE) {
//当手指移动的时候
x2 = event.getX();
y2 = event.getY();
if(y1 - y2 > 50) {
Toast.makeText(MyServiceTestActivity.this, "向上滑", Toast.LENGTH_SHORT).show();
} else if(y2 - y1 > 50) {
Toast.makeText(MyServiceTestActivity.this, "向下滑", Toast.LENGTH_SHORT).show();
} else if(x1 - x2 > 50) {
Toast.makeText(MyServiceTestActivity.this, "向左滑", Toast.LENGTH_SHORT).show();
} else if(x2 - x1 > 50) {
Toast.makeText(MyServiceTestActivity.this, "向右滑", Toast.LENGTH_SHORT).show();
}
}
if (event.getAction()==MotionEvent.ACTION_UP){
Log.i("Lgq","sssssssll离开了lllll==");
// updview(nowpersion);
}
return super.onTouchEvent(event);
// return false;
}
view设置监听
slv = (ScrollListenerView)findViewById(R.id.slv);
slv.setOnTouchListener(this);
分发二:重写方法
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction()==MotionEvent.ACTION_UP){
LgqLogutil.e("动啦啦啦啦");
}
return super.dispatchTouchEvent(ev);
}
滑动速度:放在MotionEvent.ACTION_MOVE里
VelocityTracker mVelocityTracker = VelocityTracker.obtain(); mVelocityTracker.addMovement(ev); mVelocityTracker.computeCurrentVelocity(1000); float xVelocity = mVelocityTracker.getXVelocity();//速度 xVelocity = Math.abs(xVelocity);//去绝对值。向左滑,值为负数
获取最多速度
float sudu;
if (sudu < xVelocity) { sudu = xVelocity; }
缩放手势获取
double nLenStart = 0; @Override public boolean onTouchEvent(MotionEvent event) { int nCnt = event.getPointerCount(); if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_DOWN && 2 == nCnt)//<span style="color:#ff0000;">2表示两个手指</span> { for (int i = 0; i < nCnt; i++) { float x = event.getX(i); float y = event.getY(i); Point pt = new Point((int) x, (int) y); } int xlen = Math.abs((int) event.getX(0) - (int) event.getX(1)); int ylen = Math.abs((int) event.getY(0) - (int) event.getY(1)); nLenStart = Math.sqrt((double) xlen * xlen + (double) ylen * ylen); } else if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_UP && 2 == nCnt) { for (int i = 0; i < nCnt; i++) { float x = event.getX(i); float y = event.getY(i); Point pt = new Point((int) x, (int) y); } int xlen = Math.abs((int) event.getX(0) - (int) event.getX(1)); int ylen = Math.abs((int) event.getY(0) - (int) event.getY(1)); double nLenEnd = Math.sqrt((double) xlen * xlen + (double) ylen * ylen); if (nLenEnd > nLenStart)//通过两个手指开始距离和结束距离,来判断放大缩小 { LgqLogPlus.e("放大"); setZoom(); } else { LgqLogPlus.e("缩小"); setZoomjian(); } } return super.onTouchEvent(event); }