Browse Source

0.0.49.15 ready
- 修复 FullScreenDialog 滑动错位问题;
- 修复 API-29的设备上非安全区判定不稳定的问题;

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 năm trước cách đây
mục cha
commit
3e4cbb1fd2

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

@@ -166,10 +166,10 @@ public class FullScreenDialog extends BaseDialog implements DialogXBaseBottomDia
         public float bkgEnterAimY = -1;
         protected int enterY;
 
-        private Rect mUnsafeRect = new Rect(0,0,0,0);
+        private Rect mUnsafeRect = new Rect(0, 0, 0, 0);
 
         public float getEnterY() {
-            return boxRoot.getSafeHeight() - enterY > 0 ? boxRoot.getSafeHeight() - enterY : 0;
+            return Math.max(0, boxRoot.getSafeHeight() - enterY);
         }
 
         @Override
@@ -439,7 +439,7 @@ public class FullScreenDialog extends BaseDialog implements DialogXBaseBottomDia
                 bkg.setY(thisVal);
 
                 makeEnterY();
-                float newBkgEnterAimY = getMinY();
+                float newBkgEnterAimY = getEnterY();
                 if (newBkgEnterAimY < 0) newBkgEnterAimY = 0;
                 if (newBkgEnterAimY != bkgEnterAimY) {
                     bkgEnterAimY = newBkgEnterAimY;
@@ -543,10 +543,6 @@ public class FullScreenDialog extends BaseDialog implements DialogXBaseBottomDia
             }
             return enterAnimDurationTemp;
         }
-
-        public float getMinY() {
-            return boxRoot.getSafeHeight() - enterY - boxRoot.getUnsafePlace().bottom - boxRoot.getUnsafePlace().top;
-        }
     }
 
     @Override

+ 5 - 6
DialogX/src/main/java/com/kongzue/dialogx/util/FullScreenDialogTouchEventInterceptor.java

@@ -3,7 +3,6 @@ package com.kongzue.dialogx.util;
 import android.animation.ObjectAnimator;
 import android.content.res.Resources;
 import android.graphics.RectF;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
 
@@ -52,7 +51,6 @@ public class FullScreenDialogTouchEventInterceptor {
                             bkgTouchDownY = event.getY();
                             isBkgTouched = true;
                             bkgOldY = impl.bkg.getY();
-                            Log.e(">>>", "onTouchDown: " + bkgOldY );
                             break;
                         case MotionEvent.ACTION_MOVE:
                             if (isBkgTouched) {
@@ -71,11 +69,12 @@ public class FullScreenDialogTouchEventInterceptor {
                                         if (impl.scrollView instanceof ScrollController) {
                                             ((ScrollController) impl.scrollView).lockScroll(false);
                                         }
-                                        impl.bkg.setY(me.getDialogImpl().getEnterY());
+                                        aimY = (me.getDialogImpl().getEnterY());
+                                        impl.bkg.setY(aimY);
                                     }
                                 } else {
-                                    if (aimY < me.getDialogImpl().getMinY()) {
-                                        aimY = me.getDialogImpl().getMinY();
+                                    if (aimY < me.getDialogImpl().getEnterY()) {
+                                        aimY = me.getDialogImpl().getEnterY();
                                     }
                                     impl.bkg.setY(aimY);
                                 }
@@ -134,7 +133,7 @@ public class FullScreenDialogTouchEventInterceptor {
      * @param event      触摸事件
      * @return 是否在范围内
      */
-    private boolean touchInScrollView( View slideView, ScrollController scrollView, MotionEvent event) {
+    private boolean touchInScrollView(View slideView, ScrollController scrollView, MotionEvent event) {
         View scrollViewImpl = (View) scrollView;
         RectF scrollViewLocation = new RectF();
         int[] scrollViewScreenLoc = new int[2];

+ 0 - 11
DialogX/src/main/java/com/kongzue/dialogx/util/views/DialogXBaseRelativeLayout.java

@@ -3,29 +3,19 @@ package com.kongzue.dialogx.util.views;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.TypedArray;
-import android.graphics.Insets;
 import android.graphics.Rect;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.util.AttributeSet;
-import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewParent;
-import android.view.ViewTreeObserver;
-import android.view.WindowInsets;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.RelativeLayout;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.Px;
-import androidx.annotation.RequiresApi;
-import androidx.core.view.ViewCompat;
-import androidx.core.view.WindowInsetsAnimationCompat;
-import androidx.core.view.WindowInsetsCompat;
 
 import com.kongzue.dialogx.DialogX;
 import com.kongzue.dialogx.R;
@@ -146,7 +136,6 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
                                 return;
                             }
                         }
-                        unsafePlace.bottom = 0;
                         bkgView.setPadding(0, 0, 0, bottom);
                     }
                 }

+ 13 - 1
DialogX/src/main/java/com/kongzue/dialogx/util/views/FitSystemBarUtils.java

@@ -3,9 +3,10 @@ package com.kongzue.dialogx.util.views;
 
 import static androidx.core.view.WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_CONTINUE_ON_SUBTREE;
 
-import android.graphics.Rect;
 import android.os.Build;
 import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowInsets;
 
 import androidx.annotation.NonNull;
 import androidx.core.graphics.Insets;
@@ -177,6 +178,17 @@ public class FitSystemBarUtils {
                 @Override
                 public void onViewAttachedToWindow(View view) {
                     view.removeOnAttachStateChangeListener(this);
+
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
+                        //别问为啥,问就是在解决API-29的设备上不稳定的问题
+                        ((ViewGroup)view.getParent()).setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
+                            @Override
+                            public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
+                                return insets;
+                            }
+                        });
+                    }
+
                     ViewCompat.requestApplyInsets(view);
                 }