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);    }}

调用 .java

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. ScreenUtil
  3. 2020.05.11-Python中调用zip包中的Python脚本
  4. Android调用本地WebService
  5. Android(安卓)动态横竖屏切换
  6. [Android]调用系统相册获取图片
  7. Android与Javascript交互示例(二)
  8. Android4.4电源管理——电源锁
  9. 五分钟学会之AsyncTask

随机推荐

  1. android studio 在线更新android sdk,遇到
  2. Android PULL解析XML
  3. android gps开发
  4. 点击事件
  5. Android(安卓)Instrumentation基础使用
  6. SHA-1 fingerprint of keystore certific
  7. android GestureDetector应用
  8. Android原生(Native)C开发
  9. Android之Activity的四种启动模式
  10. Android 实现动画方式