Handling UI Events/处理事件

一、View对像中有一堆事件回调接口。例如View.OnClickListener、View.OnLongClickListener……。你需要监听事件时,只需要把实现事件回调接口的实例传入view实例的setOnXXXListener即可。

 

二、事件是一个从最外层分发,然后下沉到目标view的过程。事件到达目标view时,是先调用自定义的事件处理器,再调用默认的事件处理器。如果你的事件处事器返回true,即事件的分发过程立即终止,默认事件处理器也不会被调用。

 

三、关于事件的其它接口。Activity.dispatchTouchEvent(MotionEvent):可以拦截所有的touch Event。ViewGroup.onInterceptTouchEvent(MotionEvent):许允ViewGroup去查看分发到view的事件。

 

四、touch mode。当用户通过方向键或轨迹球在界面中游走时,界面会自动让可操作控件获得焦点(高亮显视)。这样可以让用户知道哪里可以操作。然而,当用户直接使用触摸屏操作时,上面说的自动获取焦点(高亮显视)就没必要了。这种经过控件而不高亮显视控件的模式叫touch mode。

 

五、具有触摸功能的设备,一旦用户触碰到屏幕,设备立即进入touch mode。这里只有isFocusableInTouchMode()返回true的组件才会获得焦点(例如文字编辑类控件)。其余的控件只会触发onclick事件。

 

六、当用户点击方向键或轨迹球时,系统会退出touch mode,然后找一个最近的控件,让它获得焦点。

 

七、可以用view.isInTouchMode去判断系统是否在touch mode。

 

八、handling focus/处理焦点。可以通过setFocusable、setFocusableInTouchMode设置控件在不同模式下是否可以获得焦点。在获取焦点顺序上,androud采用某方向上最近距离的原则让焦点随用户的操作而移动。另外开发人员也可以通过设置view的nextFocusDown、nextFocusLeft等四个方法来设置获取焦点的顺序。要让某view获得焦点,可以调用requestFocus()方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值