瀏覽代碼

0.0.50.beta20 pre
- BottomDialog 提供了对外暴露的 boxBody(对话框内容布局外层)实例;
- WindowUtil 提供了额外自定义WindowManager.LayoutParams的接口:

```java
WindowUtil.windowSettings = new WindowUtil.WindowSettings() {
@Override
public WindowManager.LayoutParams overrideWindowLayoutParamsInterface(Context context, View dialogView, WindowManager.LayoutParams originWindowLayoutParams) {
//处理 originWindowLayoutParams...
return originWindowLayoutParams;
}
};
```

Kongzue 10 月之前
父節點
當前提交
f4f677478a

+ 15 - 3
DialogX/src/main/java/com/kongzue/dialogx/util/WindowUtil.java

@@ -29,7 +29,13 @@ import static android.view.WindowManager.LayoutParams.*;
  * @createTime: 2021/4/29 16:02
  */
 public class WindowUtil {
-    
+
+    public abstract static class WindowSettings {
+        public abstract WindowManager.LayoutParams overrideWindowLayoutParamsInterface(Context context, View dialogView, WindowManager.LayoutParams originWindowLayoutParams);
+    }
+
+    public static WindowSettings windowSettings;
+
     public static void show(Activity activity, View dialogView, boolean touchEnable) {
         try {
             if (activity.getWindow().getDecorView().isAttachedToWindow()) {
@@ -48,7 +54,7 @@ public class WindowUtil {
             }
         }
     }
-    
+
     private static void showNow(Activity activity, View dialogView, boolean touchEnable) {
         if (DialogX.globalHoverWindow && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(activity)) {
             Toast.makeText(activity, "使用 DialogX.globalHoverWindow 必须开启悬浮窗权限", Toast.LENGTH_LONG).show();
@@ -101,9 +107,15 @@ public class WindowUtil {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
             layoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
         }
+        if (windowSettings != null) {
+            WindowManager.LayoutParams layoutParamsTemp = windowSettings.overrideWindowLayoutParamsInterface(activity, dialogView, layoutParams);
+            if (layoutParamsTemp != null) {
+                layoutParams = layoutParamsTemp;
+            }
+        }
         manager.addView(rootLayout, layoutParams);
     }
-    
+
     public static void dismiss(View dialogView) {
         BaseDialog baseDialog = (BaseDialog) dialogView.getTag();
         if (baseDialog != null && baseDialog.getOwnActivity() != null) {

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

@@ -28,6 +28,7 @@ import android.webkit.WebView;
 import android.webkit.WebViewClient;
 import android.widget.AdapterView;
 import android.widget.EditText;
+import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
@@ -84,6 +85,7 @@ import com.kongzue.dialogx.style.KongzueStyle;
 import com.kongzue.dialogx.style.MIUIStyle;
 import com.kongzue.dialogx.style.MaterialStyle;
 import com.kongzue.dialogx.util.TextInfo;
+import com.kongzue.dialogx.util.WindowUtil;
 import com.kongzue.dialogxdemo.BuildConfig;
 import com.kongzue.dialogxdemo.R;
 import com.kongzue.dialogxdemo.custom.recycleview.CustomRecycleViewAdapter;
@@ -486,7 +488,8 @@ public class MainActivity extends BaseActivity {
         btnMessageDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                MessageDialog.show("标题", "这里是正文内容。", "确定").onShow(new DialogXRunnable<MessageDialog>() {
+                MessageDialog.show("标题", "这里是正文内容。", "确定")
+                        .onShow(new DialogXRunnable<MessageDialog>() {
                             @Override
                             public void run(MessageDialog dialog) {
                                 tip("onShow");
@@ -497,11 +500,12 @@ public class MainActivity extends BaseActivity {
                                 tip("onDismiss");
                             }
                         })
-                        .setTitleIcon(R.mipmap.img_demo_avatar).setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
+                        .setTitleIcon(R.mipmap.img_demo_avatar)
+                        .setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
                             @Override
                             public boolean onClick(MessageDialog baseDialog, View v) {
                                 PopTip.show("点击确定按钮");
-                                return true;
+                                return false;
                             }
                         });
             }