- 浏览: 829010 次
- 性别:
- 来自: 哈尔滨
文章分类
最新评论
-
doloveme:
$sudo cp MONACO_Linux.ttf /usr/ ...
terminator 的配置 -
腾讯rep:
lowser
RSA加密算法c++简单实现 -
csuhanyong:
好YD啊,好YD
一图流:机械键盘各轴区别 -
doloveme:
1。其中:extman ,extmail下载http://ww ...
Ubuntu下安装postfix+extmail邮件服务器 -
doloveme:
repo sync出现“fatal: '../platform ...
Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA
但是对于VIEW来说,我们如果不改变DRAW,不需要继承,所以如果想响应事件,则需要
当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用。不过,为了侦听这个事件,你必须扩展这个类并重写该方法。很明显,扩展每个你想使用的视图对象(只是处理一个事件)是荒唐的。这就是为什么视图类也包含了一个嵌套接口的集合,这些接口含有实现起来简单得多的回调函数。这些接口叫做事件侦听器 event listeners ,是用来截获用户和你的界面交互动作的“门票”。
1.只有一个ACTIVITY得情况:
当鼠标键按下时(即触摸)
首先触发dispatchTouchEvent
然后触发onUserInteraction
再次onTouchEvent
如果是点击的话,紧跟着下列事件(点击分俩步,ACTION_DOWN,ACTION_up)
触发dispatchTouchEvent
再次onTouchEvent
当ACTION_up事件时不会触发onUserInteraction(可查看源代码)
当键盘按下时
首先触发dispatchKeyEvent
然后触发onUserInteraction
再次onKeyDown
如果按下紧接着松开,则是俩步
紧跟着触发dispatchKeyEvent
然后触发onUserInteraction
再次onKeyUp
注意与触摸不同,当松开按键时onUserInteraction也会触发。
Activity.dispatchTouchEvent(MotionEvent) - 这允许你的活动可以在分发给窗口之前捕获所有的触摸事件。
(同理 dispatchKeyEvent)
onUserInteraction :Called whenever a key, touch, or trackball event is dispatched to the
* activity.
2.activity里有一个LAYOUT,在布局里有个按钮。
如果在按钮上触发一个CLICK事件
首先触发ACTIVITY的dispatchTouchEvent
然后触发ACTIVITY的onUserInteraction
然后触发LAYOUT的dispatchTouchEvent
然后触发LAYOUT的onInterceptTouchEvent
然后触发BUTTON的onTouch(这是一个ACTION_DOWN事件)
紧跟着是一个ACTION_UP事件
触发ACTIVITY的dispatchTouchEvent
注意不再触发ACTIVITY的onUserInteraction,因为他对ACTION_UP不起作用。
然后触发LAYOUT的dispatchTouchEvent
然后触发LAYOUT的onInterceptTouchEvent
然后触发BUTTON的onTouch
最后触发BUTTON的onClick.
如果你在ONTOUCH事件里返回true,消费了此事件,那么ONCLICK将不会被响应
但是如果你不写ONCLICK事件,而ONTOUCH事件返回FLASE
那么最终事件序列: 11-23 17:19:44.313: INFO/activity(803): dispatchTouchEvent
11-23 17:19:44.313: INFO/activity(803): onUserInteraction
11-23 17:19:44.322: INFO/LinearLayout(803): dispatchTouchEvent
11-23 17:19:44.333: INFO/LinearLayout(803): onInterceptTouchEvent
11-23 17:19:44.341: INFO/button(803): onTouch
11-23 17:19:44.441: INFO/activity(803): dispatchTouchEvent
11-23 17:19:44.451: INFO/LinearLayout(803): dispatchTouchEvent
11-23 17:19:44.451: INFO/LinearLayout(803): onInterceptTouchEvent
11-23 17:19:44.461: INFO/button(803): onTouch
即事件不会再向上传递,估计是ONCLICK有默认响应不处理,而ONCLICK不会有返回值。
但是如果是继承了一个VIEW而且又覆写了onTouchEvent,他返回FALSE
当触摸事件发生时 11-23 17:25:59.691: INFO/activity(831): dispatchTouchEvent
11-23 17:25:59.691: INFO/activity(831): onUserInteraction
11-23 17:25:59.701: INFO/LinearLayout(831): dispatchTouchEvent
11-23 17:25:59.701: INFO/LinearLayout(831): onInterceptTouchEvent
11-23 17:25:59.701: INFO/button(831): onTouch
11-23 17:25:59.701: INFO/Button(831): onTouchEvent
11-23 17:25:59.701: INFO/LinearLayout(831): onTouchEvent
11-23 17:25:59.701: INFO/activity(831): onTouchEvent
11-23 17:25:59.822: INFO/activity(831): dispatchTouchEvent
11-23 17:25:59.822: INFO/activity(831): onTouchEvent
奇怪的是,ONCLICK事件不再发生。
VIEW和ACTIVITY本身都有相应键盘事件的ONKEYUP和ONKEYDOWN
对于VIEW来说,你可以setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(
来响应键盘事件,如果你既对VIEW写了这个侦听,又覆写了ONKEYUP,DOWN事件,那么首先
进入ONKEY
比如用反向键把焦点切换到按钮上
事件序列: 11-23 17:23:14.392: INFO/activity(803): dispatchKeyEvent
11-23 17:23:14.404: INFO/activity(803): onUserInteraction
11-23 17:23:14.412: INFO/LinearLayout(803): dispatchKeyEvent
11-23 17:23:14.412: INFO/button(803): onKey
11-23 17:23:14.422: INFO/activity(803): onKeyUp
当按回车时 11-23 17:35:55.692: INFO/activity(831): dispatchKeyEvent
11-23 17:35:55.713: INFO/activity(831): onUserInteraction
11-23 17:35:55.722: INFO/LinearLayout(831): dispatchKeyEvent
11-23 17:35:55.732: INFO/button(831): onKey
11-23 17:35:55.813: INFO/activity(831): dispatchKeyEvent
11-23 17:35:55.824: INFO/activity(831): onUserInteraction
11-23 17:35:55.831: INFO/LinearLayout(831): dispatchKeyEvent
11-23 17:35:55.831: INFO/button(831): onKey
11-23 17:35:55.953: INFO/button(831): onClick
最后补充下:不需要那么复杂,如果对于控件想响应他的触摸事件,如果继承
则覆写ONTOUCHEVENT,如果不覆写则侦听ONTOUCH
如果覆写了ONTOUCHEVENT,则不再响应ONCLICK事件
如果写了ONCLICK,则不要再搞ONTOUCHEVENT了
所以ONCLICK和ONTOUCHEVENT二取一,另外如果有ONTOUCH侦听,那么此函数要先于其他函数执行
对于ONCLICK来说,要从头走俩便ONTOUCH,一次是DOWN,一次是UP
同样的对于ONKEY,以及ONKEYUP和DOWN
如果既覆写了ONKEYUODOWN,又SET了侦听ONKEY,那么ONKEY要优先执行,对于一个回车按键触发时 11-24 09:55:18.601: INFO/activity(951): dispatchKeyEvent
11-24 09:55:18.611: INFO/activity(951): onUserInteraction
11-24 09:55:18.621: INFO/LinearLayout(951): dispatchKeyEvent
11-24 09:55:18.641: INFO/button(951): onKey
11-24 09:55:18.711: INFO/activity(951): dispatchKeyEvent
11-24 09:55:18.756: INFO/activity(951): onUserInteraction
11-24 09:55:18.775: INFO/LinearLayout(951): dispatchKeyEvent
11-24 09:55:18.791: INFO/button(951): onKey
11-24 09:55:18.822: INFO/button(951): onClick
发表评论
-
JAVA代码混淆
2016-05-05 18:24 1452JAVA代码混淆 <!--[if !supportL ... -
android 监听状态栏被下拉
2015-12-25 17:23 3477Activity的onWindowFocusChange()方 ... -
android使用mount挂载/system/app为读写权限,删除或替换系统应用
2015-11-27 14:13 4028注意:以下代码中#开头的则为需要执行的shell命令,其他的 ... -
Ubuntu 14.04 文件服务器--samba的安装和配置
2015-11-10 10:49 638jingyan.baidu.com/album/00a07f ... -
intellij 打开工程在每个java文件上 有个红色的无效符
2015-07-24 13:52 1755说明该类不是可编译文件。在project Structure中 ... -
logcat命令详解
2015-07-22 16:34 982Android日志系统提供了记录和查看系统调试信息的功能。日 ... -
gradle打包遇到的错误汇总
2015-07-21 11:32 0错误1:A problem occurred ... -
Android读写XML(下)——创建XML文档
2015-04-29 11:02 616在前面的2篇文章Android读写XML(上)—— pack ... -
Android读写XML(中)——SAX
2015-04-29 10:54 624在Android读写XML(上) ... -
Android读写XML(下)——创建XML文档
2015-04-29 10:52 703在前面的2篇文章Android读写XML(上)—— pack ... -
android:configChanges locale 改语言后,该配置不起作用的原因
2015-03-23 14:38 2517@Override public void on ... -
android.app.Fragment$InstantiationException 解决办法
2015-03-23 13:46 1412android.app.Fragment$Instantia ... -
linux 查看内存
2015-02-10 13:08 7461、free监控内存使用情况 #free 2、watc ... -
android fastboot 刷机 指令
2015-01-19 18:31 1531原生bootloader:bootloader-gro ... -
[Android实例] android中进行https连接的方式的详解 (转发)
2015-01-09 15:50 697x 如果不需要验证服务器端证书, ... -
编译android源码apk是否生成odex方法
2014-10-20 17:19 1647其实Android系统默认的配置是,如果没有指定DISABL ... -
关于android源码中的APP编译时引用隐藏的API出现的问题
2014-10-20 15:36 840今天在编译android源码中的计算器APP时发现,竟然无法 ... -
Android系统进程Zygote启动过程的源代码分析
2014-09-17 10:09 504在Android系统中, ... -
Handler和HandlerThread
2014-09-16 16:58 6951.什么是Handler? SDK中关于Handler的说 ... -
怎样识别三洋18650锂电池电芯
2014-09-01 09:52 1117浏览:20384 | 更新:2011-03 ...
相关推荐
这个Demo展示了如何在Android系统中监听短信接收事件,并自动将接收到的短信转发到预设的目标号码。以下是对实现这一功能所需技术点的详细解释: 1. **Android权限管理**: 在AndroidManifest.xml文件中,需要声明...
端口转发的核心在于网络编程,Android系统提供了Socket和ServerSocket类来处理网络通信。在FwdPortForwardingApp中,开发者可能使用了ServerSocket监听本地端口,当有连接请求时,通过Socket创建一个新的连接到目标...
在ViewGroup和View中,这个方法用于接收并转发事件。当dispatchTouchEvent()返回true时,表示当前View处理了事件;返回false,则事件会继续传递给下一个View。 3. **onTouchEvent()**:这是View处理触摸事件的接口...
本项目是一个基于Android平台的短信转发系统,主要功能是通过监听手机短信事件,将接收到的短信内容通过Gotify服务进行转发。系统利用Android的BroadcastReceiver机制监听短信事件,并通过OkHttp库发送HTTP请求实现...
在iOS和Android等移动开发平台中,处理触摸事件是构建用户界面的重要部分。开发者经常遇到的问题是如何精确地处理用户在小尺寸视图上的触摸操作,尤其是当这些视图需要复杂交互时。本主题将深入探讨如何处理复杂的...
在Android平台上,录音、编码、服务器转发、解码和播放是移动应用开发中常见的功能,尤其是在涉及音频处理和通信的应用中。以下是对这些关键知识点的详细说明: **录音(Recording)** Android提供了MediaRecorder...
该压缩包文件“Android高级应用源码-后台转发短信到指定邮件箱,有一个测试界面,是别人的程序我组合一起,部分原创.zip”提供了一个独特的Android应用程序示例,它结合了短信处理和电子邮件通信功能。这个项目的...
- 错误处理:在使用`Android-openup`时,必须处理可能出现的异常,如网络未连接、UPnP设备未找到或端口映射失败等。 - 安全性:端口转发可能带来安全风险,如暴露私有服务给外部网络,因此要谨慎使用。 通过以上...
在Android平台上,开发一个短信转发应用是一个常见的任务,它可以帮助用户自动将接收到的短信转发到指定的号码。本文将详细解析如何构建这样一个简单的Android短信转发APP,主要涉及以下几个核心知识点: 1. **注册...
当用户在屏幕上触碰或按下硬件键时,这些事件首先被硬件驱动捕捉到,然后由InputDispatcher组件转发到InputManagerService。InputManagerService对事件进行预处理,例如,它可以处理全局导航键,或者根据当前激活的...
在本场景中,Android设备A和B作为客户端,通过HTTP或HTTPS协议向服务器发送请求,服务器接收到请求后处理并转发数据到另一台设备,从而实现两台设备间的数据交换。 实现步骤如下: 1. **创建Servlet**:在服务器端...
在Android系统中,KeyEvent是处理用户输入硬件按键事件的关键类,它封装了按键按下和释放的动作。本资料主要探讨在Android 9.0 (Pie) 和 Android 10.0 (Q) 操作系统版本中,在framework层添加KeyEvent事件的详细流程...
通过学习和分析这个源码项目,开发者不仅可以掌握如何将Android手机转变为IP Camera,还可以深入了解Android平台上的多媒体处理、网络通信和硬件访问等核心技能。这对于那些希望从事Android应用开发,尤其是涉及...
5. **事件转发**: “修改转发”可能涉及到事件处理机制。当用户点击浮动按钮时,可能需要将这些事件转发到系统层,执行相应的操作,比如调用Home键、返回键、截屏等。这需要理解Android的事件传递机制,可能需要使用...
【Android-SMS302短信或者来电转发到Email】是一个Android应用程序开发项目,其核心功能是将接收到的短信或电话记录自动转发到指定的电子邮件地址。这个项目对于那些需要实时监控或存档手机通信记录的用户非常有用,...
如果在Fragment中需要处理返回键,应该在Fragment的onKeyDown()中实现,或者通过宿主Activity转发事件。 为了提高代码的可维护性和复用性,可以考虑创建一个基类Activity,里面封装好对返回键事件的处理逻辑,并让...
// 检查响应码,处理转发结果... } ``` 对于邮件转发,我们可以使用JavaMail API。首先,需要在项目中添加对应的依赖库,然后创建一个Session对象,配置邮件服务器信息,再构建MimeMessage对象,设置发件人、收件...
文件"CynoChange"可能是实现上述逻辑的具体代码,包含了创建ServerSocket、处理连接请求、转发数据以及关闭连接的相关函数。通过阅读和理解这段代码,你可以深入学习到Android中的网络编程和IP端口重定向的实现细节...
当有新的短信到达时,BroadcastReceiver会接收到ACTION_SMS_RECEIVED广播,然后在此广播接收器中处理新短信的内容,将短信数据提取并准备用于转发。 2. **权限设置**:为了能够监听短信,应用需要在AndroidManifest...