android控件之间事件传递

public boolean dispatchTouchEvent(MotionEvent ev){}

用于事件的分发。Android中全部的事件都必须经过这种方法的分发。然后决定是自身消费当前事件还是继续往下分发给子控件处理。返回true表示不继续分发,事件没有被消费。

public boolean onInterceptTouchEvent(MotionEvent arg0){}

用于事件的处理,返回true表示消费处理当前事件,返回false则不处理。交给子控件进行继续分发。

public boolean onTouchEvent(MotionEvent arg0){}

负责事件的拦截。返回true的时候表示拦截当前事件,不继续往下分发,交给自身的onTouchEvent进行处理。

返回false则不拦截,继续往下传。

举例说明三个方法之间的传递关系,增加界面例如以下图:

传递关系例如以下:

例:Android
Viewpage禁止滑动屏幕
(假设是其它view能够自己定义控件,然后重写这几个方法)

Android事件机制是从父View传向子View的。能够去检測你当前子View是不是在有可滑动控件等,决定事件是否拦截,可是这个麻烦,并且并不能解决全部的问题(必须检測触摸点是否在这个控件上面)。事实上有比較简单的方法。在你嵌套的控件中注入ViewPager实例,然后在onTouchEvent,onInterceptTouchEvent。dispatchTouchEvent里面告诉父View。也就是ViewPager不要拦截该控件上的触摸事件。

requestDisallowInterceptTouchEvent(true) ; true则禁止

子view中加入代码一般例如以下:

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_MOVE:

requestDisallowInterceptTouchEvent(true);

break;

case MotionEvent.ACTION_UP:

case MotionEvent.ACTION_CANCEL:

requestDisallowInterceptTouchEvent(false);

break;

}

}

当用户按下的时候。我们告诉父组件,不要拦截我的事件(这个时候子组件是能够正常响应事件的),拿起之后就会告诉父组件可以阻止。

public boolean dispatchTouchEvent(MotionEvent ev){}  用来分发TouchEvent

时间: 2024-10-12 08:33:07

android控件之间事件传递的相关文章

Android控件onClick事件

Android控件onClick事件可以用如下三种方式来实现 1. 实现onClick方法 在layout的xml中指定onClick方法, Activity中实现该方法.  通常用于Button. File: res/layout/activity_main.xml <Button android:id="@+id/mybutton" android:layout_width="wrap_content" android:layout_height=&quo

android 控件onClick事件的4种实现方式

1. <span style="white-space:pre"> </span>TextView tv = (TextView) findViewById(R.id.tv); tv.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub //do something... }

Android 控件的触摸事件传递与处理

了解Android控件的触摸事件传递与处理对我们日常开发中自定义控件和触摸事件冲突解决有重大意义.Android控件的触摸事件传递和处理主要有以下几个方法,下面一一介绍. 一.与触摸事件有关的几个方法 boolean dispatchTouchEvent(MotionEvent ev);                                                                                               接收到触摸事件时,是否

Android IOC 之 注解绑定控件 以及事件 事例 代码简单注释讲解

想必开发过android的都使用过一些 框架,然而框架里都会使用一些,注解来帮助我们,节省大量的代码开发量.同时也使代码更加的简洁. 但是注解是通过java反射来实现的当然可能会牺牲掉一些性能. 以下是本人写的一个较为简单的绑定控件,并且触发其OnclickListem 事件. //直接先看下注解方法.比较简单,清晰 public class MainActivity extends FragmentActivity { <span style="white-space:pre"

Android控件篇

Android中提供了丰富的UI空间.为了最大限度地发挥平台的性能.每个开发人员必须熟练掌握UI控件尤其是经常使用的UI控件.并能依据须要呈现的内容选择最恰当的控件. Android提供了XML配置和Java两种方式来配置控件属性. 通常.XML配置有利于扩展和多目标环境的适配,但因为添加了XML解析过程而使性能略低且无法动态变化,而Java方式尽管性能较好.但因为目标环境多变的Android设备而言,其扩展性通常无法满足项目的须要.在实际的开发工作中,开发人员可依据实际情况的须要及两种方法的优

Android 控件属性介绍

1.LinearLayout(线性布局): 可以分为水平线性:android:orientation= " horizontal " 和垂直线性:android:orientation= "vertical"  2.RealtiveLayout(相对布局): (1)在相对布局中属性值为true或false的有:android:layout_centerHrizontal  程度居中 android:layout_centerVertical   垂直居中 andro

android控件属性

1.LinearLayout(线性布局): 可以分为水平线性:android:orientation= " horizontal " 和垂直线性:android:orientation= "vertical" 2.RealtiveLayout(相对布局): (1)在相对布局中属性值为true或false的有:android:layout_centerHrizontal  程度居中 android:layout_centerVertical   垂直居中 androi

Android控件介绍

Android控件介绍 多选按钮(CheckBox) CheckBox有两个常用的事件,OnClickListener事件和OnClickChangeListener事件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_w

Android控件(2)RadioButton&amp;RadioGroup

抄自: http://www.cnblogs.com/wt616/archive/2011/06/20/2085531.html 学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握RadioGroup选中状态变换的事件(监听器) RadioButton和CheckBox的区别: 1.单个RadioButton在选中后,通过点击无法变为未选中 单个Che