1、创建位移动画
Activity切换动画可以在startActivity或finish方法之后执行延时的位移方法overridePendingTransition()。
res/anim目录下创建xml
<translate xmlns:android:"http://schemas.android.com/apk/res/android"
<span style="white-space:pre"> </span>android:fromXDelta="0"
<span style="white-space:pre"> </span>android:toXDelta="-100%p"// 移出一个屏幕
<span style="white-space:pre"> </span>android:fromYDelta="0"
<span style="white-space:pre"> </span>android:toYDelta="0"
<span style="white-space:pre"> </span>android:duration="300"// 持续时间
<span style="white-space:pre"> </span>android:repeatCount="0"// 不重复播放
/>
部分手机为了节电会默认关闭切换动画效果,这就会导致设置的动画无效
2、利用手势识别器
通过onTouchEvent方法传递事件给手势识别器@Override
public boolean onTouchEvent(MotionEvent ev){
gd.onTouchEvent(ev);
return super.onTouchEvent(ev);
}
实现手势识别器的简单方法,在滑动监听中进行判断切换Activity并且执行位移动画
// 手势识别
GestureDetector gd = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener(){
// 快速滑动
// e1 手指首次触摸
// e2 手指松开
// velocityX 水平方向速度 像素/秒
// velocityY 垂直方向速度
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
if(Math.abs(velocityX) < 200){
return true;// true 消费事件
}
if((e2.getRawX() - e1.getRawX()) > 200){ 左 ---> 右 上个页面
}else if((e1.getRawX() - e2.getRawX()) > 200){ 右 ---> 左 下个页面
// 调用切换Activity
// overridePendingTransition()方法
}
}
});
Activity的切换样式还有很多,后面会一一补充