当前位置: > 科技>正文

android控件触摸事件(简述android触屏事件的处理)

2024-08-10 19:20:35 互联网 科技

本篇目录:

1、Android-View的事件分发及拦截-父控件和子控件都处理触摸事件的方式2、Android坐标系、视图坐标系与触控事件(MotionEvent)3、如何让Android中的组件不响应触屏事件

Android-View的事件分发及拦截-父控件和子控件都处理触摸事件的方式

1、(1) 事件从Activity.dispatchTouchEvent()开始传递,只要没有被停止或拦截,从最上层的View(ViewGroup)开始一直往下(子View)传递。子View可以通过onTouchEvent()对事件进行处理。

2、InputManager 负责从硬件接收输入事件,并将事件通过 ViewRootImpl 分发给当前激活的窗口处理,进而分发给 View。Window 和 InputManagerService 之间通过 InputChannel 来通信,底层通过 socket 进行通信。

android控件触摸事件(简述android触屏事件的处理)  第1张

3、在view的相关类中,该方法的主要作用是消费触摸事件。

4、事件的起源:我们都知道触摸事件是从Activity的dispatchTouchEvent方法开始的。再调用父类的super.dispatchTouchEvent(ev),事件向派发。

Android坐标系、视图坐标系与触控事件(MotionEvent)

1、第一根手指头触摸到屏幕(之前屏幕上没有手指头),一次事件触摸流的开始,很简单,但是很重要,这里也要简单的提一下,在ViewGroup中也是根据这次事件的坐标来决定该次事件流交给谁来处理,直到这次事件流完成(ACTION_UP)。

2、android中的另外一个坐标系叫做视图坐标系,它描述的是子视图在父视图中的位置。再贴一张图来说明,如下:如上图所示,视图坐标系是以父视图的左上角为坐标原点的。相应的原点向右为x轴正方向,原点向下为y轴正方向。

android控件触摸事件(简述android触屏事件的处理)  第2张

3、MotionEvent 类同时提供了记录当前坐标的函数(getX(),getY())。event.getDownTime()用来记录event发生时的时间,event.getEventTime()用来记录最近一个ACTION_MOVE发生时的时间。

4、Android编程中Touch事件中的MotionEvent已经记录了触摸的x y坐标了。int x = event.getX(); 得到触摸的x轴坐标。int y = event.getY();得到触摸的y轴坐标。

5、当你触到按钮时,x,y是相对于该按钮左上点(控件本身)的相对位置。而rawx,rawy始终是相对于屏幕的位置。

如何让Android中的组件不响应触屏事件

1、设置上层布局的属性 android:clickable="true"就行了。textview的宽度不能设置成wrap_content,设置成fill_parent或者match_parent。然后textview.setGravity(Gravity.RIGHT)。

android控件触摸事件(简述android触屏事件的处理)  第3张

2、window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));2 window.setOutsideTouchable(true);只有同时设置PopupWindow的背景和可以响应外部点击事件,它才能“真正”响应外部点击事件。

3、首先设定TextView的clickable属性为true。

到此,以上就是小编对于简述android触屏事件的处理的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

事件

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本站联系的,一经查实,本站将立刻删除。