12-24 Android根据手势滑动屏幕
参考:黑马手机卫士。
http://930307.blog.51cto.com/7950022/1345760
点击下一页:上一页移出动画:(0,y)---(-屏幕宽度,y);
下一页移入动画:(屏幕宽度,y)--(0,y);
点击上一页:上一页移入动画:(-屏幕宽度,y)--(0,屏幕宽度);
下一页移出动画:(0,y)--(屏幕宽度,y);
动画文件:
进:左→右
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="300"
android:fromXDelta="-100%p"
android:toXDelta="0"/>
出:左→右
android:duration="300"
android:fromXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="100%p"/>
进:右→左
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="300"
android:fromXDelta="100%p"
android:toXDelta="0"/>
出:右→左
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="300"
android:fromXDelta="0"
android:toXDelta="-100%p"/>
package com.zrblog.mobilesafe74.activity;
import android.app.Activity;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public abstract class BaseActivity extends Activity {
private GestureDetector mGestureDetector;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//2,创建手势管理的对象,用作管理在onTouchEvent(event)传递过来的手势动作
mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
//监听手势的移动
if(e1.getX()-e2.getX()>0){
//调用子类的下一页方法,抽象方法
//在第一个界面上的时候,跳转到第二个界面
//在第二个界面上的时候,跳转到第三个界面
//.......
showNextPage();
}
if(e1.getX()-e2.getX()<0){
//调用子类的上一页方法
//在第一个界面上的时候,无响应,空实现
//在第二个界面上的时候,跳转到第1个界面
//.......
showPrePage();
}
return super.onFling(e1, e2, velocityX, velocityY);
}
});
}
/* (non-Javadoc)
* @see android.app.Activity#onTouchEvent(android.view.MotionEvent)
*/
@Override
public boolean onTouchEvent(MotionEvent event){
//通过手势处理类,接收多种类型的事件,用作处理。
mGestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
//上一页的抽象方法,由子类决定具体跳转到哪个界面
protected abstract void showPrePage();
//下一页的抽象方法,由子类决定具体跳转转到那个界面
protected abstract void showNextPage();
/**
* 点击上一页按钮的时候,根据子类的showNextPage方法做相应的跳转。
*/
public void showPre(View view) {
showPrePage();
}
/**
* 点击下一页的时候,根据子类的showNextPage方法做响应的跳转
*/
public void showNext(View view) {
showNextPage();
}
}
// 开启平移动画
overridePendingTransition(R.anim.translate_next_in,R.anim.translate_next_out);