`
surefan
  • 浏览: 35785 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Android的滑动手势处理

阅读更多

Android SDK提供了一个listener类来侦测各种不同的手势:
SimpleOnGestureListener.  你只需要实现自己所关心的手势就可以了.
Swipe在android里面是叫Fling

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


Java代码
class MyGestureDetector extends SimpleOnGestureListener {  
    @Override  
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {  

 


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


Java代码
private static final int SWIPE_MIN_DISTANCE = 120;  
private static final int SWIPE_MAX_OFF_PATH = 250;  
private static final int SWIPE_THRESHOLD_VELOCITY = 200; 

 


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


Java代码
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {  
    viewFlipper.setInAnimation(slideLeftIn);  
    viewFlipper.setOutAnimation(slideLeftOut);  
    viewFlipper.showNext();  
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {   
    viewFlipper.setInAnimation(slideRightIn);   
    viewFlipper.setOutAnimation(slideRightOut);   
    viewFlipper.showPrevious();  

if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
    viewFlipper.setInAnimation(slideLeftIn);
    viewFlipper.setOutAnimation(slideLeftOut);
    viewFlipper.showNext();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
    viewFlipper.setInAnimation(slideRightIn);
    viewFlipper.setOutAnimation(slideRightOut);
    viewFlipper.showPrevious();
}

 


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


Java代码
viewFlipper = (ViewFlipper)findViewById(R.id.flipper);  
slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);  
slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);  
slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);  
slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out); 

 

自定义的animation可以查看具体的XML, 比如从左边进来的一个动画:
Xml代码
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="800"/> 
</set> 


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


Java代码
@Override 
public boolean onTouchEvent(MotionEvent event) {   
    if (gestureDetector.onTouchEvent(event))   
        return true;   
    else  
        return false;  

分享到:
评论

相关推荐

    Android 滑动手势监听例子源码.zip

    这个"Android 滑动手势监听例子源码.zip"文件提供了一个简单的实例,帮助开发者理解和实现滑动手势监听功能。下面我们将深入探讨Android中滑动手势的原理、实现方式以及如何在实际应用中运用这些知识。 首先,...

    Android-Swipper-Android库可滑动手势来控制音量亮度和搜索

    这将使Swipper能够捕获并处理屏幕上的滑动手势。 4. **实现回调**:Swipper提供了丰富的回调接口,你可以根据需要重写这些方法来处理音量、亮度改变的事件,或者在触发搜索时启动搜索界面。 5. **测试与优化**:在...

    android 滑动手势翻页

    总之,Android滑动手势翻页涉及了手势识别、事件处理、页面切换等多个方面。通过理解并熟练运用`GestureDetector`,结合适当的UI组件,你可以构建出流畅、自然的滑动浏览体验。对于`TestFlip`这个项目,可以将上述...

    图片手势滑动

    "图片手势滑动"通常是指通过滑动手势在多张图片之间切换,这样的功能广泛应用于相册应用、幻灯片展示等场景。本文将深入探讨如何实现这种功能,适合初学者学习。 首先,我们要理解手势识别是整个过程的关键。...

    android游戏开发之滑动手势源码

    滑动手势源码通常涉及到多个Android系统提供的API和技术,包括触摸事件处理、手势识别器(GestureDetector)以及MotionEvent类。下面将详细探讨这些知识点。 1. 触摸事件处理: 在Android中,触摸事件主要通过View...

    滑动手势的demo

    滑动手势是移动设备用户界面设计中的重要组成部分,它提供了直观、快速的交互方式,让用户通过简单的手指滑动操作执行各种功能。在这个“滑动手势的demo”中,我们将深入探讨滑动手势的原理、实现方式以及在实际应用...

    Android滑动手势侦测方法介绍

    ### Android滑动手势侦测方法介绍 #### 一、引言 随着移动设备的普及,触摸屏成为用户与设备交互的主要方式之一。Android系统作为全球最大的移动操作系统之一,提供了丰富的API来支持各种触摸事件,包括滑动手势。...

    android 手势导致页面滑动

    Android中的滑动手势主要通过`GestureDetector`类来实现。`GestureDetector`是一个用于识别简单手势的工具类,它可以监听滑动、快速点击和长按等操作。开发者可以通过创建`GestureDetector`的实例,并重写其内部的回...

    Android手势识别——上下左右滑动、屏幕上下左右中区域处理

    这样,所有的手势处理逻辑都集中在一个地方,便于维护和扩展。 此外,为了提高用户体验,我们还可以考虑加入滑动动画,比如使用`ObjectAnimator`来平滑地改变视图的位置或大小,或者使用`ViewPropertyAnimator`来...

    基于Android游戏开发之滑动手势源码

    本项目“基于Android游戏开发之滑动手势源码”聚焦于滑动手势的实现,提供了完整的源码供学习者参考和复用。下面我们将深入探讨Android中的滑动手势及其在游戏开发中的应用。 滑动手势在Android中通常通过...

    android手势处理图片平移、缩放和旋转

    "android手势处理图片平移、缩放和旋转"这个主题涉及到的主要知识点包括Android手势检测、ImageView的扩展以及图片操作。 首先,我们要了解Android的手势检测。Android系统提供了一套GestureDetector和...

    Android 手势滑动切换activity

    2. 处理滑动手势:在onFling方法中,我们可以比较手指离开屏幕时的初始坐标和结束坐标,计算出滑动的速度和方向。如果滑动方向满足条件(例如,从左到右或者从右到左),就触发Activity的切换。 3. 启动新Activity...

    android 日历 手势滑动

    // 实现滑动手势的逻辑 } @Override public boolean onSingleTapUp(MotionEvent e) { // 处理单击事件 } }); ``` 2. **处理触摸事件**: 在你的日历视图上设置触摸事件监听器,当用户触摸屏幕时,将触摸事件...

    android随着手势的滑动而滑动的效果

    当在Fragment之间切换时,可以利用`FragmentManager`的`beginTransaction()`方法配合滑动手势,实现平滑的过渡效果。例如,添加一个`SharedElementTransition`,让两个Fragment之间的元素在滑动过程中有连续的视觉...

    android 手势 滑动翻页

    滑动手势通常通过检测连续的ACTION_MOVE事件来实现。当用户在屏幕上滑动时,`onTouchEvent()`会接收到一系列ACTION_MOVE事件,通过比较相邻两个事件的位置差,可以判断出滑动的方向。 三、实现上下滑动翻页 1. ...

    Android 向右滑动切换Activity, 随着手势的滑动而滑动的效果

    自定义手势识别器则更灵活,可以精确控制滑动手势的触发条件和行为。 在自定义手势识别器中,你需要重写`onDown(MotionEvent e)`、`onMove(MotionEvent e1, MotionEvent e2)`等方法,检测用户的滑动动作。当滑动...

    Android手势滑动图片浏览

    在Android开发中,实现手势滑动图片浏览是一种常见的需求,特别是在...`ViewFlipper`负责管理图片的显示,而`GestureDetector`则用于捕捉和处理滑动手势。这个解决方案可以灵活应用于各种Android应用中,提高用户体验。

    Android 手势滑动界面(ViewPager)

    1. **ViewPager组件**:ViewPager是Android Support Library中的一个视图容器,它可以包含多个子视图,并根据用户的滑动手势进行平滑地切换。每个子视图通常代表一个独立的页面。 2. **PagerAdapter**:ViewPager的...

    Android滑动冲突解决的例子

    Android提供了GestureDetector和Scroller类来帮助处理滑动事件。GestureDetector可以检测出用户的各种手势,包括滑动。你可以创建一个GestureDetector实例,然后重写它的onDown()、onFling()等方法,以此来区分不同...

    Android 滑动切换以及屏幕手势

    ### Android滑动切换及屏幕手势实现详解 随着智能手机时代的到来,触摸屏技术逐渐成为主流,传统的物理按键被触摸屏操作所取代。其中,滑动手势因其直观性和便捷性而受到用户的广泛欢迎。本文将深入探讨如何在...

Global site tag (gtag.js) - Google Analytics