2023年7月13日发(作者:)
AndroidKeyEvent分发过程⼀、背景Activity和View有三个override的⽅法dispatchKeyEvent、onKeyUp、onKeyDown,其中View还有⼀个setOnKeyListener⽅法。只知道这⼏个⽅法是设置处理key event的,但是⼀直不太理解这⼏个⽅法的作⽤和相互影响。所以准备写个demo彻底搞清楚这⼏个⽅法的作⽤和原理。⼆、测试准备新建三个类public class KeyDispatchDemo extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_key_dispatch); } @Override public boolean dispatchKeyEvent(KeyEvent event) { Log.d("Activity", "dispatchKeyEvent: " + ion() + " | " + Code()); return chKeyEvent(event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { Log.d("Activity", "onKeyUp: " + keyCode); return p(keyCode, event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Log.d("Activity", "onKeyDown: " + keyCode); return own(keyCode, event); }}public class KeyDispatchLinearLayout extends LinearLayout { public KeyDispatchLinearLayout(Context context) { super(context); } public KeyDispatchLinearLayout(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public KeyDispatchLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean dispatchKeyEvent(KeyEvent event) { Log.d("ViewGroup", "dispatchKeyEvent: " + ion() + " | " + Code()); return chKeyEvent(event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { Log.d("ViewGroup", "onKeyUp: " + keyCode); return p(keyCode, event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Log.d("ViewGroup", "onKeyDown: " + keyCode); return own(keyCode, event); }}public class KeyDispatchView extends View { public KeyDispatchView(Context context) { super(context); } public KeyDispatchView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public KeyDispatchView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean dispatchKeyEvent(KeyEvent event) { Log.d("View", "dispatchKeyEvent: " + ion() + " | " + Code()); return chKeyEvent(event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { Log.d("View", "onKeyUp: " + keyCode); return p(keyCode, event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Log.d("View", "onKeyDown: " + keyCode); return own(keyCode, event); }}布局⽂件:
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689216392a222328.html
评论列表(0条)