android 上下左右手势判断
来源:互联网 发布:淘宝口红哪家是正品 编辑:程序博客网 时间:2024/05/17 08:24
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.view.GestureDetectorandroid.view.GestureDetector.SimpleOnGestureListenerpublic class AutoFile extends Activity implements OnTouchListener{ private GestureDetector gd1; private MyGesture mg1; private ViewFlipper vf1 =null; mg1 = new MyGesture(); gd1 = new GestureDetector(AutoFile.this,mg1); tv2.setOnTouchListener(this); tv2.setLongClickable(true); public class MyGesture implements GestureDetector.OnGestureListener { @Override public boolean onDown(MotionEvent arg0) { //下滑时触发 // TODO Auto-generated method stub bt6.setText("onDown"); return false; } @Override public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2, //上滑时触发 float arg3) { // TODO Auto-generated method stub bt6.setText("onFling"); return true; } @Override public void onLongPress(MotionEvent arg0) { //长时间按住时触发 // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2, //滑动时触发 float arg3) { // TODO Auto-generated method stub bt6.setText("onScroll"); return false; } @Override public void onShowPress(MotionEvent arg0) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent arg0) { // TODO Auto-generated method stub return false; } }//myges class @Override public boolean onTouch(View arg0, MotionEvent arg1) { // TODO Auto-generated method stub return gd1.onTouchEvent(arg1); //return true; }
0 0
- android 上下左右手势判断
- android 上下左右手势判断
- android 上下左右手势判断 根据别人的改的
- android 上下左右手势判断 根据别人的改的
- android 上下左右手势判断 根据别人的改的
- iphone上下左右手势判断代码
- iphone上下左右手势判断代码
- iphone上下左右手势判断代码
- iphone上下左右手势判断代码
- Unity3D脚本:快速判断手势是上下左右
- 上下左右手势
- Android上下左右手势滑动事件处理
- GestureDetector和onTouchEvent判断手势方向(上下左右)
- Android手势判断
- Android OnGestureListener用法 识别用户手势 上下左右滑动
- Android Fragment上下左右滑动onFling的手势识别
- Android手势识别——上下左右滑动、屏幕上下左右中区域处理
- Android手势识别——上下左右滑动、屏幕上下左右中区域处理
- oracle使用bulk collect insert实现大数据快速迁移
- Image Matting(抠图)技术介绍:序言
- 颜色名称及色样表(HTML版)
- 【数据库优化】面向程序员的数据库访问性能优化法则
- 基础加强-泛型
- android 上下左右手势判断
- linux上安装jdk
- Qt图形视图框架(一)
- CentOS 6.4 安装mysql 5.5 rpm 的libaio问题的解决
- 维基oi 线段覆盖 3027 序列dp
- Restlet - 使用Restlet自身组件Application/Component的开发实例
- Windows Phone 主题资源
- input的背景会随着文字移动,在ie6下面的解决办法
- linux 下 进程和线程的区别