在看了启舰博主的博客之后,发现手势识别器中的实现的onFling是个非常好玩的应用,可以实现屏幕的左右滑动:
简单代码如下:
1,因为左右滑动屏幕较多,特写一个基类
public abstract class BaseSetupActivity extends Activity {
private GestureDetector mDetector;//手势识别器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDetector=new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){
//手指在屏幕上面滑翔事件的回调
// @params1 手指第一次放到屏幕上的事件
// @params2 手指离开屏幕上的事件
// @params3 velocityX X轴的一个分量
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(e1.getRawX()-e2.getRawX()<100) {
showPre();
overridePendingTransition(R.anim.translate_pre_in,R.anim.translate_pre_out);
return true;
}
if(e2.getRawX()-e1.getRawX()<100) {
showNext();
overridePendingTransition(R.anim.translate_next_in,R.anim.translate_next_out);
return true;
}
return super.onFling(e1, e2, velocityX, velocityY);
}
});
initView();
initData();
initEvent();
}
protected abstract void initEvent();
//数据初始化
protected abstract void initData();
//手指只要触摸到屏幕,这个事件就会被激活
@Override
public boolean onTouchEvent(MotionEvent event) {
mDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
protected abstract void initView();
//这是一个抽象方法,在父类里面只需要声明,子类具体实现
public abstract void showNext();
public abstract void showPre();
}
2,子类实现代码如下:
public class Setup2Activity extends BaseSetupActivity{
@Override
protected void initEvent() {
//TODO
}
@Override
protected void initData() {
//TODO
}
@Override
protected void initView() {
//TODO
}
@Override
public void showNext() {
Intent intent=new Intent(this,Setup3Activity.class);
startActivity(intent);
}
@Override
public void showPre() {
Intent intent=new Intent(this,Setup1Activity.class);
startActivity(intent);
}
}
3,overridePendingTransition(),所填充的二个参数动画示意代码如下:
向右滑时,滑进的动画:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="100%"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0" >
</translate>
向右滑,滑出的动画:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="-100%p"
android:toYDelta="0">
</translate>
向左滑,滑进的动画:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="-100%p"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0">
</translate>
向左滑,滑出的动画:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100%p"
android:toYDelta="0">
</translate>
以后就完成了,滑动的步骤
但须解释下:overridePendingTransition的应用:
1,Activity的动画切换,指的是从一个activity跳转到另外一个activity的动画,要实现其跳转就必须实现其overridePendingTransition()函数
2,overridePendingTransition()函数的二个参数指的是:退出时消失的动画和进入时所呈现的动画
3,其使用必需紧挨着startActivity()或者finish()函数之后调用
4,在ActivityGroup等的嵌入式Activity中时,需使用this.getParent().overridePendingTransition()函数