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 获取手机设备信息
  3. android 常用代码
  4. Android与Js交互获取返回值
  5. Android(安卓)音量 获取 设置
  6. android:configChanges
  7. android 中 系统日期时间的获取
  8. android获取屏幕的宽度和高度
  9. Android获取不到ID

随机推荐

  1. eclipse Missing Constraint: Bundle-Req
  2. android ftp案例分析
  3. android 动画
  4. Android(安卓)Studio 错误 Duplicate fil
  5. android退出activity提示再按一次返回键
  6. android 创建菜单列表及其事件
  7. Android验证码倒计时功能实现
  8. android中Activity实现再按一次退出
  9. android进度条的样式
  10. 苹果为“制裁”亚马逊,禁止Kindle应用内购