关于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的博客。认真搞懂其中一个,你的理解就更深了。
相关推荐
主要是实现了listview滑动删除,以及对view的滑动测试
Swipper - Android库可滑动手势来控制音量,亮度和搜索
几行代码实现Android弧形滑动 博客详情:https://blog.csdn.net/u011387817/article/details/80313184 使用方式: 添加依赖: implementation 'com.wuyr:arcslidinghelper:1.0.0' APIs: Method Description ...
Android左右滑动,我们需要用到google提到的一个包——android-support-v4.jar,这个包是为了方便实现android view之间的切换,此资源可以直接打开使用,不会出现support的报错
在 Android端app上,自定义View,仿一个斗鱼web端滑动验证码
横向滑动选择的view,自定义view。
博客地址:http://blog.csdn.net/jsonnan/article/details/73849505
Android listview viewpager 滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 blog 地址 : http://blog.csdn.net/aaawqqq/article/details/43824631
android viewpager 实现了左右无限循环滑动 并且内附可自定义的小圆点指示器
用到了在网上下载的一个资源,在其基础上改变了其界面风格。 原网络资源 直接看效果,
Android 实现滑动方法总结 本文对Android 滑动提供了七种方法,对于每一种实现方法都进行了详细介绍,按照需要大家可以参考下, 1.1 用Layout方法 我们知道,当view在绘制时会调用onlayout方法来设置显示位置。...
Android自定义View之滑动取值条(滑动,点击取值;滑动间隔,起止范围可高度自设定)
一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper ...为了显示出滑动的效果,这里调用了ViewFlipper的setInAnimation()和setOutAnimation()方法设置了View进入和退出的动画。
Android音频剪辑裁剪自定义view,拖动剪切音频的时长,滑动滑块实时显示对应的时间点,指针可以滑动
CardStackView - 实现类似Tinder的Android滑动式卡片视图
View自由上下左右滑动切屏,支持自动回滚
本篇文章主要介绍了Android view滑动悬浮固定效果实现代码示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Android Scroller实现View弹性滑动Demo
自动播放pdf文件。源码为android-pdfview,github源码下载地址为:https://github.com/JoanZapata/android-pdfview,本压缩包中已经下载。在android-pdfview基础上,修改为自动翻页播放。
最近自己改进了一下柱状图的绘制,支持多跟柱子,自己设置颜色,并且添加了手动滑动效果(在屏幕绘制宽度不够时启动滑动)