android 上下左右手势判断 根据别人的改的
2014-07-15 16:56
423 查看
</pre><pre name="code" class="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+")"; } } }
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); } }
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(); } }
相关文章推荐
- android 上下左右手势判断 根据别人的改的
- android 上下左右手势判断 根据别人的改的
- android 上下左右手势判断 根据别人的改的
- android 上下左右手势判断 根据别人的改的
- android 上下左右手势判断 根据别人的改的
- android 判断左右滑动,上下滑动的GestureDetector简单手势检测
- android左右上下手势判断
- android 上下左右手势判断
- android 上下左右手势判断
- android 简单的 左右上下手势 判断
- android 上下左右手势判断
- Unity3D脚本:快速判断手势是上下左右
- Android上下左右手势滑动事件处理
- Android手势识别——上下左右滑动、屏幕上下左右中区域处理
- GestureDetector和onTouchEvent判断手势方向(上下左右)
- symbian 基本触摸动作的使用(判断上下,左右等手势)
- iphone上下左右手势判断代码
- jquery 判断手势滑动方向(上下左右)
- Android开发ScrollView上下左右滑动事件冲突整理一(根据事件)
- Android手势识别——上下左右滑动、屏幕上下左右中区域处理