当前标签 / 事件监听 / 总共1篇

Android内部分享[13]——事件和事件传递分发机制

在 Android 中拦截用户交互的事件不止一种,我们可能已经注意到前面使用过的一些公共回调方法例如 setOnClickListener, onTouchEvent 等,有时候我们在自定义视图的时候需要去扩展或者覆盖某些事件,问题远比你想象的复杂。

监听事件

监听事件是视图 View 类中包含的单个回调方法接口,当你注册了某个事件的监听器后,当用户触发 UI 操作就会回调此方法,主要包括如下几个监听器:

  • onClick() 点击事件,来自 View.OnClickListener 接口。
  • onLongClick() 长按事件,来自 View.OnLongClickListener 接口。
  • onFocusChange() 焦点变化事件,来自 View.OnFocusChangeListener 接口。
  • onKey() 硬件键盘事件,来自 View.OnKeyListener 接口。
  • onTouch() 触摸事件,来自 View.OnTouchListener 接口。
  • onCreateContextMenu() 构建上下文菜单事件,来自 View.OnCreateContextMenuListener 接口。

我们先来看看比较常见的两个事件,点击和长按事件:

Button clickListener = findViewById(R.id.button_clicklistener);
clickListener.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 点击了 Button
    }
});

Button longclickListener = findViewById(R.id.button_long_clicklistener);
longclickListener.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        // 长按了 Button
        return false;
    }
});

阅读更多