`
砺雪凝霜
  • 浏览: 157067 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Android View滑动的一些总结

 
阅读更多

 

                                      关于Android View滑动的一些总结

  一直都对Android的Scroll滑动一知半解的,看了下大神的博客和Android官方文档,下面是我对于AndroidView滑动的几个方法进行总结:

 

(一) scrollTo(x,y)与scrollBy(x,y)都能进行View的滑动,他们的区别是什么?

 

scrollTo(x,y):该方法是让View相对于最初始位置滚动某段距离。

     例如:我要移动view到坐标点(100,100),那么我的偏移量就是(0,,0)  - (100,100) = (-100 ,-100)  ,我就要执行view.scrollTo(-100,-100),达到这个效果。

                    

scrollBy(x,y) :该方法是让View相对于当前的位置滚动某段距离。

    从源码中看出,它实际上是调用了scrollTo(mScrollX + x, mScrollY + y);
mScrollX + x和mScrollY + y,即表示在原先偏移的基础上在发生偏移,通俗的说就是相对我们当前位置偏移。根据父类VIEW里面移动,如果移动到了超出的地方,就不会显示。

 

区别:相同之处是他们都是相对于父容器的内部滑动,不同之处是如果2个方法只调用一次,那么都会滑动相同的位置,但是多次调用这2个方法区别就出来了。

       scrollTo()是相对于最初始位置滑动某段距离,当第二次调用时,view的位置是不会变化的,也就是说只会滑动一次。

     scrollBy()是相对于当前位置滑动某段距离,那么多次调用后,当前位置是不断会更新的,所以scrollBy()方法会让VIew持续滑动起来。

 

 (二) Scroller中startScroll()方法

 

 public void startScroll (int startX, int startY, int dx, int dy,int d)

  以提供的起始点和将要滑动的距离开始滚动。滚动会使用缺省值250ms作为持续时间。

     参数

       startX: 水平方向滚动的偏移值,以像素为单位。正值表明滚动将向左滚动

  startY: 垂直方向滚动的偏移值,以像素为单位。正值表明滚动将向上滚动

  dx: 水平方向滑动的距离,大于0会使滚动向左滚动

  dy: 垂直方向滑动的距离,大于0会使滚动向上滚动

        d: 滑动持续的时间

 

下面介绍一下与坐标相关,容易混淆的几个方法表示的含义:
1  mScrollX:表示离视图起始位置的x水平方向的偏移量

mScrollY:表示离视图起始位置的y垂直方向的偏移量

注意:mScrollX和mScrollY指的并不是坐标,而是偏移量。

 

2  getWidth()方法是相对于屏幕来说控件的宽度,控件宽度大于屏幕宽度时,该值为屏幕宽度

 

3  getLeft() ,getRight(),getBottom(),getTop()方法的值是针对其父视图的相对位置,而不是控件相对于坐标的位置

 

(三) Scroller开发带有滚动的ViewGroup的流程如下

 如果你使用 Scroller ,流程如下:

  1.可以在自定义的布局中,按照需求初始化 Scroller 构造函数。

 

  2.重写onInterceptTouchEvent(MotionEvent ev)方法,看看是否要拦截相关的事件。

 

  3.重写onTouchEvent(MotionEvent event)方法,根据触摸屏上的动作使用 computeScroll()以及 scrollTo 和 scrollBy  方法 进行根据手指对布局进行滑动效果。

 

  4.在触摸操作结束(MotionEvent.ACTION_UP)的时候,调用startScroll(int startX, int startY, int dx, int dy, int duration)方法,进行动画自动操作,来完成整个滚动流程。

 

 在此我推荐下面2篇关于利用Scroller开发带有滚动效果的ViewGroup的博客。认真搞懂其中一个,你的理解就更深了。

 http://blog.csdn.net/vipzjyno1/article/details/24664161

http://blog.csdn.net/guolin_blog/article/details/48719871

分享到:
评论

相关推荐

    android左右滑动的选择控件

    总结,实现Android的左右滑动选择控件涉及的知识点包括:自定义View的创建与绘制、触摸事件处理、布局管理、动画效果、手势识别、库的使用以及性能优化。通过深入理解和实践这些技术,开发者可以构建出满足各种需求...

    Android listview滑动删除以及view滑动的实现

    在TestView中,你可能已经实现了对View滑动的基本逻辑。进行滑动测试时,可以模拟不同方向和速度的滑动,检查View的行为是否符合预期。同时,也可以利用Android的JUnit或Espresso测试框架,编写自动化测试用例来验证...

    Android自定义View——滑动变色指示器

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI组件。本文将深入探讨如何实现一个滑动变色指示器,这是一个常用于引导用户了解应用功能或导航页间的过渡效果的视图...

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

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

    Android Webview滑动监听

    本篇将详细讲解如何在Android Webview中实现滑动监听以及图片的放大缩小功能。 首先,我们要了解`WebView`的基本用法。在Android Studio中,创建一个新的布局XML文件,添加`WebView`组件: ```xml android:id="@...

    Android 界面滑动效果

    在Android开发中,界面滑动效果是用户交互的重要组成部分,为用户提供流畅的视觉体验和便捷的操作方式。"Android 界面滑动效果"通常涉及到多种技术,包括手势识别、滚动视图、滑动布局等。这里我们将深入探讨如何在...

    android 左右滑动出现箭头提示

    总结起来,实现"android viewflipper左右滑动出现箭头提示"的功能,主要涉及以下几个步骤: 1. 在布局文件中添加ViewFlipper和箭头图标。 2. 初始化ViewFlipper和手势检测器。 3. 为箭头图标设置点击事件,为...

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

    在Android应用开发中,创新和用户体验是至关重要的因素。Swipper库就是为了提供这样一种创新体验,它允许用户通过简单的滑动手势来控制设备的音量、屏幕亮度,甚至进行搜索操作。这篇详解将深入剖析Swipper库的核心...

    Android上下左右滑动支持同时滑动斜向任意方向滑动大图片浏览大图表浏览

    解决滑动冲突通常需要对Android的触摸事件处理机制有深入理解,包括如何处理MotionEvent的ACTION_DOWN、ACTION_MOVE和ACTION_UP等,以及如何在自定义View中正确处理这些事件。 总的来说,这个技术解决方案旨在提高...

    android左右滑动翻页查看图片

    在Android开发中,实现左右滑动翻页查看图片的功能是一项常见的需求,特别是在设计相册、画廊或者幻灯片展示等应用时。本教程将详细讲解如何利用Android的手势识别接口来实现这一功能。 首先,我们需要了解Android...

    Android——滑动抽屉

    总结来说,Android的滑动抽屉功能通过`DrawerLayout`提供了一种优雅的方式来呈现附加的导航或设置选项。通过合理的布局设计、事件处理和自定义,开发者可以创建出符合用户体验标准的抽屉式界面。在实际开发中,要...

    android的滑动开关小插件

    总结,Android的滑动开关是一个重要的交互元素,正确地使用和定制滑动开关可以提高应用的用户界面质量。了解如何创建、定制以及处理滑动开关的事件,是每个Android开发者必备的技能。在实践中,我们应该关注设计原则...

    android 横向滑动翻页效果 实例

    本实例将深入讲解如何在Android项目中实现这种效果,主要涉及的技术点包括自定义ViewGroup、触摸事件处理以及View的滑动动画。 首先,`viewflow`和`viewflow-example`这两个文件名暗示了我们可能使用的是名为`...

    Android左右滑动菜单

    在Android应用开发中,滑动菜单(Sliding Menu)是一种常见的设计模式,它允许用户通过在屏幕边缘滑动来展示或隐藏一个侧边栏菜单。这种设计为用户提供了一种直观的方式来访问更多的功能或选项,而不会占据屏幕的...

    Android listView选项滑动效果

    它不仅支持左右滑动,还提供了一些自定义的动画和回调机制,使得开发者可以轻松地实现滑动操作。 实现`ListView`选项滑动效果的关键步骤如下: 1. **集成Library**:首先,需要将`android-swipelistview`库导入到...

    Android代码-Android弧形滑动辅助(使用超简单)。

    几行代码实现Android弧形滑动 博客详情:https://blog.csdn.net/u011387817/article/details/80313184 使用方式: 添加依赖: implementation 'com.wuyr:arcslidinghelper:1.0.0' APIs: Method Description ...

    android横向滑动选择的View

    在Android开发中,创建一个横向滑动选择的View可以极大地提升用户体验,特别是在处理大量选项或者进行多级选择时。这个自定义View通常被称为HorizontalScrollView,它允许用户通过水平滑动来浏览并选择屏幕无法一次...

    android 自定义图片滑动验证

    总结来说,创建自定义的图片滑动验证组件涉及以下几个关键点:布局设计、滑动事件处理、滑动验证逻辑以及可能的动画和自定义View封装。通过掌握这些要点,你就能在Android应用程序中实现功能完备且安全的滑动验证...

    Android获取在屏幕滑动速度的实例

    总结来说,通过Android的VelocityTracker类,我们可以轻松地获取屏幕滑动速度,从而实现更丰富的交互体验。在实际项目中,你可以根据具体需求调整速度阈值,以及结合其他手势检测技术,打造个性化的滑动操作。

    Android自定义滑动接听电话控件组

    在Android开发中,自定义滑动接听电话控件组是一种常见的功能实现,它为用户提供了一种直观、便捷的接听电话方式。这样的控件通常由一个显示来电信息的界面和一个可滑动的接听/挂断按钮组成。在这个场景中,我们将...

Global site tag (gtag.js) - Google Analytics