android 上下左右手势判断 根据别人的改的

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

    }

    

}

android 上下左右手势判断 根据别人的改的

时间: 2024-11-06 11:14:13

android 上下左右手势判断 根据别人的改的的相关文章

(转)iphone上下左右手势判断代码

- (void)viewDidLoad { UISwipeGestureRecognizer *recognizer; recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:selfaction:@selector(handleSwipeFrom:)]; [recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)]; [[self view] addGes

完美解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况

完美解决解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况 第一步:找到com.zxing.camera包下的CameraConfigurationManager.java文件中的void initFromCameraParameters(Camera camera)方法 第二步:在 Log.d(TAG, "Screen resolution: " + screenResolution);后加上如下的代码 Point screenResoluti

Qt for android触摸手势事件QGestureEvent

在触摸设备上可以使用Qt的手势事件 要激活手势事件,需要执行以下操作: 第一步,为QWidget控件注册手势事件 QList<Qt::GestureType> gestures; gestures << Qt::PanGesture; gestures << Qt::PinchGesture; gestures << Qt::SwipeGesture; gestures << Qt::TapGesture; gestures << Q

Android 网络连接判断与处理

Android网络连接判断与处理 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 复制代码 1 public boolean isNetworkConnected(Context context) { 2     if (context != null) { 3    

Android的手势操作识别

摘要 首先,在Android系统中,每一次手势交互都会依照以下顺序执行. 1. 接触接触屏一刹那,触发一个MotionEvent事件. 2. 该事件被OnTouchListener监听,在其onTouch()方法里获得该MotionEvent对象. 3. 通过GestureDetector(手势识别器)转发次MotionEvent对象 首先,在Android系统中,每一次手势交互都会依照以下顺序执行. 1. 接触接触屏一刹那,触发一个MotionEvent事件. 2. 该事件被OnTouchLi

Android跟踪球-手势移动图片-自定义控件(附源码)

由于我不会制作动画图片,所以先放几及其不具备代表性的展示图片. 我以前的思路是通过动态的设置xy坐标通过手势移动来识别,但是我后来试了一下,发现运行效果极差.所以偷闲做了下这个跟踪球控件,其实实现十分简单.只要大家熟悉自定义控件的使用以及手势识别.基本上就ok了. 现在我们看下这个控件的源码TouchMoveView.java package com.fay.touchmove; import android.annotation.SuppressLint; import android.con

Android网络连接判断与处理

获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 1 public boolean isNetworkConnected(Context context) { 2 if (context != null) { 3 ConnectivityManager mConnectiv

Android 触摸手势基础 官方文档概览2

Android 触摸手势基础 官方文档概览 触摸手势检测基础 手势检测一般包含两个阶段: 1.获取touch事件数据 2.解析这些数据,看它们是否满足你的应用所支持的某种手势. 相关API: MotionEvent 兼容版的: MotionEventCompat  (Note that MotionEventCompat is not a replacement for the MotionEvent class. Rather, it provides static utility metho

Android的手势操作识别-转

Android的手势操作识别 时间:2012-10-20 23:09 来源:未知 作者:admin 点击: 282 次 摘要 首先,在Android系统中,每一次手势交互都会依照以下顺序执行. 1. 接触接触屏一刹那,触发一个MotionEvent事件. 2. 该事件被OnTouchListener监听,在其onTouch()方法里获得该MotionEvent对象. 3. 通过GestureDetector(手势识别器)转发次MotionEvent对象 首先,在Android系统中,每一次手势交