浏览代码

0.0.44.beta18

kongzue 3 年之前
父节点
当前提交
0d8288efca

+ 17 - 0
.idea/deploymentTargetDropDown.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="deploymentTargetDropDown">
+    <runningDeviceTargetSelectedWithDropDown>
+      <Target>
+        <type value="RUNNING_DEVICE_TARGET" />
+        <deviceKey>
+          <Key>
+            <type value="SERIAL_NUMBER" />
+            <value value="0A201FDD4001T7" />
+          </Key>
+        </deviceKey>
+      </Target>
+    </runningDeviceTargetSelectedWithDropDown>
+    <timeTargetWasSelectedWithDropDown value="2022-03-17T11:04:21.646282300Z" />
+  </component>
+</project>

+ 1 - 0
.idea/misc.xml

@@ -36,6 +36,7 @@
         <entry key="..\:/WorkSpace/Android/DialogXDemo/DialogX/src/main/res/layout/layout_dialogx_fullscreen.xml" value="0.5411458333333333" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/DialogX/src/main/res/layout/layout_dialogx_fullscreen_dark.xml" value="0.5411458333333333" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/DialogX/src/main/res/layout/layout_dialogx_material.xml" value="0.5411458333333333" />
+        <entry key="..\:/WorkSpace/Android/DialogXDemo/DialogX/src/main/res/layout/layout_dialogx_material_dark.xml" value="0.5369791666666667" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/DialogX/src/main/res/layout/layout_dialogx_popmenu_material.xml" value="0.5411458333333333" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/DialogX/src/main/res/layout/layout_dialogx_popmenu_material_dark.xml" value="0.5411458333333333" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/DialogX/src/main/res/layout/layout_dialogx_poptip_material.xml" value="0.4101851851851852" />

+ 1 - 0
DialogX/build.gradle

@@ -31,6 +31,7 @@ artifacts {
 }
 dependencies {
     implementation 'androidx.appcompat:appcompat:1.2.0+'
+    implementation 'androidx.constraintlayout:constraintlayout:2.0.4+'
     compileOnly files('libs\\androidx-rs.jar')
     api files('libs\\DialogXInterface.jar')
 }

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/impl/ActivityLifecycleImpl.java

@@ -116,7 +116,7 @@ public class ActivityLifecycleImpl implements Application.ActivityLifecycleCallb
                  *  此标记影响的问题主要是在BottomDialog以及FullScreenDialog弹出后,
                  *  显示其它对话框出现的底部非安全区高度异常的情况
                  */
-                if (DialogX.useActivityLayoutTranslationNavigationBar && ((window.getDecorView().getSystemUiVisibility() & View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) != View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)) {
+                if ((window.getDecorView().getSystemUiVisibility() & View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) != View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) {
                     window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
                 }
             }

+ 16 - 1
DialogX/src/main/java/com/kongzue/dialogx/interfaces/BaseDialog.java

@@ -23,8 +23,12 @@ import android.widget.FrameLayout;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.fragment.app.FragmentManager;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleEventObserver;
+import androidx.lifecycle.LifecycleOwner;
 
 import com.kongzue.dialogx.DialogX;
 import com.kongzue.dialogx.R;
@@ -612,6 +616,17 @@ public abstract class BaseDialog {
         if (style.styleVer != DialogXStyle.styleVer) {
             error("DialogX 所引用的 Style 不符合当前适用版本:" + DialogXStyle.styleVer + " 引入的 Style(" + style.getClass().getSimpleName() + ") 版本" + style.styleVer);
         }
+        if (dialogImplMode != DialogX.IMPL_MODE.VIEW && getContext() instanceof LifecycleOwner) {
+            Lifecycle lifecycle = ((LifecycleOwner) getContext()).getLifecycle();
+            lifecycle.addObserver(new LifecycleEventObserver() {
+                @Override
+                public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) {
+                    if (event == Lifecycle.Event.ON_DESTROY) {
+                        recycleDialog((Activity) getContext());
+                    }
+                }
+            });
+        }
         
         //Hide IME
         View view = ((Activity) BaseDialog.getContext()).getCurrentFocus();
@@ -795,7 +810,7 @@ public abstract class BaseDialog {
     
     static WeakReference<Handler> mMainHandler;
     
-    private static Handler getMainHandler(){
+    private static Handler getMainHandler() {
         if (mMainHandler != null && mMainHandler.get() != null) {
             return mMainHandler.get();
         }

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

@@ -352,7 +352,7 @@ public class MainActivity extends BaseActivity {
             @Override
             public void onClick(View v) {
                 PopMenu.show(v, new String[]{"选项1", "选项2", "选项3"})
-                        .setOverlayBaseView(false)
+                        .setOverlayBaseView(true)
                         .setOnMenuItemClickListener(new OnMenuItemClickListener<PopMenu>() {
                             @Override
                             public boolean onClick(PopMenu dialog, CharSequence text, int index) {
@@ -790,7 +790,7 @@ public class MainActivity extends BaseActivity {
                             }
                         });
                         
-                        webView.loadUrl("https://www.kongzue.com/");
+                        webView.loadUrl("https://github.com/kongzue/DialogX");
                     }
                 });
             }

+ 66 - 0
app/src/main/java/com/kongzue/dialogxdemo/custom/SCWebView.java

@@ -0,0 +1,66 @@
+package com.kongzue.dialogxdemo.custom;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.webkit.WebView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.kongzue.dialogx.interfaces.ScrollController;
+
+/**
+ * @author: Kongzue
+ * @github: https://github.com/kongzue/
+ * @homepage: http://kongzue.com/
+ * @mail: myzcxhh@live.cn
+ * @createTime: 2022/3/4 13:02
+ */
+public class SCWebView extends WebView implements ScrollController {
+    public SCWebView(@NonNull Context context) {
+        super(context);
+    }
+    
+    public SCWebView(@NonNull Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+    
+    public SCWebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+    
+    public SCWebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+    
+    @Override
+    @Deprecated
+    public boolean isLockScroll() {
+        return lockScroll;
+    }
+    
+    boolean lockScroll;
+    
+    @Override
+    public void lockScroll(boolean lockScroll) {
+        this.lockScroll = lockScroll;
+    }
+    
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        if (lockScroll) return false;
+        return super.onTouchEvent(event);
+    }
+    
+    @Override
+    public int getScrollDistance() {
+        return getScrollY();
+    }
+    
+    @Override
+    public boolean isCanScroll() {
+        return true;
+    }
+}

+ 3 - 2
app/src/main/res/layout/layout_full_webview.xml

@@ -27,8 +27,9 @@
 
     </LinearLayout>
 
-    <WebView
+    <com.kongzue.dialogxdemo.custom.SCWebView
         android:id="@+id/webView"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_height="match_parent"
+        android:tag="ScrollController" />
 </LinearLayout>

+ 1 - 1
gradle.properties

@@ -19,5 +19,5 @@ android.useAndroidX=true
 # Automatically convert third-party libraries to use AndroidX
 android.enableJetifier=true
 
-BUILD_VERSION=0.0.44.beta17
+BUILD_VERSION=0.0.44.beta18
 BUILD_VERSION_INT=43