Android监听Dialog点击外部区域
16lz
2021-01-23
- 监听外部区域点击事件的抽象父类Dialog
public abstract class OutsideClickDialog extends Dialog { public OutsideClickDialog(@NonNull Context context) { super(context); } public OutsideClickDialog(@NonNull Context context, int themeResId) { super(context, themeResId); } protected OutsideClickDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) { super(context, cancelable, cancelListener); } protected abstract void onTouchOutside(); @Override public boolean onTouchEvent(@NonNull MotionEvent event) { //点击弹窗外部区域 if (isOutOfBounds(getContext(), event)) { onTouchOutside(); } return super.onTouchEvent(event); } private boolean isOutOfBounds(Context context, MotionEvent event) { final int x = (int) event.getX();//相对弹窗左上角的x坐标 final int y = (int) event.getY();//相对弹窗左上角的y坐标 final int slop = ViewConfiguration.get(context).getScaledWindowTouchSlop();//最小识别距离 final View decorView = getWindow().getDecorView();//弹窗的根View return (x < -slop) || (y < -slop) || (x > (decorView.getWidth() + slop)) || (y > (decorView.getHeight() + slop)); }}
更多相关文章
- Android 在TextView中加入多个点击文本区域
- Android 点击空白区域 软键盘消失
- Android单击屏幕获得坐标,屏幕多点触摸测试器
- Android——扩大ImageButton的点击区域
- android点击空白区域隐藏软键盘的实现
- android朋友圈监听键盘状态 点击空白区域隐藏键盘
- Android Canvas类介绍和Android Draw Rect 坐标图示