搜档网
当前位置:搜档网 › 【IT专家】关于Android触摸事件TouchEvent的传递及截取,研究心得。

【IT专家】关于Android触摸事件TouchEvent的传递及截取,研究心得。

【IT专家】关于Android触摸事件TouchEvent的传递及截取,研究心得。

本文由我司收集整编,推荐下载,如有疑问,请与我司联系关于Android触摸事件TouchEvent的传递及截取,研究心得。

2014/07/23 868 之前一直经常使用Touch的相关操作,但是对其中的具体细节一直没有详细的研究一下,今天研究了一下,感觉思路有点清晰了很多,再次记录一下。

?其中关于Android触摸事件相关的函数有:dispatchTouchEvent() | onInterceptTouchEvent()| onTouchEvent()

?由函数的名字也大概能够知道具体的作用是什么了:dispatchTouchEvent()负责触摸事件的分发,onInterceptTouchEvent()决定事件是不是在当前的View下拦截,onTouchEvent()负责触摸事件的处理消化。

?先说一下传递的机制和顺序吧。

?我们建立一个这样的场景,就是在一个Activity中有一个View,名叫:Layout_out_0,在Layout_out_0中还有嵌套在里面的一个View,叫Layout_inner_0,相信大家也能够想象是个什么东西吧。

?

?当你触摸屏幕的时候,首先产生事件的顺序为:DOWN—— MOVE(这个事件的产生和你触摸时的触摸时间的长度有关,如果时间极短,就不会产生,如果一直按住,就会一直产生MOVE)—— UP(手指抬起的时候);当然这个顺序是固定的,事件的处理也是一个传递消化完毕之后,才开始第二个事件的传递消化,很固定。

?好进入重点,DOWN事件产生首先经由Activity的dispatchTouchEvent(),在Activity中是没有方法onInterceptTouchEvent()方法的,也就无法使产生的事件被拦截了,接着进入等级仅次于Activity的容器组件View中,也是经由dispatchTouchEvent()(不过我在测试程序中尝试把该函数的返回值

super.dispatchTouchEvent()修改为false或者是true结果发现导致事件无法正常的分发,因此不建议大家重写该回调函数),在经过onInterceptTouchEvent()决定是不是要拦截该事件,如果onInterceptTouchEvent()返回true则表示要拦截,那么事件就不会再继续往子控件传递了(否则继续重复上面的步骤,再次进入子控件的

安卓按钮单击事件

第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!!! 对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。 第二种:内部类作为监听器 将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!! 第三种:Activity本身作为事件监听器

这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity 的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。 上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。 第四种:外部类作为监听器 ButtonTest类 当用户单击button按钮时,程序将会触发MyButtonListener监听器 外部MyButtonListener类

AndroidUI基本控件与事件处理

《Android基础应用》 AndroidUI基本控件与事件处理 ?本章任务 ?使用Android开发本息计算器程序 ?使用Android开发华氏-摄氏温度转换器 ?本章目标 ?熟悉掌握本章基本控件的使用 ?熟练掌握Android常用事件 1.Android基本控件 Android应用开发的一项内容就是用户界面的开发,Android提供了大量功能丰富的UI组件,大部分放在android.widget包及其子包android.view包及其子包 在Android当中View类是最基本的一个UI类,基本上所有的高级UI组件都是继承View类而实现的。如Button(按钮),list(列表),EditText(编辑框),RadioButton(多选按钮),Checkbox(选择框)等都是View类 在Android中,我们可以在Xml文件中使用UI组件也可以在java文件中创建UI组件官方建议采用xml方式,这样的话能够实现界面和代码分离 1.1TextView和EditText TextView是一种用于显示字符串的控件 EditText则是用来输入和编辑字符串的控件,EditText是一个具有编辑功能的TextView

TextView和EditText基本属性 ●android:id设置ID,通过编码可以找到这个组件 ●android:layout_width设置在屏幕上的宽度 ●android:layout_height设置在屏幕上的高度 fill_parent强制性地使构件扩展,以填充布局单元内尽可能多的空间 wrap_content强制性地使视图扩展以显示全部内容 ●android:text设置显示的文本信息 ●android:textColor设置文本颜色 ●android:textSize设置文本尺寸

Android OnTouchListener触屏事件接口

Android OnTouchListener触屏事件接口 OnTouchListener接口是用来处理手机屏幕事件的监听接口,当为View的范围内触摸按下、抬起或滑动等动作时都会触发该事件。该接口中的监听方法签名如下。 Java代码: public boolean onT ouch(View v, MotionEvent event) 参数v:参数v同样为事件源对象。 参数event:参数event为事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。 节中介绍了一个在屏幕中拖动矩形移动的案例,本节将继续采用该案例的思路,通过监听接口的方式实现在屏幕上拖动按钮移动的案例。开发步骤如下。 创建一个名为Sample的Android项目。 准备字符串资源,打开strings.xml文件,用下列代码替换原有代码。 Java代码: Hello World, Sample Sample 位置 说明:与前面介绍的案例相同,对程序中用到的字符串资源进行定义。 开发布局文件。打开res/layout目录下的main.xml,用下列代码替换其原有代码。

Java代码: