Android Scroll分析 (一) 滑动效果是如何产生的
16lz
2021-01-23
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()://距离整个屏幕顶边的距离,即绝对坐标
更多相关文章
- android2.3 View视图框架源码分析之一:android是如何创建一个vie
- 画廊视图Gallery
- 阅读《Android 从入门到精通》(21)——滚动视图
- Android sqlite约束-视图-检查
- android中的坐标变换
- Android在源图片上的XY坐标再画一个图片
- ANDROID L——Material Design详解(视图和阴影)
- Android23-视图坐标系以及MotionEvent事件
- [Android]ButterKnife-无尽之刃-绑定视图控件和事件的快速开发工