1
0
Эх сурвалжийг харах

0.0.50.beta33
- 新增预置动作功能,可以在任何时候为 Dialog 设置动作,例如:
```java
//比如在对话框启动时预置了动作1
.onShow(new DialogXRunnable<MessageDialog>() {
@Override
public void run(MessageDialog dialog) {
tip("onShow");
//预置操作:动作1
dialog.setActionRunnable(1, new DialogXRunnable<MessageDialog>() {
@Override
public void run(MessageDialog dialog) {
tip("action 1 run!");
//举例:需要通过网络加载数据到 dialog 中显示
}
});
//执行动作1
dialog.runAction(1);
}
})
```
在需要时触发该动作执行:
```java
//在用户点击OK按钮时重新触发动作1执行
.setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
@Override
public boolean onClick(MessageDialog dialog, View v) {
//举例:点击ok按钮后执行了一些操作但需要在不关掉对话框情况下重新加载执行动作1
//执行动作1
dialog.runAction(1);
return true;
}
});
此功能适用于需要执行的动作代码处于非同一层级又不好封装提取成全局方法,而在不用时间需要触发执行时使用。

Kongzue 1 сар өмнө
parent
commit
1feef8cb0d

+ 15 - 0
DialogX/src/main/java/com/kongzue/dialogx/dialogs/BottomDialog.java

@@ -1419,4 +1419,19 @@ public class BottomDialog extends BaseDialog implements DialogXBaseBottomDialog
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public BottomDialog setActionRunnable(int actionId, DialogXRunnable<BottomDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public BottomDialog cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public BottomDialog cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

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

@@ -1563,4 +1563,19 @@ public class BottomMenu extends BottomDialog {
         }
         return enabled;
     }
+
+    public BottomMenu setActionRunnable(int actionId, DialogXRunnable<BottomDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public BottomMenu cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public BottomMenu cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

+ 15 - 0
DialogX/src/main/java/com/kongzue/dialogx/dialogs/CustomDialog.java

@@ -1166,4 +1166,19 @@ public class CustomDialog extends BaseDialog {
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public CustomDialog setActionRunnable(int actionId, DialogXRunnable<CustomDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public CustomDialog cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public CustomDialog cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

+ 15 - 0
DialogX/src/main/java/com/kongzue/dialogx/dialogs/FullScreenDialog.java

@@ -995,4 +995,19 @@ public class FullScreenDialog extends BaseDialog implements DialogXBaseBottomDia
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public FullScreenDialog setActionRunnable(int actionId, DialogXRunnable<FullScreenDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public FullScreenDialog cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public FullScreenDialog cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

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

@@ -823,4 +823,19 @@ public class GuideDialog extends CustomDialog {
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public GuideDialog setActionRunnable(int actionId, DialogXRunnable<CustomDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public GuideDialog cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public GuideDialog cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

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

@@ -730,4 +730,19 @@ public class InputDialog extends MessageDialog {
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public InputDialog setActionRunnable(int actionId, DialogXRunnable<MessageDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public InputDialog cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public InputDialog cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

+ 15 - 0
DialogX/src/main/java/com/kongzue/dialogx/dialogs/MessageDialog.java

@@ -1583,4 +1583,19 @@ public class MessageDialog extends BaseDialog {
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public MessageDialog setActionRunnable(int actionId, DialogXRunnable<MessageDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public MessageDialog cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public MessageDialog cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

+ 15 - 0
DialogX/src/main/java/com/kongzue/dialogx/dialogs/MessageMenu.java

@@ -1556,4 +1556,19 @@ public class MessageMenu extends MessageDialog {
         return enabled;
     }
 
+    public MessageMenu setActionRunnable(int actionId, DialogXRunnable<MessageDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public MessageMenu cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public MessageMenu cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
+
 }

+ 15 - 0
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopMenu.java

@@ -1529,4 +1529,19 @@ public class PopMenu extends BaseDialog {
         refreshUI();
         return this;
     }
+
+    public PopMenu setActionRunnable(int actionId, DialogXRunnable<PopMenu> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public PopMenu cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public PopMenu cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

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

@@ -1598,4 +1598,19 @@ public class PopNotification extends BaseDialog implements NoTouchInterface {
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public PopNotification setActionRunnable(int actionId, DialogXRunnable<PopNotification> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public PopNotification cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public PopNotification cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

+ 15 - 0
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopTip.java

@@ -1416,4 +1416,19 @@ public class PopTip extends BaseDialog implements NoTouchInterface {
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public PopTip setActionRunnable(int actionId, DialogXRunnable<PopTip> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public PopTip cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public PopTip cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

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

@@ -283,4 +283,19 @@ public class TipDialog extends WaitDialog {
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public TipDialog setActionRunnable(int actionId, DialogXRunnable<WaitDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public TipDialog cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public TipDialog cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

+ 15 - 0
DialogX/src/main/java/com/kongzue/dialogx/dialogs/WaitDialog.java

@@ -1318,4 +1318,19 @@ public class WaitDialog extends BaseDialog {
         setThisOrderIndex(getHighestOrderIndex());
         return this;
     }
+
+    public WaitDialog setActionRunnable(int actionId, DialogXRunnable<WaitDialog> runnable) {
+        dialogActionRunnableMap.put(actionId, runnable);
+        return this;
+    }
+
+    public WaitDialog cleanAction(int actionId){
+        dialogActionRunnableMap.remove(actionId);
+        return this;
+    }
+
+    public WaitDialog cleanAllAction(){
+        dialogActionRunnableMap.clear();
+        return this;
+    }
 }

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

@@ -81,6 +81,7 @@ public abstract class BaseDialog implements LifecycleOwner {
     protected DialogXRunnable onDismissRunnable;
     protected boolean enableImmersiveMode = true;   // 沉浸式适配
     protected int thisOrderIndex = 0;
+    protected Map<Integer, DialogXRunnable> dialogActionRunnableMap = new HashMap<Integer, DialogXRunnable>();
 
     public enum BUTTON_SELECT_RESULT {
         NONE,           // 未做出选择
@@ -1145,4 +1146,13 @@ public abstract class BaseDialog implements LifecycleOwner {
         }
         return getDialogView().dispatchTouchEvent(event);
     }
+
+    public boolean runAction(int actionId) {
+        DialogXRunnable runnable = dialogActionRunnableMap.get(actionId);
+        if (runnable != null) {
+            runnable.run(this);
+            return true;
+        }
+        return false;
+    }
 }

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

@@ -504,23 +504,39 @@ public class MainActivity extends BaseActivity {
         btnMessageDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                MessageDialog.show("标题", "这里是正文内容。", "确定").onShow(new DialogXRunnable<MessageDialog>() {
-                    @Override
-                    public void run(MessageDialog dialog) {
-                        tip("onShow");
-                    }
-                }).onDismiss(new DialogXRunnable<MessageDialog>() {
-                    @Override
-                    public void run(MessageDialog dialog) {
-                        tip("onDismiss");
-                    }
-                }).setTitleIcon(R.mipmap.img_demo_avatar).setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
-                    @Override
-                    public boolean onClick(MessageDialog baseDialog, View v) {
-                        PopTip.show("点击确定按钮");
-                        return false;
-                    }
-                });
+                MessageDialog.show("标题", "这里是正文内容。", "确定")
+                        .onShow(new DialogXRunnable<MessageDialog>() {
+                            @Override
+                            public void run(MessageDialog dialog) {
+                                tip("onShow");
+
+                                //预置操作:动作1
+                                dialog.setActionRunnable(1, new DialogXRunnable<MessageDialog>() {
+                                    @Override
+                                    public void run(MessageDialog dialog) {
+                                        tip("action 1 run!");
+                                        //举例:需要通过网络加载数据到 dialog 中显示
+                                    }
+                                });
+                                //执行动作1
+                                dialog.runAction(1);
+                            }
+                        }).onDismiss(new DialogXRunnable<MessageDialog>() {
+                            @Override
+                            public void run(MessageDialog dialog) {
+                                tip("onDismiss");
+                            }
+                        }).setTitleIcon(R.mipmap.img_demo_avatar)
+                        .setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
+                            @Override
+                            public boolean onClick(MessageDialog dialog, View v) {
+                                PopTip.show("点击确定按钮");
+                                //举例:点击ok按钮后执行了一些操作但需要在不关掉对话框情况下重新加载执行动作1
+                                //执行动作1
+                                dialog.runAction(1);
+                                return true;
+                            }
+                        });
             }
         });