源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

android中处理各种触摸事件的方法浅谈

  • 时间:2020-12-14 07:38 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:android中处理各种触摸事件的方法浅谈
Android里有两个类 android.view.GestureDetector android.view.GestureDetector.SimpleOnGestureListener (另外android.widget.Gallery好像是更牛x的OnGestureListener ) 1) 新建一个类继承SimpleOnGestureListener,HahaGestureDetectorListener 可以实现以下event事件。 boolean onDoubleTap(MotionEvent e) 解释:双击的第二下Touch down时触发 boolean onDoubleTapEvent(MotionEvent e) 解释:双击的第二下Touch down和up都会触发,可用e.getAction()区分。 boolean onDown(MotionEvent e) 解释:Touch down时触发 boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 解释:Touch了滑动一点距离后,up时触发。 void onLongPress(MotionEvent e) 解释:Touch了不移动一直Touch down时触发 boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) 解释:Touch了滑动时触发。 void onShowPress(MotionEvent e) 解释:Touch了还没有滑动时触发 (与onDown,onLongPress比较 onDown只要Touch down一定立刻触发。 而Touchdown后过一会没有滑动先触发onShowPress再是onLongPress。 所以Touchdown后一直不滑动,onDown->onShowPress->onLongPress这个顺序触发。 ) boolean onSingleTapConfirmed(MotionEvent e) boolean onSingleTapUp(MotionEvent e) 解释:上面这两个函数都是在touch down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touchup时触发。 点击一下非常快的(不滑动)Touchup: onDown->onSingleTapUp->onSingleTapConfirmed 点击一下稍微慢点的(不滑动)Touchup: onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed 2)在view的新建一个GestureDetector的对象。 构造函数里 gestureDetector = new GestureDetector(new HahaGestureDetectorListener()); 然后在View的onTouchEvent里以下这样用,就可以在刚才1)弄的事件里写自己的代码了。
[u]复制代码[/u] 代码如下:
@Override public boolean onTouchEvent(MotionEvent event) { gestureDetector.onTouchEvent(event); } mTouchListener = new OnTouchListener() {  @Override  public boolean onTouch(View v, MotionEvent event) {  // TODO Auto-generated method stub  float x = event.getXPrecision()*event.getX()+event.getX();  float y = event.getYPrecision()*event.getY()+event.getY();  switch (event.getAction()) {  case MotionEvent.ACTION_DOWN:  break;  case MotionEvent.ACTION_MOVE:  mTouchTimes++;  if (mTouchTimes > TOUCH_TIMES) { // 根据方向计算角度  if (mCurrentOrientation==DeviceOrientation.Landscape) {  mAngle = Math.toDegrees(Math.atan2(y - 480 / 2, x))+90;  } else {  mAngle = -Math.toDegrees(Math.atan2(y - 480 / 2, 320-x))+90;  }  Log.w("angle", "mangle:"+mAngle);  }  break;  case MotionEvent.ACTION_UP:  if (mTouchTimes > TOUCH_TIMES) {  } else {  }  mTouchTimes = 0;  break;  default:  break;  }  return true;  }  }; mView.setOnTouchListener(mTouchListener);
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部