android 上下左右手势判断
2015-12-30 12:01
405 查看
GestureUtils.java
BuileGestureExt.java
调用 .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
相关文章推荐
- android中通过HTML设置文字颜色和字号
- Android API 19 及以上版本AlarmManager setRepeating 不准或只执行一次的解决方案
- Android 去掉状态栏 去掉标题栏 沉浸式状态栏 状态栏重叠 布局重叠 SystemBarTintManager systembartint-1.0.4
- Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found解决办法
- 提高效率的 Android Studio 技巧汇总
- Android5.0关机充电动画位置
- Android-Content Provide
- Android中软解码和硬解码的优先级
- Android弹出窗口中ListView显示内容
- 在WebStorm/Android Studio中GIT修改用户名密码
- Android制作粒子爆炸特效
- android使用官方v4裁剪圆角和圆角矩形
- Android studio导入项目时常见问题
- 使用Gradle管理Debug/Release版本的Key
- android通知栏Notification点击,取消,清除响应事件
- android 粘贴 复制
- android 应用调用QQ交流,类似客服
- Android Studio 快捷键(汇总)
- Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换
- android 启动页面的设置