Android UI 学习 自定义的布局 平滑移动 VelocityTracker()
/**
* Helper for tracking the velocity of touch events, for implementing
* flinging and other such gestures. Use {@link #obtain} to retrieve a
* new instance of the class when you are going to begin tracking, put
* the motion events you receive into it with {@link #addMovement(MotionEvent)},
* and when you want to determine the velocity call
* {@link #computeCurrentVelocity(int)} and then {@link #getXVelocity()}
* and {@link #getXVelocity()}.
*/
这是注释,在android 应用程序的开发过程中,可以实现比较绚丽,比如让界面切换平滑的滚动,系统提供的应用在特效这方面提供简单的动画接口,
自定义控件开发做一些简单的介绍,
自定义布局控件自然是要继承某个View 或 ViewGroup
开发自定义的ViewGroup 自然是要继承ViewGroup 类,
在继承这个类之后,必须重写的方法就是
OnLayout(boolean changed ,int i int t int r ,int b);
想要对布局控件以及其子控件的尺寸进行精确控制,重写
onMeasure(int widthMeasure,int heightMeasureSpec);
介绍关于自定义控件进行平滑的移动,并能够根据手势的情况禅城惯性滑动的效果
滑动效果需要的各种工具
android.view.VelocityTracer;
android.view.Scroller;
android.view.ViewConfiguration
VelocityTracker从字面意思理解那就是速度追踪器了,在滑动效果的开发中通常都是要使用该类计算出当前手势的初始速度(不知道我这么理解是否正确,对应的方法是velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity))并通过getXVelocity或getYVelocity方法得到对应的速度值initialVelocity,并将获得的速度值传递给Scroller类的fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)方法进行控件滚动时各种位置坐标数值的计算,API中对fling方法的解释是基于一个fling手势开始滑动动作,滑动的距离将由所获得的初始速度initialVelocity来决定。关于ViewConfiguration的使用主要使用了该类的下面三个方法:
configuration.getScaledTouchSlop()//获得能够进行手势滑动的距离
configuration.getScaledMinimumFlingVelocity()//获得允许执行一个fling手势动作的最小速度值
configuration.getScaledMaximumFlingVelocity()//获得允许执行一个fling手势动作的最大速度值
需要重写的方法至少要包含下面几个方法:
onTouchEvent(MotionEvent event)//有手势操作必然少不了这个方法了
computeScroll()//必要时由父控件调用请求或通知其一个子节点需要更新它的mScrollX和mScrollY的值。典型的例子就是在一个子节点正在使用Scroller进行滑动动画时将会被执行。所以,从该方法的注释来看,继承这个方法的话一般都会有Scroller对象出现。
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1114/558.html