以下代码用于Activity之间的划动切换,大概实现原理就是判断手指的划动速度和划动方向以确定向哪个Activity跳转,switchTo***Activity()为Activity的跳转方法01private VelocityTracker velocityTracker;//用于得到手势在屏幕上的滑动速度02private static final int VELOCI…
以下代码用于Activity之间的划动切换,大概实现原理就是判断手指的划动速度和划动方向以确定向哪个Activity跳转,switchTo***Activity()为Activity的跳转方法
01 |
private VelocityTracker velocityTracker;//用于得到手势在屏幕上的滑动速度 |
02 |
private static final int VELOCITY = 600; |
04 |
public boolean onTouchEvent(MotionEvent event) { |
05 |
String localClassName = getLocalClassName();//当前所在类名 |
06 |
LogUtil.log(TAG, "class Name:"+localClassName); |
07 |
int action = event.getAction(); |
08 |
//float x = event.getX(); |
09 |
//float y = event.getY(); |
12 |
case MotionEvent.ACTION_DOWN: |
13 |
if(velocityTracker == null){ |
14 |
velocityTracker = VelocityTracker.obtain();//取得手势在屏幕上的滑动速度 |
15 |
velocityTracker.addMovement(event); |
21 |
case MotionEvent.ACTION_MOVE: |
22 |
//int deltaX = (int) (lastMotionX - x); |
23 |
if(velocityTracker != null){ |
24 |
velocityTracker.addMovement(event); |
29 |
case MotionEvent.ACTION_UP: |
32 |
if(velocityTracker != null){ |
33 |
velocityTracker.addMovement(event); |
34 |
velocityTracker.computeCurrentVelocity(1000);//计算每秒滑动多少个像素 |
35 |
velocityX = (int) velocityTracker.getXVelocity();//最后计算检索X速度 |
38 |
if(velocityX > VELOCITY ){ |
39 |
if("ui.MainActivity".equals(localClassName)){ |
40 |
switchToTvLiveActivity(); |
41 |
}else if("ui.LocalMediaActivity".equals(localClassName)){ |
42 |
switchToMainActivity(); |
43 |
}else if("ui.NetMediaActivity".equals(localClassName)){ |
44 |
switchToLocalMediaActivity(); |
45 |
}else if("ui.TvLiveActivity".equals(localClassName)){ |
46 |
switchToNetMediaActivity(); |
48 |
} else if(velocityX < -VELOCITY ){ |
49 |
if("ui.MainActivity".equals(localClassName)){ |
50 |
switchToLocalMediaActivity(); |
51 |
}else if("ui.LocalMediaActivity".equals(localClassName)){ |
52 |
switchToNetMediaActivity(); |
53 |
}else if("ui.NetMediaActivity".equals(localClassName)){ |
54 |
switchToTvLiveActivity(); |
55 |
}else if("ui.TvLiveActivity".equals(localClassName)){ |
56 |
switchToMainActivity(); |
60 |
if(velocityTracker != null){ |
61 |
velocityTracker.recycle();//回收 |
62 |
velocityTracker = null; |