Android View体系.md
系统View继承关系
Android坐标相关
Android的坐标系
- Android坐标系
- View(视图)坐标系
View自身的坐标
通过如下方法可以获得View到其父控件(ViewGroup)的距离。
- getTop():获取View自身顶边到其父布局顶边的距离。
- getLeft():获取View自身左边到其父布局左边的距离。
- getRight():获取View自身右边到其父布局左边的距离。
- getBottom():获取View自身底边到其父布局顶边的距离。
MotionEvent获取焦点坐标
- getX():获取点击事件距离控件左边的距离,即视图坐标。
- getY():获取点击事件距离控件顶边的距离,即视图坐标。
- getRawX():获取点击事件距离整个屏幕左边的距离,即绝对坐标。
- getRawY():获取点击事件距离整个屏幕顶边的距离,即绝对坐标。
View的滑动方式:
当点击事件传到Vi e w时,系统记下触摸点的坐标,手指移动时系统记下移动后触摸的坐标并算出偏移量,并通过偏移量来修改View的坐标。实现方法如下:
- layout() 方法
- offsetLeftAndRight(),offsetTopAndBottom()
- 修改LayoutParams
- 使用动画:
- View动画
- 属性动画
- View的scrollTo(),scrollBy()方法
- Scroller类
- ViewDragHelper
scrollTo()、scrollBy()
- scrollTo(x,y)表示移动到一个具体的坐标点,而scrollBy(dx,dy)则表示移动的增量为dx、dy。其中,scollBy最终也是要调用scollTo的。
- 他们移动的是屏幕,不是View本身。
- scollTo/scollBy方法进行滑动时,这个过程是瞬间完成的。
Scroller
- scollTo/scollBy方法进行滑动时,这个过程是瞬间完成的,体验不好,使用 Scroller 来实现有过渡效果的滑动。
- Scroller本身是不能实现View的滑动的,它需要与View的computeScroll()方法配合才能实现弹性滑动的效果。
动画
View的Motion事件分发机制
View的绘制流程
自定义View
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LT的编程笔记!