Android 触摸事件 在自定义控件中常用

本文详细解析了Android中触摸事件的处理流程,包括dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent的作用及交互过程。同时介绍了MotionEvent的基本用法,如通过ev.getAction()获取触摸类型,以及如何区分getX()和getRawX()等坐标系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()

dispatchTouchEvent是处理触摸事件分发,事件(多数情况)是从Activity的dispatchTouchEvent开始的。执行

super.dispatchTouchEvent(ev),事件向下分发。

onInterceptTouchEventViewGroup提供的方法,默认返回false,返回true表示拦截。

onTouchEvent是View中提供的方法,ViewGroup也有这个方法,view中不提供onInterceptTouchEvent。view中默认返回true,表示消费了这个事件。


触摸事件从Activiy开始 由onInterceptTouchEvent来判断是都在此终结触摸事件


二、MotionEvent ev

单手指操作:ACTION_DOWN---ACTION_MOVE----ACTION_UP---ACTION_OUTSIDE

ev.getAction() 获取触摸的类型

ev.getX() ev.getY() 触摸在屏幕上的位置 相对于自身的位置坐标 就是从action_down开始的操作

ev.getRawX() ev.getRawY() 触摸在屏幕上的位置 相对于屏幕的位置坐标

getX()是表示view相对于自身左上角的x坐标,而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值