Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> [android] 手機衛士手勢滑動切換屏幕,android手勢

[android] 手機衛士手勢滑動切換屏幕,android手勢

編輯:關於android開發

[android] 手機衛士手勢滑動切換屏幕,android手勢


定義手勢識別器

獲取手勢識別器GestureDetector對象,通過new GestureDetector(context,listener),參數:上下文,監聽器

匿名內部類實現簡單手勢監聽器SimpleOnGestureListener接口,重寫onFling()滑動方法

傳遞進來四個參數:

MotionEvent e1 ,MotionEvent e2,velocityX,velocityY

e1是第一個點,e2是第二個點,x軸的速度,y軸的速度

當第一個點減去第二個點大於200時,我們認為它是從右往左劃,下一頁

當第二個點減去第一個點大於200時,我們認為它是從左往右劃,上一頁

調用MotionEvent 對象的getRawX()可以獲取到X軸的坐標

 

使用手勢識別器識別手勢

重寫activity的onTouchEvent()方法,獲取到手勢在界面上的滑動事件

傳遞進來一個參數MotionEvent對象

調用GestureDetector對象的onTouchEvent(event)方法,參數:MotionEvent對象,把獲取到的事件傳遞進去

 

屏蔽斜著劃

兩個點的y軸坐標之間的距離大於100時,我們認為它是斜著劃的

調用MotionEvent 對象的getRawY()可以獲取到Y軸的坐標,兩個點的差值取絕對值Math.abs(),判斷大於100 就返回true,不往下進行

 

如果找不到SimpleOnGestureListener類,使用new GestureDetector.SimpleOnGestureListener()

 

抽取公用方法到基類抽象類 BaseSecActivity中,自己的activity只需要繼承這個基類,實現上下頁的抽象方法,就能實現左右滑動效果

BaseSecGuideActivity.java

 

package com.qingguow.mobilesafe;

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;

public abstract class BaseSecGuideActivity extends Activity {
    // 定義手勢識別器
    protected GestureDetector gestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        // 實例化
        gestureDetector = new GestureDetector(this,
                new GestureDetector.SimpleOnGestureListener() {
                    @Override
                    public boolean onFling(MotionEvent e1, MotionEvent e2,
                            float velocityX, float velocityY) {
                        //屏蔽斜著劃
                        if(Math.abs(e1.getRawY()-e2.getRawY())>100){
                            return true;
                        }
                        if ((e1.getRawX() - e2.getRawX()) > 100) {
                            System.out.println("從右往左劃,下一頁");
                            showNext();
                            return true;
                        }
                        if ((e2.getRawX() - e1.getRawX()) > 100) {
                            System.out.println("從左往右劃,上一頁");
                            showPre();
                            return true;
                        }
                        return super.onFling(e1, e2, velocityX, velocityY);
                    }
                });
    }
    public abstract void showPre();
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        gestureDetector.onTouchEvent(event);
        return super.onTouchEvent(event);
    }
    public abstract void showNext();
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved