手指劃動切換Activity
以下代碼用于Activity之間的劃動切換,大概實現原理就是判斷手指的劃動速度和劃動方向以確定向哪個Activity跳轉,switchTo***Activity()為Activity的跳轉方法
private VelocityTracker velocityTracker;//用于得到手勢在屏幕上的滑動速度 private static final int VELOCITY = 600;
@Override public boolean onTouchEvent(MotionEvent event) { String localClassName = getLocalClassName();//當前所在類名 LogUtil.log(TAG, "class Name:"+localClassName); int action = event.getAction(); //float x = event.getX(); //float y = event.getY();switch (action) { case MotionEvent.ACTION_DOWN: if(velocityTracker == null){ velocityTracker = VelocityTracker.obtain();//取得手勢在屏幕上的滑動速度 velocityTracker.addMovement(event); } //lastMotionX = x; break; case MotionEvent.ACTION_MOVE: //int deltaX = (int) (lastMotionX - x); if(velocityTracker != null){ velocityTracker.addMovement(event); } //lastMotionX = x; break; case MotionEvent.ACTION_UP: int velocityX = 0; if(velocityTracker != null){ velocityTracker.addMovement(event); velocityTracker.computeCurrentVelocity(1000);//計算每秒滑動多少個像素 velocityX = (int) velocityTracker.getXVelocity();//最后計算檢索X速度 } if(velocityX > VELOCITY ){ if("ui.MainActivity".equals(localClassName)){ switchToTvLiveActivity(); }else if("ui.LocalMediaActivity".equals(localClassName)){ switchToMainActivity(); }else if("ui.NetMediaActivity".equals(localClassName)){ switchToLocalMediaActivity(); }else if("ui.TvLiveActivity".equals(localClassName)){ switchToNetMediaActivity(); } } else if(velocityX < -VELOCITY ){ if("ui.MainActivity".equals(localClassName)){ switchToLocalMediaActivity(); }else if("ui.LocalMediaActivity".equals(localClassName)){ switchToNetMediaActivity(); }else if("ui.NetMediaActivity".equals(localClassName)){ switchToTvLiveActivity(); }else if("ui.TvLiveActivity".equals(localClassName)){ switchToMainActivity(); } } if(velocityTracker != null){ velocityTracker.recycle();//回收 velocityTracker = null; } break; } return true;
}</pre>
本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!