Android开发之手势检测及通过手势实现翻页功能的方法

所属分类: 软件编程 / Android 阅读数: 51
收藏 0 赞 0 分享

本文实例讲述了Android开发之手势检测及通过手势实现翻页功能的方法。分享给大家供大家参考,具体如下:

手势是指用户手指或触摸笔在触摸屏上的连续触碰的行为,比如在屏幕上从左至右划出的一个动作,就是手势,再比如在屏幕上画出一个圆圈也是手势。手势这种连续的触碰会形成某个方向上的移动趋势,也会形成一个不规则的几何图形。Android对两种手势行为都提供了支持:

1. 对于第一种手势行为而言,Android提供了手势检测,并为手势检测提供了相应的监听器。

2. 对于第二种手势行为,Android允许开发者添加手势,并提供了相应的API识别用户的手势。

手势检测

Android 为手势检测提供了一个GestureDetector类,GestrueDetector实例代表了一个手势检测器,创建GestureDetector时需要传入一个GestureDetector.OnGestrureListener实例,GestureDetector.OnGestrueListener就是一个监听器,负责对用户的手势行为提供响应。

GestrueDetector.OnGestureListener里包含的事件处理方法如下。

Boolean onDown(MotionEvent e):当触碰事件按下时触发该方法。
Boolean onFling(MotionEvent e1,MotionEvent e2,float velocitX,floatvelocity):当用户在触屏上拖过是触发该方法。其中velocityX,velocityY代表拖过动作在横向,纵向上的速度。
Abstract void onLongPress(MotionEvent e):当用户在屏幕上长按时触发该方法。
Boolean onScroll(MotionEvent e1,MotionEvent e2,float distance,float distance):当用户在屏幕上滚动式触发该方法。
Void onShowPress(MotionEvent e):当用户在触摸屏上按下,而且还未移动和松开时触发该方法。
Boolean onSingleTapUp(MotionEvent e):用户在触摸屏上的轻击事件将会触发该方法。

使用Android的手势检测只需要两个步骤:

1. 创建一个GestureDetector.创建该对象时必须实现一个GestureDetector.OnGestureListener监听器实例。

2. 为应用程序的Activity的TouchEvent事件绑定监听器,在事件处理中指定把Activity上的TouchEvent事件交给GestureDetector处理。

经过上面的两个步骤之后,Activity上的TouchEvent事件就会交给GestureDetector处理,而GestureDetector就会检测是否触发了特定的手势动作。

实例:通过手势实现翻页效果

思路:把Activity的TouchEvent交给GestureDetector处理.这个程序的特殊之处在于,该程序使用了一个ViewFlipper组件,ViewFlipper组件其实是一个容器类组件,因此可调用addView(View v)添加多个组件,一旦向ViewFlipper中添加了多个组件之后,ViewFlipper可使用动画控制多个组件之间的切换效果。

本实例通过GestureDetector来检测用户的手势动作,并根据手势动作来控制ViewFlipper包含的View组件的切换,从而实现翻页效果。

关键代码如下:

Public Boolean onFling(MotionEvent event1,MotionEvent event2,float velocityX,velocity)
{
  if(event1.getX()-event2.getX()>FLIP_DISTANCE)
  {
    flipper.setInAnimation(animations[0]);
    flipper.setOutAnimation(animations[1]);
    flipper.showPrevious();
    return true;
  }
  else if(event2.getX()-event1.getX()>FLIP_DISTANCE)
  {
    flipper.setInAnimation(animations[2]);
    flipper.setOutAnimation(animation[3]);
    flipper.showNext();
    return true;
  }
  return false;
}

其中:

animations[0]=AnimaionUtils.loadAnimation(this,R.anim.left_in);
animations[1]=AnimaionUtils.loadAnimation(this,R.anim.left_out);
animations[2]=AnimaionUtils.loadAnimation(this,R.anim.right_in);
animations[3]=AnimaionUtils.loadAnimation(this,R.anim.right_out);

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android手势操作技巧汇总》、《Android基本组件用法总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

更多精彩内容其他人还在看

Android网络编程之获取网络上的Json数据实例

这篇文章主要介绍了Android网络编程之获取网络上的Json数据实例,本文用完整的代码实例讲解了在Android中读取网络中Json数据的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中的windowSoftInputMode属性详解

这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下
收藏 0 赞 0 分享

Android网络编程之UDP通信模型实例

这篇文章主要介绍了Android网络编程之UDP通信模型实例,本文给出了服务端代码和客户端代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中使用ListView实现漂亮的表格效果

这篇文章主要介绍了Android中使用ListView实现漂亮的表格效果,本文用详细的代码实例创建了一个股票行情表格,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中刷新界面的二种方法

这篇文章主要介绍了Android中刷新界面的二种方法,本文使用Handler、postInvalidate两种方法实现界面刷新,需要的朋友可以参考下
收藏 0 赞 0 分享

Android SDK三种更新失败及其解决方法

这篇文章主要介绍了Android SDK三种更新失败及其解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(一)

Android3.0(API level 11)开始,Android设备不再需要专门的菜单键。随着这种变化,Android app应该取消对传统6项菜单的依赖。取而代之的是提供anction bar来提供基本的用户功能
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(二)

这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(三)

今天继续昨天没有讲完的Menu的学习,主要是Popup Menu的学习,需要的朋友可以参考下
收藏 0 赞 0 分享

Android显示网络图片实例

这篇文章主要介绍了Android显示网络图片的方法,以实例形式展示了Android程序显示网络图片的方法,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多