`

Android 滑动切换页面 以及屏幕手势

 
阅读更多

手机进入智能机时代,触摸屏也已成为主流之势,原来的手机按键也被屏幕点触取代,滑动屏幕操作则相对屏幕点击更能获得用户的青睐,习惯了各种浏览器的鼠标手势、pad等平板的切滑、类似iReader的软件丰富的手势后,是不是也想自己的软件能够用食指炫起来呢,下面就让我们来看看android的手势操作吧

 

先介绍下左右滑动切换Activity,对于复杂的手势原理一样,具体后述。

主要原理为监控触屏事件和手势事件,在触屏事件处理函数中调用手势事件处理函数,表示用户触屏后是否有手势操作,有则进行手势事件处理,大致分为四步

 

1、需要继承OnGestureListener和OnDoubleTapListener,如下:

Java代码  收藏代码
  1. public class ViewSnsActivity extends Activity implements OnTouchListener, OnGestureListener  

这两个类分别是触屏监听器和手势监控器,具体可查看OnTouchListenerOnGestureListener

 

2、在添加mGestureDetector的定义,并在ViewSnsActivity的onCreate函数中加入其页面布局的setOnTouchListener事件

Java代码  收藏代码
  1. GestureDetector mGestureDetector;  

  

Java代码  收藏代码
  1. public void onCreate(Bundle savedInstanceState) {  
  2.         super.onCreate(savedInstanceState);  
  3.         setContentView(R.layout.view_sns_activity);  
  4.           
  5.         mGestureDetector = new GestureDetector((OnGestureListener) this);    
  6.         LinearLayout viewSnsLayout = (LinearLayout)findViewById(R.id.viewSnsLayout);    
  7.         viewSnsLayout.setOnTouchListener(this);    
  8.         viewSnsLayout.setLongClickable(true);    
  9.     }  

mGestureDetector为手势监听对象,下面的OnFling就是为其实现,用来处理手势的

viewSnsLayout.setOnTouchListener(this);表示viewSnsLayout这个layout的触屏事件由下面的OnTouch处理

 

3、重载onFling函数

Java代码  收藏代码
  1. private int verticalMinDistance = 20;  
  2. private int minVelocity         = 0;  
  3.   
  4. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {  
  5.   
  6.     if (e1.getX() - e2.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity) {  
  7.   
  8.         // 切换Activity  
  9.         // Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);  
  10.         // startActivity(intent);  
  11.         Toast.makeText(this"向左手势", Toast.LENGTH_SHORT).show();  
  12.     } else if (e2.getX() - e1.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity) {  
  13.   
  14.         // 切换Activity  
  15.         // Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);  
  16.         // startActivity(intent);  
  17.         Toast.makeText(this"向右手势", Toast.LENGTH_SHORT).show();  
  18.     }  
  19.   
  20.     return false;  
  21. }  

OnFling的四个参数意思分别为

Xml代码  收藏代码
  1. e1  The first down motion event that started the fling.手势起点的移动事件  
  2. e2  The move motion event that triggered the current onFling.当前手势点的移动事件  
  3. velocityX   The velocity of this fling measured in pixels per second along the x axis.每秒x轴方向移动的像素  
  4. velocityY   The velocity of this fling measured in pixels per second along the y axis.每秒y轴方向移动的像素  

说的更简单点就是,鼠标手势相当于一个向量(当然有可能手势是曲线),e1为向量的起点,e2为向量的终点,velocityX为向量水平方向的速度,velocityY为向量垂直方向的速度

Java代码  收藏代码
  1. if (e1.getX() - e2.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity)  

 则上面的语句能知道啥意思了吧,就是说向量的水平长度必须大于verticalMinDistance,并且水平方向速度大于minVelocity

 

从而我们可以如此判断手势是否满足一定的条件从而进行相应响应,也可以根据这个写出更复杂的手势判断。

 

4、重载onTouch函数

在2中我们定义了viewSnsLayout的touch事件处理,下面我们来实现,直接调用手势的处理函数

Java代码  收藏代码
  1. public boolean onTouch(View v, MotionEvent event) {  
  2.     return mGestureDetector.onTouchEvent(event);  
  3. }  

查看GestureDetector类的onTouchEvent的源码就能知道,进入该函数后会进入case MotionEvent.ACTION_UP这个路径,从而调用onFling函数

 

如果需要设置activity切换效果,在startActivity(intent);之后添加

overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);即可,可修改相应参数,可参考http://www.iteye.com/topic/1116472

 

其他:

关于activity添加ScrollView后或是外部为RelativeLayout时onFling不起作用,无法滑动问题见http://trinea.iteye.com/blog/1213815

分享到:
评论

相关推荐

    Android 滑动切换以及屏幕手势

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

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

    `ViewPager`可以轻松地实现左右滑动切换页面的效果,并且可以配合`Fragment`来管理每个页面的内容。`Fragment`是一种可以在Activity中动态添加、移除或替换的UI组件,非常适合用于构建复杂的应用界面。 在`...

    Android 手势滑动切换activity

    本文将深入探讨如何实现"Android手势滑动切换Activity"这一功能,帮助开发者提升应用的用户体验。 首先,理解Activity是Android应用程序的基本组件,用于展示用户界面并处理用户交互。在Android系统中,我们通常...

    一个android桌面滑动切换屏幕的控件(二)

    【标题】:“一个Android桌面滑动切换屏幕的控件(二)” 在Android开发中,为用户提供流畅且直观的界面交互至关重要,而滑动切换屏幕是实现这一目标的关键技术之一。这个博客“一个Android桌面滑动切换屏幕的控件(二...

    Android使用ViewFlipper做页面切换,与手势滑动切换的使用

    它可以简单实现子页面的切换,,, 它只需使用addView方法添加几个View,每个View对应的是一个页面,即可完成对于多页面的管理,,, 在android上实现手势的识别也比较简单,可以实现OnTouchListener和...

    代码,滑动手势切换屏幕

    在移动应用开发中,滑动手势切换屏幕是一种常见的交互方式,尤其在Android系统中非常流行。用户通过简单的手指滑动操作就能实现界面间的平滑过渡,提升了用户体验。本篇文章将详细探讨滑动手势切换屏幕的技术实现及...

    滑动屏幕切换界面显示

    2. **ViewPager**:ViewPager是Android中的一个适配器视图,用于展示多个全屏页面,并允许用户左右滑动切换页面。ViewPager内部使用了PageTransformer接口,可以通过自定义Transformer实现滑动时的动画效果,增强...

    android 纵向滑动页面(上下滑动效果)

    在Android开发中,创建一个能够实现纵向滑动,即上下滑动效果的页面是一项常见的任务。这样的效果常常用于实现如滚动列表、轮播图或阅读器等应用功能。本教程将详细讲解如何在Android中实现这样的功能,并结合提供的...

    安卓换肤主题更换夜间模式相关-Android手指滑动切换页面换皮肤.rar

    首先,"Android手指滑动切换页面"是一个常见的交互设计,它允许用户通过简单的手势在应用的不同页面之间导航。实现这一功能通常涉及到Android的触摸事件处理。在Activity或Fragment中,你需要监听MotionEvent事件,...

    实现底部切换标签+左右滑动切换页面

    对于左右滑动切换页面,我们可以利用`SwipeRefreshLayout`(Android)或`UIPanGestureRecognizer`(iOS)来增强用户体验。`SwipeRefreshLayout`允许用户通过上滑手势刷新内容,而`UIPanGestureRecognizer`则可以捕捉...

    android通过手势切换activity

    标题提到的“android通过手势切换activity”是指通过用户的手势操作,比如滑动,来实现不同Activity之间的切换,从而实现更流畅、直观的界面导航。这一功能在许多应用中都有所应用,尤其是那些需要展示多个页面或者...

    Android左右滑动切换图片功能

    总之,Android中的左右滑动切换图片功能涉及到了触摸事件处理、页面容器(如`ViewPager`)的使用、适配器的设计以及手势识别等多个知识点。理解和掌握这些内容对于提升Android开发技能非常有帮助。在实际开发中,...

    滑动切换Activity Demo

    ViewPager是Android提供的一个用于展示多个页面并支持滑动切换的控件。它可以自动处理页面的滑动动画和切换逻辑。如果你需要更自定义的行为,比如支持上滑和下滑,那么可能需要自定义ScrollView,重写onTouchEvent...

    手势实现Activity的切换滑动效果

    在Android开发中,实现Activity之间的滑动切换效果可以极大地提升用户体验,这种效果通常与新闻阅读应用、杂志式布局或者页面浏览类应用相关。本话题主要关注如何通过手势识别来实现类似Zaker应用中的Activity滑动...

    安卓天气日历时间选择倒计时相关-android下的日历日程可以显示当前日期农历支持手势滑动切换日期.rar

    在这个项目中,可能已经实现了自定义的日历视图,以展示当前日期和农历,并支持手势滑动切换日期。 2. 农历支持: - 农历转换通常需要借助第三方库,如`com.github.fengdai:android-lunar-calendar:1.0.2`。这个库...

    左右滑动切换屏幕,上下滑动滚屏

    在Android开发中,实现“左右滑动切换屏幕,上下滑动滚屏”的功能是一项常见的需求,这涉及到Android的触摸事件处理、布局管理以及视图滚动技术。以下将详细阐述这一主题。 1. 触摸事件处理 Android系统通过...

    android 手势 滑动翻页

    在Android开发中,手势识别是增强用户交互体验的重要一环,尤其在移动设备上,滑动翻页手势已经成为用户操作的常见方式。本教程将详细讲解如何在Android应用中实现上下和左右滑动翻页的效果。 一、Android手势基础 ...

    android 视频详情 评论 相关 滑动切换

    标题“android 视频详情 评论 相关 滑动切换”暗示了这是一个涉及到视频详情展示、评论功能以及通过滑动操作在这些内容之间切换的应用示例。描述中提到这是一个基于Eclipse的完整Demo,意味着我们可以从源代码中学习...

    Android封装自定义ViewPager实现左右自动切换和手势滑动效果

    在Android开发中,ViewPager是一个非常常用的组件,常用于展示多个页面并进行平滑的左右滑动切换。然而,原生的ViewPager并不支持自动切换和某些特定的手势操作,因此开发者经常需要对其进行封装来满足这些需求。这...

    Android左右滑动切换样式.rar

    在Android开发中,创建一个左右滑动切换样式的界面是一种常见的设计手法,它通常用于实现如应用内页面导航、选项卡切换等效果。这个"Android左右滑动切换样式.rar"的源代码包提供了实现这种交互体验的方法。让我们...

Global site tag (gtag.js) - Google Analytics