美文网首页
Android Scroll分析

Android Scroll分析

作者: 小二的学习日记 | 来源:发表于2018-07-06 16:02 被阅读0次

本文是《Android群英传》的读书笔记

滑动效果是如何产生的?

不断的改变View的坐标

Android坐标系:

将屏幕最左上角的定点作为Android坐标原点。

Android坐标系

视图坐标系:

以父视图左上角为坐标原点。

视图坐标系

触控事件——MotionEvent:

public static final int ACTION_DOWN =0;

public static final int ACTION_UP =1;

public static final int ACTION_MOVE =2;

public static final int ACTION_CANCEL =3;

public static final int ACTION_OUTSIDE =4;

public static final int ACTION_POINTER_DOWN =5;

public static final int ACTION_POINTER_UP =6;

获取触控时间的类型:(模式基本固定)

获取触控时间的类型

获取坐标值的各种方法:

获取坐标值的各种方法

View提供的获取坐标方法:

getTop():获取到的是View 自身的顶边到其父布局顶边的距离

getLeft():获取到的是View自身的左边到其父布局左边的距离

getRight():获取到的是View 自身的右边到其父布局左边的距离

getBottom():获取到的是View自身的底边到其父布局顶边的距离

MotionEvent提供的方法:

getX():获取点击事件距离控件左边的距离,即视图坐标

getY():获取点击事件距离控件顶部的距离,

即视图坐标

getRawX():获取点击事件距离整个屏幕左边的距离,即绝对坐标

getRawY():获取点击事件距离整个屏幕顶边的距离,即绝对坐标

实现滑动的方式

布局

1、创建DragView自定义View控件,继承View。

2、初始化构造方法。

3、重写onTouchEvent(MotionEvent event)方法

方法1:重写layout()方法 方法2:直接移动左右和上下的偏移量 方法3:通过改变左外边距和上外边距的参数,改变位置 方法4:通过改变左外边距和上外边距的参数,改变位置 方法5:通过scrollBy方法改变位置

scrollTo与scrollBy:

scrollTo(x,y):表示移动到一个具体的坐标点(x,y)。

scrollBy(dx,dy):表示移动的增量为dx、dy。

这两个方法移动的是View 的content,即让View 的内容移动,如果在ViewGroup中使用scrollTo、scrollBy方法,那么移动的是所有子View,但如果在View中使用,那么移动的将是View的内容,例如TextView,content就是它的文本;ImageView,content就是它的drawable对象。

中间的矩形相当于屏幕,即可是区域。后面的content就相当于画布,代表视图。大家可以看到,只有视图的中间部分是可视的,其他部分都不可见。在可见区域中,我们设置了一个Button,它的坐标为(20,10)。

下面使用scrollBy方法,将盖板(屏幕,可视区域),在水平方向上向X轴正方向(右方)平移20,在数值方向上向Y轴正方向(下方)平移10,那么平移之后的可视区域如图。

我们可以发信啊,虽然设置scrollBy(20,10),偏移量均为X轴、Y轴正方向上的正数,但是在屏幕的可视区域内,Button却向X轴、Y轴负方向上移动了。这就是因为参考系选择的不同,而产生的不同效果。

Scroller:

可以实现平滑移动的效果,而不再是瞬间完成的移动。

Demo:同样让子View跟随手指的滑动而滑动,但是在手指离开屏幕时,让子View平滑的移动到初始位置,即屏幕左上角。

代码:

1、通过自定义View的构造方法创建一个Scroller对象。

2、重写computeScroll()方法,实现模拟滑动。

3、startScroll开启模拟过程:

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

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

在onTouchEvent(MotionEvent event)中


相关文章

  • 侧滑FrameLayout的坑

    源码SlidingFrameLayout Android群英传第五章笔记·Android Scroll分析View...

  • Android Scroll分析

    Android Scroll分析 1.滑动原理 滑动一个View,本质上就是移动一个View,通过不断改变View...

  • Android Scroll分析

    本文是《Android群英传》的读书笔记 滑动效果是如何产生的? 不断的改变View的坐标 Android坐标系:...

  • Android Scroll分析

    前言 本篇谈论Android Scroll的应用以及如何在应用中添加滑动效果。你可以学到: 发生滑动效果的原因 如...

  • Android Scroll分析

    参考资料 郭霖 Scroller完全解析鸿洋 ViewDragHelper完全解析鸿洋 ViewDragHelpe...

  • Android Scroll 分析

    链接 Android Scroll 分析 这是我重读《Android 群英传》的时候做的读书笔记,这里主要讲了 A...

  • Android Scroll 滑动分析

    导语 滑动算是Android比较常用的效果了,滑动的操作具有很好的用户体验性。 主要内容 滑动效果是如何产生的 实...

  • Android Weekly Notes #413

    Android Weekly Issue #413 Restore RecyclerView scroll pos...

  • scroll-view的scrollTop不精确

    现象: scroll-view滚动回到顶部时候的scrollTop不为0 个人分析: scroll-view滚动监...

  • 第五章:Android Scroll 分析

    《Android1群英传》——个人读书笔记 5.1 滑动效果是如何产生的 要实现View的滑动,就必须监听的触摸事...

网友评论

      本文标题:Android Scroll分析

      本文链接:https://www.haomeiwen.com/subject/kjmpuftx.html