View的位置参数及其Scroller类的理解
来源:互联网 发布:ubuntu 12 万m光口 编辑:程序博客网 时间:2024/06/08 00:06
Anroid
自定义View
View的位置参数
1.位置参数
- left = getLeft()
- right = getRight()
- top = getTop()
- bottom = getBottom()
x和y是View左上角的坐标,translationX和translationY是View左上角相对于容器的偏移量。这几个参数都是相对于父容器的坐标。
- x = left + translationX getX()
- y = top + translationY getY()
getRawX()是相对于手机屏幕的x坐标,同样的,getRawY()是相对于手机屏幕的y坐标。
2.MotionEvent滑动参数
- ACTION_DOWM:手指刚接触屏幕。
- ACTION_MOVE:手指在屏幕上移动。
- ACTION_UP:手指在屏幕上松开的一瞬间。
一个点击事件通常是:DOWN->UP
一个滑动事件通常是:DOWN->MOVE->MOVE->…->MOVE->UP
3.TouchSlop
TouchSlop是系统所能识别出的被认为是滑动的最小距离。
获取这个常量:ViewConfiguration.get(getContext()).getScaledTouchSlop();
4.Scroller的使用理解
我们先来看一段套路代码:
Scroller scroller = new Scroller(getContext()); //缓慢滚动到制定位置 private void smoothScrollTo(int destX ,int destY){ int scrollX = getScrollX(); int scrollY = getScrollY(); int deltaX = destX - scrollX; int deltaY = destY - scrollY; scroller.startScroll(scrollX,scrollX,deltaX,deltaY,1000); invalidate(); } @Override public void computeScroll() { if (scroller.computeScrollOffset()){ scrollTo(scroller.getCurrX(),scroller.getCurrY()); postInvalidate(); } }
Scroller类其实是一个在自身中存储各种运动参数的类,并没有关于真正滑动的功能,实现滑动的是scrollTo(x,y)可以理解是在他类的内部进行的滑动设想:你现在这个类中给他一个关于滑动的理想轨迹(从一个坐标,到另一个坐标和间隔时间),然后scroller根据这些进行规划(根据时间流逝的百分比算出应该滑动到的坐标),在重绘触发的回调函数computeScroll()中再滑动到置顶的位置scrollTo(scroller.getCurrX(),scroller.getCurrY())。
总结一下就是,Scroller并不能实现View的滑动,它需要配合View的computeScroll()方法才能实现弹性滑动的效果,它不断让View重绘,而每一次重绘都会导致View进行进行小幅度滑动,而多次小幅度滑动就组成了弹性滑动,这就是Scroller的原理。
- View的位置参数及其Scroller类的理解
- view的位置参数理解
- 深入理解View(一):View的位置参数信息
- View的位置参数
- view的位置参数:
- View 的位置参数
- View的位置参数
- View的位置参数
- View 的位置参数
- View的位置参数
- 在Android中动画移动一个View的位置,采用Scroller类实现
- View的位置参数简介
- Android View的位置参数
- [Android]:View的位置参数
- Android View的位置参数
- 关于Android的Scroller类和View
- Android Scroller的理解
- Android Scroller 的理解
- 基于Socket编程的远程控制PC音乐播放器App(二)
- loadrunner linux的temp文件清理
- mySql\oracle分页机制
- Javascript本地日志记录(限制文件个数,限时文件大小)
- keras 实现CNN 进行手写字符识别
- View的位置参数及其Scroller类的理解
- Android View 截屏功能的实现
- spring boot 整合mybatis
- gdufe acm 1054 变形课
- JavaWeb开发中修改session的设置
- 13 多种IO函数
- 关于XAMPP中XDBUG扩展
- python高级函数v1.0
- 获取Android设备唯一标识码