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);