`

Android滑动手势侦测方法介绍

 
阅读更多

http://developer.51cto.com/art/201001/181289.htm

    Android滑动手势在触摸屏电脑中是一个最为基本的操作。在这里我们会通过各种代码的解读来分析Android操作系统是如何侦测到不同的滑动手势。

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) {   

 

 

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

 

 

这里的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;   

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

分享到:
评论

相关推荐

    android 滑动菜单

    1. **手势检测**:Android提供`GestureDetector`和`Scroller`类来处理滑动手势。`GestureDetector`负责识别用户的滑动操作,而`Scroller`则用于平滑地滚动视图。在`EGMenu.java`中,可能会有一个内部类扩展`...

    Android引导页面的滑动实现,解决ViewPage侧滑与ListView滑动的冲突问题

    为了实现更丰富的滑动效果,我们通常需要自定义`ViewPager`的滑动手势识别,这可以通过重写`ViewPager`的`onTouchEvent`方法来实现。 对于`ListView`,它是一个可滚动的列表视图,用户可以通过上下滑动查看更多的...

    Android实现侧边栏滑动源码

    4. **滑动手势处理**:`DrawerLayout`内置了滑动手势处理,可以通过`openDrawer()`和`closeDrawer()`方法控制侧边栏的开关状态。你也可以自定义滑动侦测,覆盖`onInterceptTouchEvent()`和`onTouchEvent()`方法。 5...

    Android SwipeView类似桌面的滑动界面.zip

    2. **滑动侦测**:使用`OnTouchListener`或`GestureDetector`来识别用户的滑动手势,判断是左滑、右滑还是点击事件。 3. **内存管理**:考虑到性能和内存使用,通常只有当前页面和相邻的页面会被加载到内存中。当...

    android 仿天猫商品详情界面滑动效果

    1. **滑动侦测**:实现滑动手势检测是关键。我们可以使用`GestureDetector`类来监听用户的滑动动作。通过重写`onDown()`, `onScroll()`, 和`onFling()`等方法,我们可以捕获滑动开始、滑动过程和快速滑动结束的事件...

    fab-toolbar,android5.0-MaterialDesigner设计效果,滑动显示和隐藏的toolbar

    在Android开发中,Material Design是一种广泛采用的设计语言,自Android 5.0(Lollipop)开始引入。...理解并掌握这种设计和实现方法对于Android开发者来说,对于提升应用的用户体验和遵循现代设计规范至关重要。

    ListViewScrollViewDemo:仿雪球行情页底部的滑动手势效果

    总的来说,ListViewScrollViewDemo是一个展示如何在Android应用中融合ListView和ScrollView功能,以及实现复杂滑动手势效果的实例。它涵盖了Android UI设计、事件处理、手势识别、动画制作等多个核心知识点,对于...

    左侧滑动菜单

    在处理滑动事件时,"RenRenSlidingLayout"可能使用了滑动手势检测算法,比如滑动侦测器(GestureDetector)和Scroller类。滑动侦测器负责识别用户的滑动动作,而Scroller则帮助平滑地执行动画,使得菜单的展开和关闭...

    仿网易新闻的滑动视图布局

    1. **滑动切换栏目**:这是该布局的核心功能,允许用户通过水平滑动手势在不同的栏目之间进行切换。这通常通过实现滑动布局(如ViewPager)来完成,它会自动处理页面间的平滑过渡。开发者需要为每个栏目创建对应的...

    listview 向左滑动删除

    我们需要创建一个滑动侦测器(如`SwipeTouchListener`),用于检测用户的滑动手势。侦测器可以监听`MotionEvent`,计算滑动的距离和方向。当滑动超过一定阈值时,显示删除按钮。 ```java public class ...

    android下拉刷新

    注意,RecyclerView的滑动冲突处理,需要正确配置滚动方向,以免与SwipeRefreshLayout的滑动手势发生冲突。 5. 第三方库: 除了官方的SwipeRefreshLayout,还有许多第三方库提供更强大的下拉刷新功能,例如:...

    防网易新闻左右侧滑缩小

    标题“防网易新闻左右侧滑缩小”涉及到的是一个在Android应用开发中的技术点,主要目标是防止用户在浏览类似网易新闻的应用时,通过左右滑动手势导致界面元素(如菜单或内容区域)的缩小。这一功能通常是通过实现...

    QQ侧滑效果

    - 实现滑动手势检测通常可以使用`GestureDetector`或者自定义滑动侦测逻辑。你需要设置一个最小的滑动距离阈值,以避免误触。同时,根据滑动方向(水平或垂直)来判断是侧滑还是其他手势。 3. **视图动画**: - ...

    侧滑效果仿qq侧滑

    1. **滑动侦测**:实现侧滑效果的关键在于正确地检测用户的滑动手势。通常,这需要使用GestureDetector和Scroller类。GestureDetector用于监听滑动事件,而Scroller则负责动画效果,使菜单平滑地打开和关闭。 2. **...

    SlideTest 侧滑菜单参考

    - 实现侧滑菜单需要识别和处理滑动手势。在Android中,可以通过`GestureDetector`和`OnGestureListener`接口来监听和响应滑动事件。还可以通过`Scroller`类来实现平滑的动画效果。 6. **自定义动画**: - 为了...

    手机屏幕触控技术与提升AIR在Android上的触控体验

    5. **自定义触摸事件处理**:对于特定的触控行为,可以创建自定义事件并进行优化处理,比如滑动侦测、长按事件等,以提供更丰富的交互体验。 6. **优化布局和性能监控**:使用高效的布局管理器,避免嵌套过多的显示...

Global site tag (gtag.js) - Google Analytics