在Android手机操作系统中支持各种滑动手势的操作。我们在这里为大家介绍的方法主要就是针对这些手势如何能在Android平台中侦测出来。下面就让我们大家一起来看看Android滑动手势具体的识别方法吧。

* Android Activity跳转相关操作技巧分享
* Android创建sdcard详细图解
* Android系统信息查看方法详解
* Android数据库相关代码解读
* Android拍照实现方式概述

Android SDK提供了一个listener类来侦测各种不同的手势:

SimpleOnGestureListener. 你只需要实现自己所关心的手势就可以了.

Swipe在android里面是叫Fling

首先创建自己的一个手势detector类:

1. class MyGestureDetector extends SimpleOnGestureListener {
2. @Override
3. public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
4. }

一个Android滑动手势有几个特征, 比如是在x或者y轴上近乎直线的划动, 中途路径的偏差不能太大, 而且划动需要一定的速度, 所以我们定义几个定量:

1. private static final int SWIPE_MIN_DISTANCE = 120;
2. private static final int SWIPE_MAX_OFF_PATH = 250;
3. private static final int
SWIPE_THRESHOLD_VELOCITY = 200;

然后在onFling方法中, 判断是不是一个合理的swipe动作:

1. if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs
(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
2. viewFlipper.setInAnimation(slideLeftIn);
3. viewFlipper.setOutAnimation(slideLeftOut);
4. viewFlipper.showNext();
5. } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE &&
Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
6. viewFlipper.setInAnimation(slideRightIn);
7. viewFlipper.setOutAnimation(slideRightOut);
8. viewFlipper.showPrevious();
9. }
10. if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE &&
Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
11. viewFlipper.setInAnimation(slideLeftIn);
12. viewFlipper.setOutAnimation(slideLeftOut);
13. viewFlipper.showNext();
14. } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE &&
Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
15. viewFlipper.setInAnimation(slideRightIn);
16. viewFlipper.setOutAnimation(slideRightOut);
17. viewFlipper.showPrevious();
18. }

这里的viewFlipper是含有多个view的一个container, 可以很方便的调用prev/next view, 加上animation动画, 可以达到一些不错的效果:

1. viewFlipper = (ViewFlipper)findViewById(R.id.flipper);
2. slideLeftIn = AnimationUtils.loadAnimation
(this, R.anim.slide_left_in);
3. slideLeftOut = AnimationUtils.loadAnimation
(this, R.anim.slide_left_out);
4. slideRightIn = AnimationUtils.loadAnimation
(this, R.anim.slide_right_in);
5. slideRightOut = AnimationUtils.loadAnimation
(this, R.anim.slide_right_out);

自定义的animation可以查看具体的XML, 比如从左边进来的一个动画:

1. < set xmlns:android="http://schemas.
android.com/apk/res/android">
2. < translate android:fromXDelta="100%p"
android:toXDelta="0" android:duration="800"/>
3. < /set>

当然最后不要忘记在你的Activity中override onTouch方法来获取手势action:

1. @Override
2. public boolean onTouchEvent(MotionEvent event) {
3. if (gestureDetector.onTouchEvent(event))
4. return true;
5. else
6. return false;
7. }

Android滑动手势的相关识别方法就为大家介绍到这里。

更多相关文章

  1. android 按钮点击的两种方法以及长按事件
  2. 详解 Android(安卓)的 Activity 组件
  3. Android(安卓)中自定义View(一)
  4. ListView滚动条问题
  5. 仿优酷Android客户端图片左右滑动(自动滑动)
  6. android单元测试
  7. Android(安卓)使用Handler的PostDelayed方法实现图片的轮播
  8. android中读写sd卡文件
  9. Android:Debug certificate expired on DATE 解决方法

随机推荐

  1. Centos下 修改mysql密码的方法
  2. Mysql5.7服务无法启动的图文解决教程
  3. mysql 5.7以上版本下载及安装图文教程
  4. MySQL嵌套事务所遇到的问题
  5. 记一次因线上mysql优化器误判引起慢查询
  6. MySql Sql 优化技巧分享
  7. 利用ssh tunnel链接mysql服务器的方法
  8. mysql 全文检索中文解决方法及实例代码
  9. 浅谈mysql可有类似oracle的nvl的函数
  10. 浅谈Mysql中类似于nvl()函数的ifnull()函