Android事件传递机制(一)deprecated
来源:互联网 发布:淘宝号子账号怎么认证 编辑:程序博客网 时间:2024/04/29 08:01
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <com.cn.EventButton android:id="@+id/button" android:layout_width="250dip" android:layout_height="250dip" android:layout_centerInParent="true" android:text="Touch me" /></RelativeLayout>
MainActivity如下:
package com.cn;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;/** * Demo描述: * 测试Touch事件的传递,代码结构如下: * 1 定义一个Button 重写onTouchEvent()方法 * 2 在Activity中为该Button设置OnTouchListener * 3 重写Activity的onTouchEvent() * 注意: * 在以上的三步的结尾处均返回false,表示未处理完事件继续传播 * * 运行测试结果,输出的顺序为: * 1 EventButton OnTouchListener in MainActivity * 2 EventButton onTouchEvent * 3 MainActivity onTouchEvent * * 即Touch事件的处理顺序为: * 1 自定义button的listener * 2 自定义button的onTouchEvent()方法 * 3 Activity的onTouchEvent() * 所以,按照这个处理顺序只要在对于的方法结尾处返回true. * 那么对于该事件的处理就不会继续传递下去. * */public class MainActivity extends Activity {private EventButton mEventButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();} private void init(){ mEventButton=(EventButton) findViewById(R.id.button); mEventButton.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {System.out.println("---> EventButton OnTouchListener in MainActivity ");return false;}}); } @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); System.out.println("---> MainActivity onTouchEvent"); return false; } }
EventButton如下:
package com.cn;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.Button;public class EventButton extends Button {public EventButton(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onTouchEvent(MotionEvent event) {super.onTouchEvent(event);System.out.println("---> EventButton onTouchEvent");return false;} }
- Android事件传递机制(一)deprecated
- Android事件传递机制(四)deprecated
- Android事件传递机制(三)deprecated
- Android事件传递机制(二)deprecated
- Android事件传递机制(笔记)deprecated
- Android事件传递机制(一)
- Android View事件传递机制(一)
- Android事件传递机制(一)
- Android事件传递机制(一)
- Android View触摸事件传递机制 一
- android 事件传递机制
- android 事件传递机制
- android事件传递机制
- Android事件传递机制
- Android 事件传递机制
- Android事件传递机制
- Android事件传递机制
- Android事件传递机制
- cocos技巧总汇
- Android振动器(Vibrator)系统详解
- python和sqlite3数据库初探(简单登陆注册功能)
- python UnicodeDecodeError: 'ascii' codec can't decode
- unity3d简单的AI
- Android事件传递机制(一)deprecated
- [5月8日的脚本] 展示项所属的组织单元 (PowerShell)
- Perl 变量的作用my, our, local和全局变量
- Eclipse中启动Tomcat无任何反应
- 字符串反转
- iOS ASIHTTPRequest详解
- centos5.5开机登录后提示“您的会话只持续了不到10秒钟,如果您没有注销,就意味着安装可能出现了问题”
- 8本游戏开发书籍推荐
- 输出字符串子集