以下代码用于Activity之间的划动切换,大概实现原理就是判断手指的划动速度和划动方向以确定向哪个Activity跳转,switchTo***Activity()为Activity的跳转方法
01
private VelocityTracker velocityTracker;//用于得到手势在屏幕上的滑动速度
02
private static final int VELOCITY = 600;
03
@Override
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();
10
11
switch (action) {
12
case MotionEvent.ACTION_DOWN:
13
if(velocityTracker == null){
14
velocityTracker = VelocityTracker.obtain();//取得手势在屏幕上的滑动速度
15
velocityTracker.addMovement(event);
16
}
17
//lastMotionX = x;
18
19
break;
20
21
case MotionEvent.ACTION_MOVE:
22
//int deltaX = (int) (lastMotionX - x);
23
if(velocityTracker != null){
24
velocityTracker.addMovement(event);
25
}
26
//lastMotionX = x;
27
break;
28
29
case MotionEvent.ACTION_UP:
30
31
int velocityX = 0;
32
if(velocityTracker != null){
33
velocityTracker.addMovement(event);
34
velocityTracker.computeCurrentVelocity(1000);//计算每秒滑动多少个像素
35
velocityX = (int) velocityTracker.getXVelocity();//最后计算检索X速度
36
}
37
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();
47
}
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();
57
}
58
}
59
60
if(velocityTracker != null){
61
velocityTracker.recycle();//回收
62
velocityTracker = null;
63
}
64
65
break;
66
}
67
68
return true;
69
}