Android中蓝牙键盘tab/上下左右键的处理

2018-08-29  本文已影响0人  xinguoshui
ViewRootImpl.processKeyEvent
ViewGroup.focusSearch
FocusFinder.findNextFocus
ViewGroup.requestFocus

Tab键和上下左右键的区别是,Tab是根据View的添加顺序查找的,上下左右是根据x/y最近距离来找的。

private View findNextFocus(ViewGroup root, View focused, Rect focusedRect,
            int direction, ArrayList<View> focusables) {
...
        switch (direction) {
            case View.FOCUS_FORWARD:
            case View.FOCUS_BACKWARD:
                return findNextFocusInRelativeDirection(focusables, root, focused, focusedRect,
                        direction);
            case View.FOCUS_UP:
            case View.FOCUS_DOWN:
            case View.FOCUS_LEFT:
            case View.FOCUS_RIGHT:
                return findNextFocusInAbsoluteDirection(focusables, root, focused,
                        focusedRect, direction);
            default:
                throw new IllegalArgumentException("Unknown direction: " + direction);
        }
上一篇 下一篇

猜你喜欢

热点阅读