Jelajahi Sumber

0.0.49.beta21
- 修复 #394、#392 相关问题;

0.0.49.beta20
- 尝试修复 activity 处于全屏情况下可能存在的输入法弹出对话框无法上移的问题;

0.0.49.beta19
- 尝试修复 #387 #388 bug

0.0.49.beta18
- 尝试修复 #370 bug

0.0.49.beta17
- 修复<=API29的部分设备上存在的非安全区不回调的问题;
- 合并 #377 的 PR
- 其他问题修复

0.0.49.beta14 ready
- 修复 PopNotification 存在的显示位置错误问题;
- 修复 InputDialog 点击背景无法关闭的问题;
- 修复 FullScreenDialog 滑动错位问题;
- 修复 OnBindView 回调 view 不为 customView 的问题;

0.0.49.beta13
- FullScreenDialog 增加 maskColor 设置;
- 修复 IOS 主题下 MessageDialog 使用 build() 构建模式时无法设置背景颜色的问题;
- 修复 CustomDialog 设置 FullScreen 属性无效的问题;

0.0.49.beta12 ready
- 尝试修正 padding属性设置错误的bug(via @Matcha-xiaobin #356);
- 修复了 PopTip 在频繁弹出时某些已经显示的 PopTip 可能存在的导致异常显示在屏幕顶部的问题;
- BottomDialog 增加 setScrollableWhenContentLargeThanVisibleRange(boolean) 允许将自定义布局添加到对话框本身存在的 ScrollView 外,请注意此方法将会使自定义布局添加到 Title Text、Content(Message Text)之间;

0.0.49.beta11
- 修复部分已知问题;

0.0.49.beta10
- 完善 OnBindView 内部逻辑,当dialog和view相同时不重复执行onBind事件;
- WaitDialog新增onShow(DialogXRunnable)和onDismiss(DialogXRunnable);
- 尝试修复可能存在的问题;

0.0.49.beta9
- 菜单布局结构优化;

0.0.49.beta8
- 对话框内的 dialogView 引用进行了处理,以及 PopTip 的 baseView,减少在低版本安卓系统上出现内存泄漏的可能性
- FullScreenDialog 新增了方法 hideActivityContentView(boolean) 用于设置是否在显示 FullScreenDialog 时不对 activity 的界面内容进行渲染,这将提升一定的性能,此方法只可以在使用 build 方法构建且在执行show方法之前使用,但这将引发一些问题,例如输入法弹出时 FullScreenDialog 无法上浮等;
- 其他问题修复;

0.0.49.beta6
- 对 BottomMenu 的 setOkButton、setCancelButton、setOtherButton 提供了单独的 OnBottomMenuButtonClickListener 参数接口,可直接提供 BottomMenu 参数的 onClick 回调事件;
- BottomDialog/BottomMenu 新增 set/get OkTextInfo 和 OtherTextInfo 方法;
- 修复 DialogXBaseRelativeLayout 可能存在的嵌套循环调用 requestFocus() 方法的问题;
- 修复关于 WaitDialog 设置背景颜色不生效的问题;

0.0.49.beta5 ready
- ActivityScreenShotImageView 增加静态方法 useHardwareRenderingMode,开启可使用硬件加速渲染模式;
- 修复部分系统下 ActivityScreenShotImageView 在执行回收时触发的“Software rendering doesn't support hardware bitmaps.”异常;
- 其他问题修复;

0.0.49.beta4 ready
- 修复部分系统下 BlurRelativeLayout 或 BlurRelativeLayout 在执行回收时触发的“Calling RS with no Context active.”异常;
- ActivityScreenShotImageView 截图方案更新;

0.0.49.beta4 ready
- 修复在部分设备上由 DialogXBaseRelativeLayout 引发的 StackOverflowError,此问题猜测跟特定版本系统固件存在问题有关;

0.0.49.beta3
- 修复 ActivityScreenShotImageView 可能引发的“Software rendering doesn’t support hardware bitmaps” 异常;
- 修复 BottomDialog/FullScreenDialog 的滑动事件在内部存在 ScrollController 时,若触摸位置处于 ScrollController 布局外无法滑动对话框的问题;

0.0.49.beta2
- InputInfo新增方法:`getInputFilters()`、`setInputFilters(InputFilter[] inputFilters)`、`addInputFilter(InputFilter inputFilter)` 和 `removeInputFilter(InputFilter inputFilter)`(issues:332);
- 尝试性修复 DialogFragment 模式实现下的 WaitDialog 内存泄漏问题(issues:334);
- 修复关于DialogFragmentImpl引发的空指针问题此问题(issues:335);

0.0.49.beta1
- 修复 BlurRelativeLayout 和 BlurLinearLayout 在 iOS 主题下使用 DialogFragment 模式时存在的渲染宽度和高度 <=0 导致的异常(issues:324);
- 修复 IOS 主题下可能存在的 `RSInvalidStateException: Calling RS with no Context active` 异常问题(issues:327);
- 修复可能存在的高频启关对话框过程中,因UI未完成构建被关闭引发的空指针异常(issues:331);

Kongzue 1 tahun lalu
induk
melakukan
4b7aa7603e

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

@@ -434,8 +434,6 @@ public class FullScreenDialog extends BaseDialog implements DialogXBaseBottomDia
                 int thisVal = (int) animation.getAnimatedValue();
                 bkg.setY(thisVal);
 
-                log("anim: " +thisVal);
-
                 makeEnterY();
                 float newBkgEnterAimY = boxRoot.getSafeHeight() - enterY;
                 if (newBkgEnterAimY < 0) newBkgEnterAimY = 0;

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

@@ -277,6 +277,7 @@ public abstract class BaseDialog implements LifecycleOwner {
         }
         final BaseDialog baseDialog = (BaseDialog) view.getTag();
         if (baseDialog != null) {
+            baseDialog.setOwnActivity(activity);
             if (baseDialog.getDialogView() != null) {
                 baseDialog.getDialogView().setVisibility(View.VISIBLE);
             }
@@ -779,7 +780,7 @@ public abstract class BaseDialog implements LifecycleOwner {
         if (ownActivity != null) {
             ownActivity.clear();
         }
-        dialogView=null;
+        dialogView = null;
         ownActivity = null;
     }
 
@@ -1010,7 +1011,7 @@ public abstract class BaseDialog implements LifecycleOwner {
         return styleValue;
     }
 
-    protected void setDialogView(View view){
+    protected void setDialogView(View view) {
         dialogView = new WeakReference<>(view);
     }
 }

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

@@ -8,16 +8,13 @@ import android.widget.FrameLayout;
 import android.widget.RelativeLayout;
 
 import com.kongzue.dialogx.DialogX;
-import com.kongzue.dialogx.R;
 import com.kongzue.dialogx.util.views.ExtendChildLayoutParamsFrameLayout;
 
 import static com.kongzue.dialogx.DialogX.ERROR_INIT_TIPS;
-import static com.kongzue.dialogx.interfaces.BaseDialog.log;
 
 import androidx.appcompat.app.AppCompatActivity;
 
-import java.lang.reflect.Field;
-import java.util.Random;
+import java.security.SecureRandom;
 
 /**
  * @author: Kongzue
@@ -82,7 +79,7 @@ public abstract class OnBindView<D> {
     }
 
     private int createFragmentParentId() {
-        fragmentParentId = new Random().nextInt();
+        fragmentParentId = new SecureRandom().nextInt();
         View somebodyView = BaseDialog.getTopActivity().findViewById(fragmentParentId);
         if (somebodyView != null) {
             return createFragmentParentId();

+ 7 - 0
app/src/main/AndroidManifest.xml

@@ -21,6 +21,13 @@
             android:theme="@style/AppCompatTheme"
             android:windowSoftInputMode="adjustResize" />
 
+
+        <activity
+            android:name=".activity.TestMainActivity"
+            android:exported="false"
+            android:theme="@style/AppCompatTheme"
+            android:windowSoftInputMode="adjustResize" />
+
 <!--            android:name=".activity.MainActivity"-->
 <!--            android:name=".activity.TestMainActivity"-->
 

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

@@ -1070,7 +1070,7 @@ public class MainActivity extends BaseActivity {
                                 });
                             }
                         })
-                        .setAlign(CustomDialog.ALIGN.LEFT)
+//                        .setAlign(CustomDialog.ALIGN.LEFT)
                         //.setAnimResId(R.anim.anim_right_in, R.anim.anim_right_out)
                         .setMaskColor(getResources().getColor(com.kongzue.dialogx.iostheme.R.color.black30))
                 //实现完全自定义动画效果

+ 38 - 3
app/src/main/java/com/kongzue/dialogxdemo/activity/TestMainActivity.java

@@ -2,6 +2,9 @@ package com.kongzue.dialogxdemo.activity;
 
 import android.os.Build;
 import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
 
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.AppCompatActivity;
@@ -11,6 +14,9 @@ import androidx.core.view.WindowCompat;
 import androidx.core.view.WindowInsetsCompat;
 
 import com.kongzue.dialogx.dialogs.BottomDialog;
+import com.kongzue.dialogx.dialogs.CustomDialog;
+import com.kongzue.dialogx.interfaces.DialogLifecycleCallback;
+import com.kongzue.dialogx.interfaces.OnBindView;
 import com.kongzue.dialogxdemo.R;
 
 public class TestMainActivity extends AppCompatActivity {
@@ -24,9 +30,38 @@ public class TestMainActivity extends AppCompatActivity {
         }
         WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
         findViewById(R.id.btn_showDialog).setOnClickListener(view -> {
-            BottomDialog.show("标题", "这里是对话框内容。")
-                    .setCancelButton("取消", (dialog, v) -> false)
-                    .setOkButton("确定", (dialog, v) -> false);
+//            BottomDialog.show("标题", "这里是对话框内容。")
+//                    .setCancelButton("取消", (dialog, v) -> false)
+//                    .setOkButton("确定", (dialog, v) -> false);
+
+            MainActivity mainActivity = MainActivity.getActivity(MainActivity.class);
+            CustomDialog.build(new OnBindView<CustomDialog>(R.layout.layout_custom_dialog) {
+                        @Override
+                        public void onBind(final CustomDialog dialog, View v) {
+                            ImageView btnOk;
+                            btnOk = v.findViewById(R.id.btn_ok);
+                            btnOk.setOnClickListener(new View.OnClickListener() {
+                                @Override
+                                public void onClick(View v) {
+                                    dialog.dismiss();
+                                }
+                            });
+                        }
+                    })
+                    .setDialogLifecycleCallback(new DialogLifecycleCallback<CustomDialog>() {
+                        @Override
+                        public void onShow(CustomDialog dialog) {
+                            Log.e(">>>", "onShow " );
+                            super.onShow(dialog);
+                        }
+
+                        @Override
+                        public void onDismiss(CustomDialog dialog) {
+                            Log.e(">>>", "onDismiss " );
+                            super.onDismiss(dialog);
+                        }
+                    })
+                    .show(mainActivity);
         });
     }
 }

+ 1 - 1
gradle.properties

@@ -19,7 +19,7 @@ android.useAndroidX=true
 # Automatically convert third-party libraries to use AndroidX
 android.enableJetifier=true
 
-BUILD_VERSION=0.0.49.beta20
+BUILD_VERSION=0.0.49.beta21
 BUILD_VERSION_INT=48
 DIALOGX_STYLE_VERSION=5
 android.nonTransitiveRClass=true