Android 手勢識別 (左右滑動)實現 頁面 切換,android手勢
</pre>要實現 頁面左右滑動的效果 就一定要由手勢辨識器, 就是這個對象 GestureDetector。<p></p><p>用法其實很簡單,這裡 寫一下 方便以後用到的時候好找。</p><p></p><p>步驟就是 這樣子 123.。</p><p> 1. 初始化手勢辨識器 </p><p> 2 註冊 手勢識別的 touch 事件 。</p><p></p><p>就是這麼簡單。僅僅兩步 就能實現識別手勢頁面切換。</p><p></p><p>因為 頁面切換 在每個 activity 中都有 所以 我們 把手勢辨識器 初始化 註冊 放在baseactivity裡面 能夠最有效地 利用我們的代碼。</p><p></p><pre code_snippet_id="673269" snippet_file_name="blog_20150523_2_2749063" name="code" class="java">package com.example.gesturedemo;import android.app.Activity;import android.os.Bundle;import android.view.GestureDetector;import android.view.View;import android.view.MotionEvent;public abstract class BaseActivity extends Activity {private GestureDetector mGestureDetector;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//1 初始化 手勢辨識器mGestureDetector = new GestureDetector(this,new GestureDetector.SimpleOnGestureListener(){@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {// e1: 第一次按下的位置 e2 當手離開螢幕 時的位置 velocityX 沿x 軸的速度 velocityY: 沿Y軸方向的速度//判斷豎直方向移動的大小if(Math.abs(e1.getRawY() - e2.getRawY())>100){//Toast.makeText(getApplicationContext(), "動作不合法", 0).show();return true;}if(Math.abs(velocityX)<150){//Toast.makeText(getApplicationContext(), "移動的太慢", 0).show();return true;}if((e1.getRawX() - e2.getRawX()) >200){// 表示 向右滑動表示下一頁//顯示下一頁next(null);return true;}if((e2.getRawX() - e1.getRawX()) >200){ //向左滑動 表示 上一頁//顯示上一頁pre(null);return true;//消費掉當前事件 不讓當前事件繼續向下傳遞}return super.onFling(e1, e2, velocityX, velocityY);}});}/** * 下一個頁面 * @param view */public abstract void next(View view);/** * 上一個頁面 * @param view */public abstract void pre(View view);//重寫activity的觸摸事件@Overridepublic boolean onTouchEvent(MotionEvent event) {//2.讓手勢辨識器生效mGestureDetector.onTouchEvent(event);return super.onTouchEvent(event);}}
然後 讓 每個具體的介面 去繼承 這個baseactivity 然後實現相應的 next 或者 pre 方法 即可。 為了 顯示效果 ,我們定義 幾個動畫 效果,左進右出,或者右進左出的。 具體 看 小demo 。
真的很容易(點我下載)