这篇博客记录一下Android界面滑动切换的几种方式。
1、监听MotionEvent
通过监听MotionEvent来进行滑动切换的原理,实际上是比较MotionEvent初始的坐标及移动后的坐标,
来判断用户是否进行了滑动的操作。
我们看看对应实现中最核心的代码:
public class FirstActivity extends AppCompatActivity {
..............
@Override
public boolean onTouchEvent(MotionEvent event) {
...........
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
//每次手指落下时,均记录初始横坐标
mOrigin = event.getX();
break;
case MotionEvent.ACTION_MOVE:
//手指移动时,记录移动后的横坐标
float move = event.getX();
.................
//当移动距离大于门限后,就可以跳转了
//这里实现左滑切换,因此要求orgin的横坐标 > move的横坐标
if ((mOrigin - move > MIN_MOVE_INSTANCE)
//此外,还可以判断移动速度是否大于门限
//由于手指移动时,会多次触发ACTION_MOVE,因此引入一个标志位,避免多次启动
&& (speed > SPEED_MIN) && !mAlreadyJump){
Log.d("ZJTest", "go to second activity");
startActivity(new Intent(this, SecondActivity.class));
.....................
mAlreadyJump = true;
}
break;
case MotionEvent.ACTION_UP:
..................
//手指离开屏幕后,重置mAlreadyJump
mAlreadyJump = false;
break;
default:
return super.onTouchEvent(event);
}
return true;
}
}
如果需要计算滑动速度,可以使用VelocityTracker。
其使用方法类似于:
...................
@Override
public boolean onTouchEvent(MotionEvent event) {
//让VelocityTracker监控event
add