http://www.cnblogs.com/meieiem/archive/2011/09/16/2178313.html

GestureUtils.java

复制代码
package com.gesture;import android.content.Context;import android.util.DisplayMetrics;import android.view.WindowManager;public class GestureUtils {         //获取屏幕的大小    public static Screen getScreenPix(Context context) {        DisplayMetrics dm = new DisplayMetrics();        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);        windowManager.getDefaultDisplay().getMetrics(dm);        return new Screen(dm.widthPixels,dm.heightPixels);    }        public static class Screen{                public int widthPixels;        public int heightPixels;                public Screen(){                    }                public Screen(int widthPixels,int heightPixels){            this.widthPixels=widthPixels;            this.heightPixels=heightPixels;        }        @Override        public String toString() {            return "("+widthPixels+","+heightPixels+")";        }            }    }
复制代码

  BuileGestureExt.java

复制代码
package com.gesture;import com.gesture.GestureUtils.Screen;import android.content.Context;import android.view.GestureDetector;import android.view.MotionEvent;public class  BuileGestureExt  {    public static final int GESTURE_UP=0;    public static final int GESTURE_DOWN=1;    public static final int GESTURE_LEFT=2;    public static final int GESTURE_RIGHT=3;    private OnGestureResult onGestureResult;    private Context mContext;    public BuileGestureExt(Context c,OnGestureResult onGestureResult) {        this.mContext=c;        this.onGestureResult=onGestureResult;        screen = GestureUtils.getScreenPix(c);    }    public GestureDetector Buile()    {        return new GestureDetector(mContext, onGestureListener);    }        private Screen screen;    private GestureDetector.OnGestureListener onGestureListener = new GestureDetector.SimpleOnGestureListener(){        @Override        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,                float velocityY) {            float x = e2.getX() - e1.getX();            float y = e2.getY() - e1.getY();            //限制必须得划过屏幕的1/4才能算划过            float x_limit = screen.widthPixels / 4;            float y_limit = screen.heightPixels / 4;            float x_abs = Math.abs(x);            float y_abs = Math.abs(y);            if(x_abs >= y_abs){                //gesture left or right                if(x > x_limit || x < -x_limit){                    if(x>0){                        //right                        doResult(GESTURE_RIGHT);                     }else if(x<=0){                        //left                        doResult(GESTURE_LEFT);                     }                }            }else{                //gesture down or up                if(y > y_limit || y < -y_limit){                    if(y>0){                        //down                        doResult(GESTURE_DOWN);                     }else if(y<=0){                        //up                        doResult(GESTURE_UP);                     }                }            }            return true;        }            };    public void doResult(int result)    {        if(onGestureResult!=null)        {            onGestureResult.onGestureResult(result);        }    }        public interface OnGestureResult    {        public void onGestureResult(int direction);    }}
复制代码

  demo

package com.gesture;   import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; import android.widget.Toast;   public class GesturetestActivity extends Activity {      /** Called when the activity is first created. */        private GestureDetector gestureDetector;       @Override      public void onCreate(Bundle savedInstanceState) {          super .onCreate(savedInstanceState);          setContentView(R.layout.main);          gestureDetector = new BuileGestureExt( this , new BuileGestureExt.OnGestureResult() {              @Override              public void onGestureResult( int direction) {                  show(Integer.toString(direction));              }          }          ).Buile();      }        @Override      public boolean onTouchEvent(MotionEvent event) {          return gestureDetector.onTouchEvent(event);      }      private void show(String value){          Toast.makeText( this , value, Toast.LENGTH_SHORT).show();      }         }

  


更多相关文章

  1. android获取屏幕的宽度和高度
  2. Android的jni下c与java数据互传测试代码
  3. android设置图片变化的四种效果代码
  4. Android Audio代码分析14 - testPlaybackHeadPositionIncrease
  5. android屏幕监听,手机是否处于锁屏状态,在锁屏之上弹出Toast.makeT
  6. Android kill app Process 结束进程代码
  7. Android 工具代码
  8. Android 代码片段

随机推荐

  1. android之四大组件之一-Activity(三)
  2. Android模拟器及编译环境安装新手入门-3
  3. Jni/C for android 技术总揽
  4. 英特尔® Android* USB 驱动程序安装说明
  5. android studio创建模拟器报错解决 emula
  6. 【Android】高效ListView
  7. linux学习笔记《一.烧写篇_android》
  8. Android各种资源详解
  9. repo使用
  10. 用Android NDK r6编译boost 1.47