Android中有两种坐标系,分别为Android坐标系和视图坐标系
- Android坐标系:屏幕的左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,原点向下是Y轴正方向
- 视图坐标系:
getHeight():获取View自身高度
getWidth():获取View自身宽度
getTop():获取View自身顶边到其父布局顶边的距离
getLeft():获取View自身左边到其父布局左边的距离
getRight():获取View自身右边到其父布局左边的距离
getBottom():获取View自身底边到其父布局顶边的距离
getX():获取点击事件距离控件左边的距离,即视图坐标
getY():获取点击事件距离控件顶边的距离,即视图坐标
getRawX():获取点击事件距离整个屏幕左边距离,即绝对坐标
getRawY():获取点击事件距离整个屏幕顶边的的距离,即绝对坐标
实现View滑动的六种方法
- layout()
- offsetLeftAndRight()
- offsetTopAndBottom()
- LayoutParams(改变布局参数)
- scollTo
- scollBy
- Scroller
Android视图动画它提供了AlphaAnimation,RotateAnimation,TranslateAnimation,ScaleAnimation四种动画方式,并提供了AnimationSet动画集合来混合使用多中动画。
视图动画相比属性动画视图动画非常大的缺陷是不具有交互性,所以视图动画只能做普通的动画效果
点击事件
当我们点击屏幕,就产生了触摸事件,这个事件被封装成了一个类,而当这个类产生后,那么系统就会将这个类传递给View的层级,这个类在View的层级传递的过程就是点击事件分发
点击事件有三个重要的方法它们分别是:
- dispatchTouchEvent(MotionEvent ev):用来进行事件的分发
- onInterceptTouchEvent(MotionEvent ev):用来进行事件的拦截,在dispatchTouchEvent()中调用,需要注意的是View没有提供该方法
- onTouchEvent(MotionEvent ev):用来处理点击事件,在dispatchTouchEvent()方法中进行调用
Activity的构成:
一个Activity包含一个window对象,window对象是由PhoneWindow来实现的,PhoneWindow将DecorView做为整个应用窗口的根View,而这个DecorView又将屏幕划分为两个区域一个是TitleView一个是ContentView
MeasureSpec类测量模式分为三种:
- UNSPECIFIED:未指定模式,View想多大就多大,父容器不做限制,一般用于系统内部的测量。
- AT_MOST:最大模式,对应于wrap_comtent属性,只要尺寸不超过父控件允许的最大尺寸就行。
- EXACTLY:精确模式,对应于match_parent属性和具体的数值,父容器测量出View所需要的大小,也就是specSize的值。
View的draw流程
1.如果有设置背景,则绘制背景
2.保存canvas层
3.绘制自身内容
4.如果有子元素则绘制子元素
5.绘制效果
6.绘制装饰品(scrollbars)
View分类:自定义View、自定义ViewGroup(继承View和继承系统控件)