Преглед изворни кода

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 година
родитељ
комит
314846dbbc

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

@@ -942,7 +942,6 @@ public class BottomDialog extends BaseDialog implements DialogXBaseBottomDialog
 
     public BottomDialog setAllowInterceptTouch(boolean allowInterceptTouch) {
         this.allowInterceptTouch = allowInterceptTouch;
-        refreshUI();
         return this;
     }
 

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/util/BottomDialogTouchEventInterceptor.java

@@ -83,7 +83,7 @@ public class BottomDialogTouchEventInterceptor {
                             bkgOldY = impl.boxBkg.getY();
                             break;
                         case MotionEvent.ACTION_MOVE:
-                            if (isBkgTouched) {
+                            if (isBkgTouched && me.isAllowInterceptTouch()) {
                                 float aimY = impl.boxBkg.getY() + event.getY() - bkgTouchDownY;
                                 if (impl.scrollView.isCanScroll() && touchInScrollView(finalInterceptTouchView, impl.scrollView, event)) {
                                     if (aimY > impl.boxRoot.getUnsafePlace().top) {

+ 18 - 3
DialogX/src/main/java/com/kongzue/dialogx/util/views/FitSystemBarUtils.java

@@ -128,6 +128,8 @@ public class FitSystemBarUtils {
         applyWindowInsets();
     }
 
+    View.OnLayoutChangeListener rootViewLayoutChangeListener;
+
     public void applyWindowInsets() {
 //        view.fitsSystemWindows = true
         //创建原始padding的快照
@@ -185,11 +187,14 @@ public class FitSystemBarUtils {
                     view.removeOnAttachStateChangeListener(this);
 
                     log("KONGZUE DEBUG DIALOGX: onViewAttachedToWindow");
-                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH && Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
                         if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
                             //修复<=API29的部分设备上存在的非安全区不回调的问题
                             View parentView = (View) view.getParent();
-                            parentView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
+                            if (rootViewLayoutChangeListener != null) {
+                                parentView.removeOnLayoutChangeListener(rootViewLayoutChangeListener);
+                            }
+                            rootViewLayoutChangeListener = new View.OnLayoutChangeListener() {
                                 @Override
                                 public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                                     WindowInsets windowInsets = v.getRootView().getRootWindowInsets();
@@ -200,8 +205,18 @@ public class FitSystemBarUtils {
                                         log("    KONGZUE DEBUG DIALOGX: RootView not get Insets");
                                     }
                                 }
-                            });
+                            };
+                            parentView.addOnLayoutChangeListener(rootViewLayoutChangeListener);
+                            parentView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
+                                @Override
+                                public void onViewAttachedToWindow(View v) {
+                                }
 
+                                @Override
+                                public void onViewDetachedFromWindow(View v) {
+                                    parentView.removeOnLayoutChangeListener(rootViewLayoutChangeListener);
+                                }
+                            });
                         }
                     }
 

+ 15 - 13
DialogXIOSStyle/src/main/java/com/kongzue/dialogx/style/views/BlurLinearLayout.java

@@ -381,20 +381,22 @@ public class BlurLinearLayout extends MaxLinearLayout implements BlurViewType {
         } else {
             activity = BaseDialog.getTopActivity();
         }
-        ViewGroup decorView = ((ViewGroup) activity.getWindow().getDecorView());
-        if (decorView.getChildCount() >= 1) {
-            mDecorView = decorView.getChildAt(0);
-        }
-        if (mDecorView != null) {
-            log("mDecorView is ok.");
-            mDecorView.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
-            mDifferentRoot = mDecorView.getRootView() != getRootView();
-            if (mDifferentRoot) {
-                mDecorView.postInvalidate();
+        if (activity != null) {
+            ViewGroup decorView = ((ViewGroup) activity.getWindow().getDecorView());
+            if (decorView.getChildCount() >= 1) {
+                mDecorView = decorView.getChildAt(0);
+            }
+            if (mDecorView != null) {
+                log("mDecorView is ok.");
+                mDecorView.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
+                mDifferentRoot = mDecorView.getRootView() != getRootView();
+                if (mDifferentRoot) {
+                    mDecorView.postInvalidate();
+                }
+            } else {
+                log("mDecorView is NULL.");
+                mDifferentRoot = false;
             }
-        } else {
-            log("mDecorView is NULL.");
-            mDifferentRoot = false;
         }
     }
 

+ 15 - 13
DialogXIOSStyle/src/main/java/com/kongzue/dialogx/style/views/BlurRelativeLayout.java

@@ -380,20 +380,22 @@ public class BlurRelativeLayout extends MaxRelativeLayout implements BlurViewTyp
         } else {
             activity = BaseDialog.getTopActivity();
         }
-        ViewGroup decorView = ((ViewGroup) activity.getWindow().getDecorView());
-        if (decorView.getChildCount() >= 1) {
-            mDecorView = decorView.getChildAt(0);
-        }
-        if (mDecorView != null) {
-            log("mDecorView is ok.");
-            mDecorView.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
-            mDifferentRoot = mDecorView.getRootView() != getRootView();
-            if (mDifferentRoot) {
-                mDecorView.postInvalidate();
+        if (activity != null) {
+            ViewGroup decorView = ((ViewGroup) activity.getWindow().getDecorView());
+            if (decorView.getChildCount() >= 1) {
+                mDecorView = decorView.getChildAt(0);
+            }
+            if (mDecorView != null) {
+                log("mDecorView is ok.");
+                mDecorView.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
+                mDifferentRoot = mDecorView.getRootView() != getRootView();
+                if (mDifferentRoot) {
+                    mDecorView.postInvalidate();
+                }
+            } else {
+                log("mDecorView is NULL.");
+                mDifferentRoot = false;
             }
-        } else {
-            log("mDecorView is NULL.");
-            mDifferentRoot = false;
         }
     }
 

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

@@ -802,6 +802,13 @@ public class MainActivity extends BaseActivity {
             @Override
             public void onClick(View v) {
                 MessageDialog.show("这里是标题", "此对话框演示的是自定义对话框内部布局的效果", "确定", "取消")
+                        .setDialogLifecycleCallback(new BottomDialogSlideEventLifecycleCallback<MessageDialog>() {
+                            @Override
+                            public void onShow(MessageDialog dialog) {
+                                super.onShow(dialog);
+                                dialog.getDialogImpl().txtDialogTip.setPadding(0,dip2px(20),0,0);
+                            }
+                        })
                         .setCustomView(new OnBindView<MessageDialog>(R.layout.layout_custom_view) {
                             @Override
                             public void onBind(MessageDialog dialog, View v) {

+ 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.beta15
+BUILD_VERSION=0.0.49.beta17
 BUILD_VERSION_INT=48
 DIALOGX_STYLE_VERSION=5
 android.nonTransitiveRClass=true