1.回顾

  上篇学习了 Android 系统服务的 10个实例 ,当然 还有更多的系统服务没有使用;留下来的遗憾就是,昨晚没有将demo下载地址分享出去;

   demo下载:

   http://download.csdn.net/detail/lablenet/9062623


2.重点

   (1)OnTouchListener 实现 上下左右手势识别

   (2)OnTouchListener + SimpleOnGestureListener + GestureDetector 实现 上下左右 手势识别

   (3)GestureOverlayView + GestureLibrary + OnGesturePerformedListener 实现 自定义手势识别


3. 效果图

          普通手势识别:                                                        自定义手势识别:

                       


4. 图片准备

      为了实现的效果更好一点,使用 ps 做了 9张 图片 ,来作为响应 ,更直观 的显示;

(1)待机


         

 (2)普通手势判断:上下左右

           

  (3)自定义手势判断 :对号,错号,圆,雷

          


5. OnTouchListener 实现 上下左右手势识别

   5.1 思路

    (1) OnTouchListener 在前面使用过,在 做 图片轮播(ViewFlipper) 的时候使用过 ;

    (2)基本思路一样,设置 OnTouchListener ,进行判断 ;

   5.2 实现

     给图片或者布局设置监听即可;

/** *  * 第一种方式: * 添加触摸 事件监听器 * @author yuan * */class imgtestTouchListener implements OnTouchListener{private int x=0;private int y=0;@Overridepublic boolean onTouch(View v, MotionEvent event) {// 可以通过 x ,y 来判断 滑动的手势//不过只可以判断:上滑,下滑,左滑,右滑     switch (event.getAction()) {    case MotionEvent.ACTION_DOWN://手指按下的时候:初始化 x,y 值x=(int) event.getX();y=(int) event.getY();break;case MotionEvent.ACTION_MOVE://移动就不说了,因为在这里判断手势,只和 按下的位置和 抬起来的位置 有关;break;case MotionEvent.ACTION_UP:/* * 手指抬起来触发 ,所以判断在这里进行 * 1.获得结束的x,y * 2.进行判断 */int upx=(int) event.getX();int upy=(int) event.getY();String result=drawTouch(upx,upy);//提醒textView1.setText(result);break;}return true;}private String drawTouch(int upx,int upy){String str="没有滑动";//水平滑动if(upx-x>100){str="向右滑动";//改变图片img_test.setImageResource(R.drawable.icon_right);}else if(x-upx>100){str="向左滑动";//改变图片img_test.setImageResource(R.drawable.icon_left);}else if(upy-y>100){str="向下滑动";//改变图片img_test.setImageResource(R.drawable.icon_down);}else if(y-upy>100){str="向上滑动";//改变图片img_test.setImageResource(R.drawable.icon_up);}return str;}}

6. OnTouchListener +  SimpleOnGestureListener +  GestureDetector 实现 上下左右 手势识别

   6.1 思路

    (1)和 使用 OnTouchListener 一样,不过是将 MotionEvent 对象交给 GestureDeteCtor 对象 处理

    (2)GestureDetector 实现的不仅仅 实现 上下左右的判断,还有很多 这里仅仅 重新了 onFling() 方法


   6.2 实现

    (1)声明 并 实例化 GestureDetector  

      private GestureDetector gestureDetector;
   

   (2)一定在 OnCreate 里实例化 ,不然报 空指针 异常

//00.初始化 GestureDetector 对象gestureDetector=new GestureDetector(MainActivity.this,new GestureDelectorSimlpeListener());

    (3)实现  SimpleOnGestureListener  监听

/** * 2.继承 SimpleOnGestureListener * 重载 感兴趣的 手势 * @author yuan * */class GestureDelectorSimlpeListener extends SimpleOnGestureListener{@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {/* *  滑动 使用 onFling()方法 *  3.判断 */String result=drawTouch(e1.getX(),e1.getY(),e2.getX(),e2.getY());textView1.setText(result);return true;}/** * 手势判断 * @param x * @param y * @param upx * @param upy * @return */private String drawTouch(float x,float y,float upx,float upy){String str="没有滑动";//水平滑动if(upx-x>100){str="向右滑动";//改变图片img_test.setImageResource(R.drawable.icon_right);}else if(x-upx>100){str="向左滑动";//改变图片img_test.setImageResource(R.drawable.icon_left);}else if(upy-y>100){str="向下滑动";//改变图片img_test.setImageResource(R.drawable.icon_down);}else if(y-upy>100){str="向上滑动";//改变图片img_test.setImageResource(R.drawable.icon_up);}return str;}}

     (4)实现 OnTouchListener 监听

/** * 第二种方式 *  * 使用 GestureDetector 来进行操作 *  */class GestureOntouchListener implements OnTouchListener{@Overridepublic boolean onTouch(View v, MotionEvent event) {//1.获得 motionEvent 对象gestureDetector.onTouchEvent(event);return true;}}

7. 总结

   (1)实现 上下左右手势识别 ,通过两种方式 均可实现 

   (2)自定义手势识别写在下篇,内容比较多点

   (3)Demo 下载 也在下篇


更多相关文章

  1. Android(安卓)判断真机和模拟器的方法
  2. Android之解决CoordinatorLayout+AppBarLayout+CollapsingToolba
  3. android 判断ip地址合法
  4. Android(安卓)通用获取Ip的方法(判断手机是否联网的方法)!!!
  5. android 横向滑动 HorizontalScrollView
  6. Android(安卓)- 如何判断当前线程是否是主线程
  7. android:onClick详解
  8. Android判断当前界面是否是桌面(主页)
  9. Material Design之TabLayout的用法(标题栏滑动+ViewPager)

随机推荐

  1. Android小项目之五 splash动画效果
  2. Android异步3:AsyncTask更新UI
  3. Android(安卓)Studio 使用Lint检查并去除
  4. Android解决方案之:Android(安卓)Studio中
  5. Android学习之自定义控件之图片带文字的V
  6. Android 6.0 (API 23, M)以上对permissio
  7. android安全问题(七) 抢先接收广播 - 内因
  8. Android对话框的高级设置《一》设置对话
  9. Android(安卓)WebView 上传文件支持全解
  10. Android默认系统声音/大小修改及配置