編輯:關於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(); }
Android Studio NDK開發 以前接觸過NDK的開發,是在Eclipse環境下開發的。今天嘗試了下用Android Studio來配置,結果真是處處都是坑,現
OLTP應用之MySQL架構選型在我們下定決心將企業核心應用從企業級數據庫遷移到開源數據庫產品、使用本地磁盤代替共享存儲之前。我覺得我們必須要面對並回答以下幾個問題之後才
我的android學習經歷7,android學習經歷7android簽名後報錯的問題 Duplicate id @+id/imageView, already defin
Android開發之自定義的ListView(UITableViewController),自定義uitableviewAndroid開發中的ListView, 顧名方法