http://developer.51cto.com/art/201001/181289.htm
- Android滑动手势在触摸屏电脑中是一个最为基本的操作。在这里我们会通过各种代码的解读来分析Android操作系统是如何侦测到不同的滑动手势。
在Android手机操作系统中支持各种滑动手势的操作。我们在这里为大家介绍的方法主要就是针对这些手势如何能在Android平台中侦测出来。下面就让我们大家一起来看看Android滑动手势具体的识别方法吧。
Android SDK提供了一个listener类来侦测各种不同的手势:
SimpleOnGestureListener. 你只需要实现自己所关心的手势就可以了.
Swipe在android里面是叫Fling
首先创建自己的一个手势detector类:
- class MyGestureDetector extends SimpleOnGestureListener {
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) { - }
一个Android滑动手势有几个特征, 比如是在x或者y轴上近乎直线的划动, 中途路径的偏差不能太大, 而且划动需要一定的速度, 所以我们定义几个定量:
- 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动作:
- 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动画, 可以达到一些不错的效果:
- 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, 比如从左边进来的一个动画:
- < 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:
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if (gestureDetector.onTouchEvent(event))
- return true;
- else
- return false;
- }
Android滑动手势的相关识别方法就为大家介绍到这里。
相关推荐
1. **手势检测**:Android提供`GestureDetector`和`Scroller`类来处理滑动手势。`GestureDetector`负责识别用户的滑动操作,而`Scroller`则用于平滑地滚动视图。在`EGMenu.java`中,可能会有一个内部类扩展`...
为了实现更丰富的滑动效果,我们通常需要自定义`ViewPager`的滑动手势识别,这可以通过重写`ViewPager`的`onTouchEvent`方法来实现。 对于`ListView`,它是一个可滚动的列表视图,用户可以通过上下滑动查看更多的...
4. **滑动手势处理**:`DrawerLayout`内置了滑动手势处理,可以通过`openDrawer()`和`closeDrawer()`方法控制侧边栏的开关状态。你也可以自定义滑动侦测,覆盖`onInterceptTouchEvent()`和`onTouchEvent()`方法。 5...
2. **滑动侦测**:使用`OnTouchListener`或`GestureDetector`来识别用户的滑动手势,判断是左滑、右滑还是点击事件。 3. **内存管理**:考虑到性能和内存使用,通常只有当前页面和相邻的页面会被加载到内存中。当...
1. **滑动侦测**:实现滑动手势检测是关键。我们可以使用`GestureDetector`类来监听用户的滑动动作。通过重写`onDown()`, `onScroll()`, 和`onFling()`等方法,我们可以捕获滑动开始、滑动过程和快速滑动结束的事件...
在Android开发中,Material Design是一种广泛采用的设计语言,自Android 5.0(Lollipop)开始引入。...理解并掌握这种设计和实现方法对于Android开发者来说,对于提升应用的用户体验和遵循现代设计规范至关重要。
总的来说,ListViewScrollViewDemo是一个展示如何在Android应用中融合ListView和ScrollView功能,以及实现复杂滑动手势效果的实例。它涵盖了Android UI设计、事件处理、手势识别、动画制作等多个核心知识点,对于...
在处理滑动事件时,"RenRenSlidingLayout"可能使用了滑动手势检测算法,比如滑动侦测器(GestureDetector)和Scroller类。滑动侦测器负责识别用户的滑动动作,而Scroller则帮助平滑地执行动画,使得菜单的展开和关闭...
1. **滑动切换栏目**:这是该布局的核心功能,允许用户通过水平滑动手势在不同的栏目之间进行切换。这通常通过实现滑动布局(如ViewPager)来完成,它会自动处理页面间的平滑过渡。开发者需要为每个栏目创建对应的...
我们需要创建一个滑动侦测器(如`SwipeTouchListener`),用于检测用户的滑动手势。侦测器可以监听`MotionEvent`,计算滑动的距离和方向。当滑动超过一定阈值时,显示删除按钮。 ```java public class ...
注意,RecyclerView的滑动冲突处理,需要正确配置滚动方向,以免与SwipeRefreshLayout的滑动手势发生冲突。 5. 第三方库: 除了官方的SwipeRefreshLayout,还有许多第三方库提供更强大的下拉刷新功能,例如:...
标题“防网易新闻左右侧滑缩小”涉及到的是一个在Android应用开发中的技术点,主要目标是防止用户在浏览类似网易新闻的应用时,通过左右滑动手势导致界面元素(如菜单或内容区域)的缩小。这一功能通常是通过实现...
- 实现滑动手势检测通常可以使用`GestureDetector`或者自定义滑动侦测逻辑。你需要设置一个最小的滑动距离阈值,以避免误触。同时,根据滑动方向(水平或垂直)来判断是侧滑还是其他手势。 3. **视图动画**: - ...
1. **滑动侦测**:实现侧滑效果的关键在于正确地检测用户的滑动手势。通常,这需要使用GestureDetector和Scroller类。GestureDetector用于监听滑动事件,而Scroller则负责动画效果,使菜单平滑地打开和关闭。 2. **...
- 实现侧滑菜单需要识别和处理滑动手势。在Android中,可以通过`GestureDetector`和`OnGestureListener`接口来监听和响应滑动事件。还可以通过`Scroller`类来实现平滑的动画效果。 6. **自定义动画**: - 为了...
5. **自定义触摸事件处理**:对于特定的触控行为,可以创建自定义事件并进行优化处理,比如滑动侦测、长按事件等,以提供更丰富的交互体验。 6. **优化布局和性能监控**:使用高效的布局管理器,避免嵌套过多的显示...