1. case同dispatchTouchEvent
2. ViewGroup中,
a. 如果mFocused不是null,就是处于focus mode,那么沿着top view到focus view的path状,通过View.dispatchKeyShortcutEvent方法派发
ps:dispatchKeyShortcutEvent实现: View中的实现是调用一下onXXX回调即可;ViewGroup中实现是mFocused.dispatchKeyShortcutEvent的递归调用
b. 否则就不再向下pass了。mFocused是null的原因: 1. 当前处于touch mode
// The view contained within this ViewGroup that has or contains focus.
private View mFocused;
3. 在Activity中重写dispatchKeyEvent,并返回true,key event就不会先view tree 派发了。
4. 当MyTextView focused时,key event沿着focus tree pass
D/AndroidTestActivity(11684): dispatchKeyEvent E. action is:0
D/MyLinearLayout(11684): dispatchKeyEvent E. action is:0
D/MyTextView(11684): dispatchKeyEvent E. action is:0
D/AndroidTestActivity(11684): dispatchKeyEvent E. action is:1
D/MyLinearLayout(11684): dispatchKeyEvent E. action is:1
D/MyTextView(11684): dispatchKeyEvent E. action is:1
5. 当没有viewfocused时,
D/AndroidTestActivity(11684): dispatchKeyEvent E. action is:0
D/AndroidTestActivity(11684): dispatchKeyEvent E. action is:1