Android???TextView???????????
???????????? ???????[ 2013/5/16 10:28:29 ] ????????
????Step 10. ViewGroup.dispatchKeyEvent
????[java] view plaincopyprint?
????public abstract class ViewGroup extends View implements ViewParent?? ViewManager {
????......
????@Override
????public boolean dispatchKeyEvent(KeyEvent event) {
????if ((mPrivateFlags & (FOCUSED | HAS_BOUNDS)) == (FOCUSED | HAS_BOUNDS)) {
????return super.dispatchKeyEvent(event);
????} else if (mFocused != null && (mFocused.mPrivateFlags & HAS_BOUNDS) == HAS_BOUNDS) {
????return mFocused.dispatchKeyEvent(event);
????}
????return false;
????}
????......
????}
????public abstract class ViewGroup extends View implements ViewParent?? ViewManager {
????......
????@Override
????public boolean dispatchKeyEvent(KeyEvent event) {
????if ((mPrivateFlags & (FOCUSED | HAS_BOUNDS)) == (FOCUSED | HAS_BOUNDS)) {
????return super.dispatchKeyEvent(event);
????} else if (mFocused != null && (mFocused.mPrivateFlags & HAS_BOUNDS) == HAS_BOUNDS) {
????return mFocused.dispatchKeyEvent(event);
????}
????return false;
????}
????......
????}
????????????????????frameworks/base/core/java/android/view/ViewGroup.java?С?
????ViewGroup?????????dispatchKeyEvent?????????????Step 3?????????ViewGroup?????????dispatchKeyEventPreIme?????????????????????????????????????????y????????????????С????????????????????event??????????????????????????View????????dispatchKeyEvent???????????????????????????????????????????????????????????????????????С????????????????????event????????????????????y?????????????View????????dispatchKeyEvent???????
????????????ù????????????????????????????????Activity?????????????????????????????????У???y?????????TextView????????????TextView??????С????????????????????????????TextView????????View????????dispatchKeyEvent?????????event????????????????
????Step 11. View.dispatchKeyEvent
????[java] view plaincopyprint?
????public class View implements Drawable.Callback?? KeyEvent.Callback?? AccessibilityEventSource {
????......
????private OnKeyListener mOnKeyListener;
????......
????public boolean dispatchKeyEvent(KeyEvent event) {
????// If any attached key listener a first crack at the event.
????//noinspection SimplifiableIfStatement
????......
????if (mOnKeyListener != null && (mViewFlags & ENABLED_MASK) == ENABLED
????&& mOnKeyListener.onKey(this?? event.getKeyCode()?? event)) {
????return true;
????}
????return event.dispatch(this?? mAttachInfo != null
????? mAttachInfo.mKeyDispatchState : null?? this);
????}
????......
????}
????public class View implements Drawable.Callback?? KeyEvent.Callback?? AccessibilityEventSource {
????......
????private OnKeyListener mOnKeyListener;
????......
????public boolean dispatchKeyEvent(KeyEvent event) {
????// If any attached key listener a first crack at the event.
????//noinspection SimplifiableIfStatement
????......
????if (mOnKeyListener != null && (mViewFlags & ENABLED_MASK) == ENABLED
????&& mOnKeyListener.onKey(this?? event.getKeyCode()?? event)) {
????return true;
????}
????return event.dispatch(this?? mAttachInfo != null
????? mAttachInfo.mKeyDispatchState : null?? this);
????}
????......
????}
????????????????????frameworks/base/core/java/android/view/View.java?С?
??????View?????????mOnKeyListener?????????null??????????????OnKeyListener???????????????????????????????????????????????????????????£????????????????????????????????????????????mViewFlags??ENABLEDλ????1?????????event???????????????????ü????????????????????????????View?????????mOnKeyListener?????????OnKeyListener???????????onKey???????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11