Android Scroll分析 (一) 滑动效果是如何产生的

来源:互联网 发布:合肥网络传销公司名单 编辑:程序博客网 时间:2024/05/22 04:56

1.滑动效果是如何产生的

要实现View的滑动,就必须监听用户触摸的事件,并根据事件传入的坐标,动态且不断地改变View的坐标,从而实现View跟随用户触摸的滑动而滑动.
1.1 Android 坐标系
将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向.
系统提供了getLocationOnScreen(int location[])方法来获取Android坐标系中点的位置,即该视图左上角在Android坐标系中的坐标.
在触摸事件中使用getRawX() getRawY()方法所获得的坐标同样是Android坐标系中的坐标.

1.2视图坐标系

处理Android坐标系外,Android中还有视图坐标系,它表示子视图在父视图中的位置关系,视图坐标系同样是以原点向右为X轴正方向,向下为Y轴正方向,区别在于它的原点是以父视图左上角为坐标原点.
在触摸事件中,通过getX() getY()所获得的坐标就是视图坐标系中的坐标.

1.3触摸事件–MotionEvent

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;

在onTouchEvent(MotionEvent event)方法中通过event.getAction()方法来获取触摸事件的类型,并使用switch-case方法来进行筛选:

//在onTouchEvent(MotionEvent event)方法中通过event.getAction()方法来获取触摸事件的类型,并使用switch-case方法来进行筛选:@Overridepublic boolean onTouchEvent(MotionEvent event){    //获取当前输入点的X/Y坐标(视图坐标)    int x=(int)event.getX();    int y=(int)event.getY();    switch(event.getAction()){        case MotionEvent.ACTION_DOWN:            //处理输入的按下事件            break;        case MotionEvent.ACTION_MOVE:            //处理输入的移动事件            break;        case MotionEvent.ACTION_UP:            //处理输入的离开事件            break;    }    return true;}

系统提供了获取坐标值,相对距离的方法,这些方法可以分为如下两个类型:

//View提供的获取坐标方法getTop()://获取到的是View自身的顶边到其父布局顶边的距离getLeft()://View自身的左边到其父布局左边的距离getRight()://View自身的右边到其父布局左边的距离getBottom()://View自身的底边到其父布局顶边的距离//MotionEvent()提供的方法getX()://获取点击事件距离控件左边的距离,即视图坐标getY()://距离控件顶边的距离,即视图坐标getRawX()://距离整个屏幕左边的距离,即绝对坐标getRawY()://距离整个屏幕顶边的距离,即绝对坐标
1 0
原创粉丝点击