kongzue пре 2 година
родитељ
комит
a61865e4ce

+ 11 - 10
DialogX/src/main/java/com/kongzue/dialogx/dialogs/BottomDialog.java

@@ -69,6 +69,7 @@ public class BottomDialog extends BaseDialog {
     protected OnDialogButtonClickListener<BottomDialog> okButtonClickListener;
     protected OnDialogButtonClickListener<BottomDialog> otherButtonClickListener;
     protected OnBackgroundMaskClickListener<BottomDialog> onBackgroundMaskClickListener;
+    protected OnBackPressedListener<BottomDialog> onBackPressedListener;
     protected BOOLEAN privateCancelable;
     protected boolean bkgInterceptTouch = true;
     protected float backgroundRadius = -1;
@@ -430,19 +431,19 @@ public class BottomDialog extends BaseDialog {
                 }
             }
             
-            boxRoot.setOnBackPressedListener(new OnBackPressedListener() {
+            boxRoot.setOnBackPressedListener(new DialogXBaseRelativeLayout.PrivateBackPressedListener() {
                 @Override
                 public boolean onBackPressed() {
                     if (onBackPressedListener != null) {
-                        if (onBackPressedListener.onBackPressed()) {
+                        if (onBackPressedListener.onBackPressed(me)) {
+                            dismiss();
+                        }
+                    }else{
+                        if (isCancelable()) {
                             dismiss();
                         }
-                        return false;
-                    }
-                    if (isCancelable()) {
-                        dismiss();
                     }
-                    return false;
+                    return true;
                 }
             });
             
@@ -750,11 +751,11 @@ public class BottomDialog extends BaseDialog {
         return this;
     }
     
-    public OnBackPressedListener getOnBackPressedListener() {
-        return onBackPressedListener;
+    public OnBackPressedListener<BottomDialog> getOnBackPressedListener() {
+        return (OnBackPressedListener<BottomDialog>) onBackPressedListener;
     }
     
-    public BottomDialog setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
+    public BottomDialog setOnBackPressedListener(OnBackPressedListener<BottomDialog> onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         refreshUI();
         return this;

+ 3 - 3
DialogX/src/main/java/com/kongzue/dialogx/dialogs/BottomMenu.java

@@ -708,11 +708,11 @@ public class BottomMenu extends BottomDialog {
         return this;
     }
     
-    public OnBackPressedListener getOnBackPressedListener() {
-        return onBackPressedListener;
+    public OnBackPressedListener<BottomDialog> getOnBackPressedListener() {
+        return (OnBackPressedListener<BottomDialog>) onBackPressedListener;
     }
     
-    public BottomMenu setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
+    public BottomMenu setOnBackPressedListener(OnBackPressedListener<BottomDialog> onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         preRefreshUI();
         return this;

+ 11 - 10
DialogX/src/main/java/com/kongzue/dialogx/dialogs/CustomDialog.java

@@ -46,6 +46,7 @@ public class CustomDialog extends BaseDialog {
     public static BOOLEAN overrideCancelable;
     protected OnBindView<CustomDialog> onBindView;
     protected DialogLifecycleCallback<CustomDialog> dialogLifecycleCallback;
+    protected OnBackPressedListener<CustomDialog> onBackPressedListener;
     protected CustomDialog me = this;
     protected DialogImpl dialogImpl;
     protected int enterAnimResId = R.anim.anim_dialogx_default_enter;
@@ -200,19 +201,19 @@ public class CustomDialog extends BaseDialog {
                 }
             });
             
-            boxRoot.setOnBackPressedListener(new OnBackPressedListener() {
+            boxRoot.setOnBackPressedListener(new DialogXBaseRelativeLayout.PrivateBackPressedListener() {
                 @Override
                 public boolean onBackPressed() {
                     if (onBackPressedListener != null) {
-                        if (onBackPressedListener.onBackPressed()) {
+                        if (onBackPressedListener.onBackPressed(me)) {
+                            dismiss();
+                        }
+                    }else{
+                        if (isCancelable()) {
                             dismiss();
                         }
-                        return false;
-                    }
-                    if (isCancelable()) {
-                        dismiss();
                     }
-                    return false;
+                    return true;
                 }
             });
             
@@ -579,11 +580,11 @@ public class CustomDialog extends BaseDialog {
         return this;
     }
     
-    public OnBackPressedListener getOnBackPressedListener() {
-        return onBackPressedListener;
+    public OnBackPressedListener<CustomDialog> getOnBackPressedListener() {
+        return (OnBackPressedListener<CustomDialog>) onBackPressedListener;
     }
     
-    public CustomDialog setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
+    public CustomDialog setOnBackPressedListener(OnBackPressedListener<CustomDialog> onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         refreshUI();
         return this;

+ 11 - 10
DialogX/src/main/java/com/kongzue/dialogx/dialogs/FullScreenDialog.java

@@ -49,6 +49,7 @@ public class FullScreenDialog extends BaseDialog {
     public static BOOLEAN overrideCancelable;
     
     protected OnBindView<FullScreenDialog> onBindView;
+    protected OnBackPressedListener<FullScreenDialog> onBackPressedListener;
     protected BOOLEAN privateCancelable;
     protected boolean hideZoomBackground;
     protected float backgroundRadius = -1;
@@ -182,19 +183,19 @@ public class FullScreenDialog extends BaseDialog {
                 }
             });
             
-            boxRoot.setOnBackPressedListener(new OnBackPressedListener() {
+            boxRoot.setOnBackPressedListener(new DialogXBaseRelativeLayout.PrivateBackPressedListener() {
                 @Override
                 public boolean onBackPressed() {
                     if (onBackPressedListener != null) {
-                        if (onBackPressedListener.onBackPressed()) {
+                        if (onBackPressedListener.onBackPressed(me)) {
+                            dismiss();
+                        }
+                    }else{
+                        if (isCancelable()) {
                             dismiss();
                         }
-                        return false;
-                    }
-                    if (isCancelable()) {
-                        dismiss();
                     }
-                    return false;
+                    return true;
                 }
             });
             
@@ -455,11 +456,11 @@ public class FullScreenDialog extends BaseDialog {
         return this;
     }
     
-    public OnBackPressedListener getOnBackPressedListener() {
-        return onBackPressedListener;
+    public OnBackPressedListener<FullScreenDialog> getOnBackPressedListener() {
+        return (OnBackPressedListener<FullScreenDialog>) onBackPressedListener;
     }
     
-    public FullScreenDialog setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
+    public FullScreenDialog setOnBackPressedListener(OnBackPressedListener<FullScreenDialog> onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         refreshUI();
         return this;

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/GuideDialog.java

@@ -326,7 +326,7 @@ public class GuideDialog extends CustomDialog {
         return this;
     }
     
-    public GuideDialog setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
+    public GuideDialog setOnBackPressedListener(OnBackPressedListener<CustomDialog> onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         refreshUI();
         return this;

+ 3 - 3
DialogX/src/main/java/com/kongzue/dialogx/dialogs/InputDialog.java

@@ -467,11 +467,11 @@ public class InputDialog extends MessageDialog {
         return this;
     }
     
-    public OnBackPressedListener getOnBackPressedListener() {
-        return onBackPressedListener;
+    public OnBackPressedListener<MessageDialog> getOnBackPressedListener() {
+        return (OnBackPressedListener<MessageDialog>) onBackPressedListener;
     }
     
-    public InputDialog setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
+    public InputDialog setOnBackPressedListener(OnBackPressedListener<MessageDialog> onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         return this;
     }

+ 11 - 10
DialogX/src/main/java/com/kongzue/dialogx/dialogs/MessageDialog.java

@@ -71,6 +71,7 @@ public class MessageDialog extends BaseDialog {
     protected int customEnterAnimResId;
     protected int customExitAnimResId;
     protected DialogXAnimInterface<MessageDialog> dialogXAnimImpl;
+    protected OnBackPressedListener<MessageDialog> onBackPressedListener;
     
     protected DialogLifecycleCallback<MessageDialog> dialogLifecycleCallback;
     protected OnBackgroundMaskClickListener<MessageDialog> onBackgroundMaskClickListener;
@@ -396,19 +397,19 @@ public class MessageDialog extends BaseDialog {
                 }
             });
             
-            boxRoot.setOnBackPressedListener(new OnBackPressedListener() {
+            boxRoot.setOnBackPressedListener(new DialogXBaseRelativeLayout.PrivateBackPressedListener() {
                 @Override
                 public boolean onBackPressed() {
                     if (onBackPressedListener != null) {
-                        if (onBackPressedListener.onBackPressed()) {
+                        if (onBackPressedListener.onBackPressed(me)) {
+                            dismiss();
+                        }
+                    }else{
+                        if (isCancelable()) {
                             dismiss();
                         }
-                        return false;
-                    }
-                    if (isCancelable()) {
-                        dismiss();
                     }
-                    return false;
+                    return true;
                 }
             });
             btnSelectPositive.setOnClickListener(new View.OnClickListener() {
@@ -1090,11 +1091,11 @@ public class MessageDialog extends BaseDialog {
         return this;
     }
     
-    public OnBackPressedListener getOnBackPressedListener() {
-        return onBackPressedListener;
+    public OnBackPressedListener<MessageDialog> getOnBackPressedListener() {
+        return (OnBackPressedListener<MessageDialog>) onBackPressedListener;
     }
     
-    public MessageDialog setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
+    public MessageDialog setOnBackPressedListener(OnBackPressedListener<MessageDialog> onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         return this;
     }

+ 17 - 7
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopMenu.java

@@ -79,6 +79,7 @@ public class PopMenu extends BaseDialog {
     protected boolean offScreen = false;                                    //超出屏幕
     protected float backgroundRadius = -1;
     protected DialogXAnimInterface<PopMenu> dialogXAnimImpl;
+    protected OnBackPressedListener<PopMenu> onBackPressedListener;
     
     protected int alignGravity = -1;                                        //指定菜单相对 baseView 的位置
     
@@ -315,19 +316,19 @@ public class PopMenu extends BaseDialog {
                 }
             });
             
-            boxRoot.setOnBackPressedListener(new OnBackPressedListener() {
+            boxRoot.setOnBackPressedListener(new DialogXBaseRelativeLayout.PrivateBackPressedListener() {
                 @Override
                 public boolean onBackPressed() {
                     if (onBackPressedListener != null) {
-                        if (onBackPressedListener.onBackPressed()) {
+                        if (onBackPressedListener.onBackPressed(me)) {
+                            dismiss();
+                        }
+                    }else{
+                        if (isCancelable()) {
                             dismiss();
                         }
-                        return false;
-                    }
-                    if (isCancelable()) {
-                        dismiss();
                     }
-                    return false;
+                    return true;
                 }
             });
             listMenu.setMaxHeight(getRootFrameLayout() == null ? dip2px(500) : getRootFrameLayout().getMeasuredHeight() - dip2px(150));
@@ -1031,4 +1032,13 @@ public class PopMenu extends BaseDialog {
         this.dialogXAnimImpl = dialogXAnimImpl;
         return this;
     }
+    
+    public OnBackPressedListener<PopMenu> getOnBackPressedListener() {
+        return (OnBackPressedListener<PopMenu>) onBackPressedListener;
+    }
+    
+    public PopMenu setOnBackPressedListener(OnBackPressedListener<PopMenu> onBackPressedListener) {
+        this.onBackPressedListener = onBackPressedListener;
+        return this;
+    }
 }

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopNotification.java

@@ -586,7 +586,7 @@ public class PopNotification extends BaseDialog implements NoTouchInterface {
                 }
             });
             
-            boxRoot.setOnBackPressedListener(new OnBackPressedListener() {
+            boxRoot.setOnBackPressedListener(new DialogXBaseRelativeLayout.PrivateBackPressedListener() {
                 @Override
                 public boolean onBackPressed() {
                     return false;

+ 24 - 7
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopTip.java

@@ -300,8 +300,13 @@ public class PopTip extends BaseDialog implements NoTouchInterface {
                 if (style.popTipSettings().layout(isLightTheme()) != 0) {
                     layoutResId = style.popTipSettings().layout(isLightTheme());
                 }
-                align = style.popTipSettings().align();
-                if (align == null) align = DialogXStyle.PopTipSettings.ALIGN.BOTTOM;
+                if (align == null) {
+                    if (style.popTipSettings().align() == null) {
+                        align = DialogXStyle.PopTipSettings.ALIGN.BOTTOM;
+                    } else {
+                        align = style.popTipSettings().align();
+                    }
+                }
                 int styleEnterAnimResId = style.popTipSettings().enterAnimResId(isLightTheme());
                 int styleExitAnimResId = style.popTipSettings().exitAnimResId(isLightTheme());
                 enterAnimResId = enterAnimResId == 0 ? (
@@ -351,8 +356,14 @@ public class PopTip extends BaseDialog implements NoTouchInterface {
                 if (style.popTipSettings().layout(isLightTheme()) != 0) {
                     layoutResId = style.popTipSettings().layout(isLightTheme());
                 }
-                align = style.popTipSettings().align();
-                if (align == null) align = DialogXStyle.PopTipSettings.ALIGN.BOTTOM;
+    
+                if (align == null) {
+                    if (style.popTipSettings().align() == null) {
+                        align = DialogXStyle.PopTipSettings.ALIGN.BOTTOM;
+                    } else {
+                        align = style.popTipSettings().align();
+                    }
+                }
                 int styleEnterAnimResId = style.popTipSettings().enterAnimResId(isLightTheme());
                 int styleExitAnimResId = style.popTipSettings().exitAnimResId(isLightTheme());
                 enterAnimResId = enterAnimResId == 0 ? (
@@ -518,7 +529,7 @@ public class PopTip extends BaseDialog implements NoTouchInterface {
                 }
             });
             
-            boxRoot.setOnBackPressedListener(new OnBackPressedListener() {
+            boxRoot.setOnBackPressedListener(new DialogXBaseRelativeLayout.PrivateBackPressedListener() {
                 @Override
                 public boolean onBackPressed() {
                     return false;
@@ -814,6 +825,7 @@ public class PopTip extends BaseDialog implements NoTouchInterface {
         return align;
     }
     
+    @Deprecated
     public PopTip setAlign(DialogXStyle.PopTipSettings.ALIGN align) {
         this.align = align;
         return this;
@@ -998,8 +1010,13 @@ public class PopTip extends BaseDialog implements NoTouchInterface {
             if (style.popTipSettings().layout(isLightTheme()) != 0) {
                 layoutResId = style.popTipSettings().layout(isLightTheme());
             }
-            align = style.popTipSettings().align();
-            if (align == null) align = DialogXStyle.PopTipSettings.ALIGN.BOTTOM;
+            if (align == null) {
+                if (style.popTipSettings().align() == null) {
+                    align = DialogXStyle.PopTipSettings.ALIGN.BOTTOM;
+                } else {
+                    align = style.popTipSettings().align();
+                }
+            }
             int styleEnterAnimResId = style.popTipSettings().enterAnimResId(isLightTheme());
             int styleExitAnimResId = style.popTipSettings().exitAnimResId(isLightTheme());
             enterAnimResId = enterAnimResId == 0 ? (

+ 7 - 0
DialogX/src/main/java/com/kongzue/dialogx/dialogs/TipDialog.java

@@ -4,6 +4,7 @@ import android.app.Activity;
 
 import com.kongzue.dialogx.DialogX;
 import com.kongzue.dialogx.interfaces.DialogXAnimInterface;
+import com.kongzue.dialogx.interfaces.OnBackPressedListener;
 import com.kongzue.dialogx.interfaces.OnBackgroundMaskClickListener;
 
 /**
@@ -197,4 +198,10 @@ public class TipDialog extends WaitDialog {
         this.dialogXAnimImpl = dialogXAnimImpl;
         return this;
     }
+    
+    public TipDialog setOnBackPressedListener(OnBackPressedListener<WaitDialog> onBackPressedListener) {
+        this.onBackPressedListener = onBackPressedListener;
+        refreshUI();
+        return this;
+    }
 }

+ 11 - 10
DialogX/src/main/java/com/kongzue/dialogx/dialogs/WaitDialog.java

@@ -62,6 +62,7 @@ public class WaitDialog extends BaseDialog {
     protected int customExitAnimResId;
     protected float backgroundRadius = -1;
     protected DialogXAnimInterface<WaitDialog> dialogXAnimImpl;
+    protected OnBackPressedListener<WaitDialog> onBackPressedListener;
     
     public enum TYPE {
         /**
@@ -380,19 +381,19 @@ public class WaitDialog extends BaseDialog {
                 }, 100);
             }
             
-            boxRoot.setOnBackPressedListener(new OnBackPressedListener() {
+            boxRoot.setOnBackPressedListener(new DialogXBaseRelativeLayout.PrivateBackPressedListener() {
                 @Override
                 public boolean onBackPressed() {
                     if (onBackPressedListener != null) {
-                        if (onBackPressedListener.onBackPressed()) {
+                        if (onBackPressedListener.onBackPressed(WaitDialog.this)) {
+                            dismiss();
+                        }
+                    }else{
+                        if (isCancelable()) {
                             dismiss();
                         }
-                        return false;
-                    }
-                    if (isCancelable()) {
-                        dismiss();
                     }
-                    return false;
+                    return true;
                 }
             });
             onDialogInit();
@@ -871,11 +872,11 @@ public class WaitDialog extends BaseDialog {
         return this;
     }
     
-    public OnBackPressedListener getOnBackPressedListener() {
-        return onBackPressedListener;
+    public OnBackPressedListener<WaitDialog> getOnBackPressedListener() {
+        return (OnBackPressedListener<WaitDialog>) onBackPressedListener;
     }
     
-    public WaitDialog setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
+    public WaitDialog setOnBackPressedListener(OnBackPressedListener<WaitDialog> onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         refreshUI();
         return this;

+ 0 - 1
DialogX/src/main/java/com/kongzue/dialogx/interfaces/BaseDialog.java

@@ -455,7 +455,6 @@ public abstract class BaseDialog implements LifecycleOwner {
     protected abstract void shutdown();
     
     protected boolean cancelable = true;
-    protected OnBackPressedListener onBackPressedListener;
     protected boolean isShow;
     protected DialogXStyle style;
     protected DialogX.THEME theme;

+ 2 - 2
DialogX/src/main/java/com/kongzue/dialogx/interfaces/OnBackPressedListener.java

@@ -7,6 +7,6 @@ package com.kongzue.dialogx.interfaces;
  * @mail: myzcxhh@live.cn
  * @createTime: 2020/9/25 15:48
  */
-public interface OnBackPressedListener {
-    boolean onBackPressed();
+public interface OnBackPressedListener<D extends BaseDialog> {
+    boolean onBackPressed(D dialog);
 }

+ 8 - 5
DialogX/src/main/java/com/kongzue/dialogx/util/views/DialogXBaseRelativeLayout.java

@@ -24,7 +24,6 @@ import androidx.core.view.ViewCompat;
 import com.kongzue.dialogx.DialogX;
 import com.kongzue.dialogx.R;
 import com.kongzue.dialogx.interfaces.BaseDialog;
-import com.kongzue.dialogx.interfaces.OnBackPressedListener;
 import com.kongzue.dialogx.interfaces.OnSafeInsetsChangeListener;
 
 import java.lang.ref.WeakReference;
@@ -45,7 +44,7 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
     private boolean interceptBack = true;
     
     private OnLifecycleCallBack onLifecycleCallBack;
-    private OnBackPressedListener onBackPressedListener;
+    private PrivateBackPressedListener onBackPressedListener;
     
     public DialogXBaseRelativeLayout(Context context) {
         super(context);
@@ -124,9 +123,8 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
     public boolean dispatchKeyEvent(KeyEvent event) {
         if (isAttachedToWindow() && event.getAction() == KeyEvent.ACTION_UP && event.getKeyCode() == KeyEvent.KEYCODE_BACK && interceptBack) {
             if (onBackPressedListener != null) {
-                onBackPressedListener.onBackPressed();
+                return onBackPressedListener.onBackPressed();
             }
-            return true;
         }
         return super.dispatchKeyEvent(event);
     }
@@ -247,7 +245,7 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
         if (isAutoUnsafePlacePadding()) setPadding(left, top, right, bottom);
     }
     
-    public DialogXBaseRelativeLayout setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
+    public DialogXBaseRelativeLayout setOnBackPressedListener(PrivateBackPressedListener onBackPressedListener) {
         this.onBackPressedListener = onBackPressedListener;
         return this;
     }
@@ -342,4 +340,9 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
         }
         super.setVisibility(visibility);
     }
+    
+    public interface PrivateBackPressedListener {
+        boolean onBackPressed();
+    }
+    
 }

+ 6 - 6
app/src/main/java/com/kongzue/dialogxdemo/activity/MainActivity.java

@@ -479,9 +479,9 @@ public class MainActivity extends BaseActivity {
         btnWaitDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                WaitDialog.show("Please Wait!").setOnBackPressedListener(new OnBackPressedListener() {
+                WaitDialog.show("Please Wait!").setOnBackPressedListener(new OnBackPressedListener<WaitDialog>() {
                     @Override
-                    public boolean onBackPressed() {
+                    public boolean onBackPressed(WaitDialog dialog) {
                         PopTip.show("按下返回");
                         return false;
                     }
@@ -502,9 +502,9 @@ public class MainActivity extends BaseActivity {
             @Override
             public void onClick(View v) {
                 closeFlag = false;
-                WaitDialog.show("Please Wait!").setOnBackPressedListener(new OnBackPressedListener() {
+                WaitDialog.show("Please Wait!").setOnBackPressedListener(new OnBackPressedListener<WaitDialog>() {
                     @Override
-                    public boolean onBackPressed() {
+                    public boolean onBackPressed(WaitDialog dialog) {
                         PopTip.show("按下返回", "关闭").setButton(new OnDialogButtonClickListener<PopTip>() {
                             @Override
                             public boolean onClick(PopTip baseDialog, View v) {
@@ -551,9 +551,9 @@ public class MainActivity extends BaseActivity {
             public void onClick(View v) {
                 waitId = 0;
                 progress = 0;
-                WaitDialog.show("假装连接...").setOnBackPressedListener(new OnBackPressedListener() {
+                WaitDialog.show("假装连接...").setOnBackPressedListener(new OnBackPressedListener<WaitDialog>() {
                     @Override
-                    public boolean onBackPressed() {
+                    public boolean onBackPressed(WaitDialog dialog) {
                         MessageDialog.show("正在进行", "是否取消?", "是", "否").setOkButton(new OnDialogButtonClickListener() {
                             @Override
                             public boolean onClick(BaseDialog baseDialog, View v) {

+ 1 - 1
gradle.properties

@@ -19,5 +19,5 @@ android.useAndroidX=true
 # Automatically convert third-party libraries to use AndroidX
 android.enableJetifier=true
 
-BUILD_VERSION=0.0.46.beta13
+BUILD_VERSION=0.0.46.beta14
 BUILD_VERSION_INT=45