Android23-视图坐标系以及MotionEvent事件
16lz
2021-01-23
1. Android坐标系
2017-05-03_13-47-30.pngAndroid坐标系如图,
系统提供了getLocationOnScreen(inlocation[])方法来来获取android坐标系中国年点的位置,另外,在触控事件中使用getRawX()、getRawY()方法所获得的坐标同样时Android坐标系中的坐标
2. 视图坐标系
2017-05-03_13-48-11.png视图坐标系描述了子视图在父视图中的位置关系,具体如图,在触控事件中,通过getX()、getY()所获得的坐标就是视图坐标系中的坐标。
3. 触控事件--MotionEvent
- MotionEvent中封装了一些常用的事件常量,它定义了触控事件的不同类型。
2017-05-03_14-01-42.png//单点触摸按下动作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方法来进行筛选。大致模版如下:
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;}
- 此外,安卓还提供了丰富的API来获取坐标值,相对距离等,具体如图:
这些方法可以分成如下两类:
- View提供的获取坐标方法
getTop(): 获取view自身的顶部到其父布局顶部的距离;
getLeft():获取view自身左边到其父布局左边的距离;
getRight(): 获取view自身右边到其父布局左边的距离;
getBottom(): 获取view自身底部到其父布局顶部的距离;
MotionEvent提供的方法
getX(): 获取触摸点距离控件左边的距离,即视图坐标。
getY(): 获取触摸点距离控件定边的距离,即视图坐标。
getRawX: 获取触摸点距离屏幕左边的距离,即绝对坐标。
getRawY: 获取触摸点距离屏幕顶边的距离,即绝对坐标。
更多相关文章
- [Android]ButterKnife-无尽之刃-绑定视图控件和事件的快速开发工
- 如何获取Android RecyclerView滑动的距离
- Android 如何提前知道fling velocity的距离、时间 根据滑动距离
- Android UI系统控件进阶(四)—网格视图控件GridView
- Android View视图------Android如何创建一个view。
- Android 视图层级分析辅助工具详解
- Android开发笔记(一百二十二)循环器视图RecyclerView