Dialog

Dialog 基础

Dialog 监听 Back 返回键点击事件

mProgressDialog.setOnKeyListener((dialog, keyCode, event) -> {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP
                && event.getRepeatCount() == 0) {
            return listener.onBackPressed();
        }
        return false;
    });
  1. 判断 keyCode == KeyEvent.KEYCODE_BACK
  2. 判断 event 为 KeyEvent.ACTION_UP,因为还有 ACTION_DOWN,否则执行多次
  3. 判断 vent.getRepeatCount()==0;返回键在系统分发时,发送 Message 去调用 KeyEvent.changeTimeRepeat。长按时会发多次 KeyEvent.ACTION_DOWN。第一次 event.getRepeatCount() 为返回 0,之后递增。避免长按多次调用 onKeyDown 添加 repeatCount == 0 判断

App 首页弹窗多个 Dialog 优先级问题

mashi DialogController

DialogChain

DialogQueue

https://github.com/aitsuki/DialogQueue