View基础知识
# View基本概念
View: View是一种界面层的控件的抽象,代表一个控件
ViewGroup: 控件组同时也是控件的容器,包含一组View。
ViewGroup容器包含子View,涵盖事件的分发、处理
View只有事件的处理
# 手机屏幕的操作
最基本的操作类型:
down
:手指按下move
:手指在屏幕上移动up
:手指从屏幕上离开
对屏幕上任何一个操作,系统都会创建一个MotionEvent对象来对应这个操作
# MotionEvent触摸事件
int ACTION_DOWN = 0; // down
int ACTION_MOVE = 2; // move
int ACTION_UP = 1; // up
1
2
3
2
3
事件产生的顺序为:down -> move -> move ... -> up
getAction()
:得到事件类型值
getX()
:当前视图的x轴坐标
getRowX()
:屏幕原点x坐标
getY()
:当前视图的y轴坐标
getRowY()
:屏幕原点y坐标
Activity的事件分发:
// 分发事件
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
return super.dispatchTouchEvent(ev)
}
// 处理事件的回调
override fun onTouchEvent(event: MotionEvent?): Boolean {
return super.onTouchEvent(event)
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
事件对象被系统创建后,首先会调用对应Activity对象的
dispatchTouchEvent()
进行分发down在分发给视图对象的过程中要确定消费者(
onTouchEvent()
返回true),如果都返回false,那事件的消费者只能是Activity了后面的move和up事件,将事件分发给消费者(可能是视图对象,也可能是Activity)
当前事件的消费者只是决定了下一个事件优先交给它处理
每个事件都需要有一个消费者
编辑 (opens new window)
上次更新: 2022/06/04, 11:36:35