1.滑动效果是如何发生的
1.通过不断地改变View的坐标来实现这一效果
2.Android坐标系
(1)将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向。
(2)在触摸事件中使用getRawX(),getRawY()方法所获取的坐标同样是Android坐标系中的坐标。
3.视图坐标系
(1)描述子视图在父视图中的位置关系,视图坐标系原点是以父视图左上角为坐标原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向
4.触摸事件-----MotionEvent
(1)常用的事件常量(.....),在onTouchEvent(MotionEvent event)方法中通过event.getAction()方法来获取触摸事件的类型。
(2)#关于各种Android坐标系API ******************************************************* P90
2.实现滑动的七种方法
1.layout方法
(1)layout(left,top,right,bottom),对自己重新布局
2.offsetLeftAndRight()与offsetTopAndBottom()
(1)这个方法相当于系统提供的一个对左右,上下移动的API的封装
3.LayoutParams
(1)layoutParams保存了一个View的布局参数,可以使用getLayoutParams()来获取一个View的LayoutParas,通过setLayoutParams来改变其LayoutParams.
(2)因为通过父布局获取,所以前提是你必须要有一个父布局,不然系统无法获取LayoutParams
4.scrollTo与scrollBy
(1)scrollTo(x,y)表示移动到一个具体的坐标点(x,y)
(2)scrollBy(x,y)表示移动的增量为dx,dy
(3)scrollTo,scrollBy方法移动的是View的content,即让View的内容移动,如果在ViewGroup中使用scrollTo,scrollBy方法,那么移动的是所有的子View,但如果在View中使用,那么移动的将是View的内容,例如TextView,content就是它的文本.作用它们的父控件
(4)scrollBy(dx,dy)移动的是屏幕,控件会向反方向移动,要想实现跟随手指移动而滑动的效果,就必须将偏移量改为负值
int offsetX=x-lastX;
int offsetY=y-lastY;
((View)getParent()).scrollBy(-offsetX,-offsetY); //相当于父布局中所有控件都移动?
5.Scroller类
(1)通过Scroller类可以实现平滑移动的效果,而不再是瞬间完成的移动.
(2)使用Scroller类需要三个步骤
a.初始化Scroller
b.重写computeScroll()方法,实现模拟滑动---核心
c.startScroll开启模拟过程
(3)invalidate()方法来通知View进行重绘
6.属性动画
7.ViewDragHelper
(1)使用方法比较复杂
(2)步骤
a.初始化ViewDragHelper
b.重写事件拦截方法,将事件传递个ViewDragHelper进行处理
c.处理computerScroll()
d.处理回调Callback
................看前面博客
----------------Form《Android群英传》