Android监听Dialog点击外部区域
16lz
2022-03-31
- 监听外部区域点击事件的抽象父类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(安卓)Relative Layout 安卓相对布局详解
- Android实现天气预报温度/气温折线趋势图
- Android(安卓)Relative Layout 安卓相对布局详解
- Android布局之相对布局——RelativeLayout
- (转)Android中LocationManager的简单使用,获取当前位置
- Android(安卓)Graphics专题(1)--- Canvas基础
- 【Android】使RecyclerView 支持setEmptyView
- Android(安卓)DrawBitmap绘制图像
- Android通过PopupMenu定义弹出菜单的位置