From c005a4f16258ffa1f40dc3ff53317e4ccd4fa88b Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+NekoInverter@users.noreply.github.com> Date: Sun, 15 Nov 2020 23:22:33 +0800 Subject: [PATCH] Use own drawerlayout library --- app/build.gradle | 2 +- .../java/com/hippo/ehviewer/ui/MainActivity.java | 16 +++++++++++++++- .../com/hippo/ehviewer/ui/scene/BaseScene.java | 16 ++++++++++++++++ .../ehviewer/ui/scene/GalleryDetailScene.java | 9 ++++++--- .../hippo/ehviewer/widget/EhDrawerLayout.java | 2 +- 5 files changed, 39 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5eede8ec7..383f94f71 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,6 @@ apply plugin: 'com.google.android.gms.oss-licenses-plugin' android { compileSdkVersion 30 - buildToolsVersion "30.0.2" ndkVersion "21.3.6528147" signingConfigs { def keystorePwd = null @@ -112,6 +111,7 @@ dependencies { implementation 'com.squareup.okhttp3:okhttp:3.14.7' implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:3.14.7' implementation 'com.takisoft.preferencex:preferencex:1.1.0' + implementation 'com.github.NekoInverter:DrawerLayout:6ba992f8d4' implementation 'com.github.NekoInverter:Image:8fd6c1e1df' implementation 'com.github.NekoInverter.preferencex-android:preferencex-simplemenu:88f93154b2' implementation 'org.ccil.cowan.tagsoup:tagsoup:1.2.1' diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java index aabe3b241..995b3cbd5 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -39,12 +39,12 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.appcompat.app.AppCompatDelegate; -import androidx.drawerlayout.widget.DrawerLayout; import com.google.android.material.card.MaterialCardView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.navigation.NavigationView; import com.google.android.material.snackbar.Snackbar; +import com.hippo.drawerlayout.DrawerLayout; import com.hippo.ehviewer.AppConfig; import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.R; @@ -679,4 +679,18 @@ public final class MainActivity extends StageActivity break; } } + + public void setDrawerGestureBlocker(EhDrawerLayout.GestureBlocker gestureBlocker) { + if (mDrawerLayout != null) { + mDrawerLayout.setGestureBlocker(gestureBlocker); + } + } + + public boolean isDrawersVisible() { + if (mDrawerLayout != null) { + return mDrawerLayout.isDrawersVisible(); + } else { + return false; + } + } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java index 25bac4143..e0de9263f 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java @@ -112,6 +112,13 @@ public abstract class BaseScene extends SceneFragment { } } + public void setDrawerGestureBlocker(EhDrawerLayout.GestureBlocker gestureBlocker) { + FragmentActivity activity = getActivity(); + if (activity instanceof MainActivity) { + ((MainActivity) activity).setDrawerGestureBlocker(gestureBlocker); + } + } + public void toggleDrawer(int drawerGravity) { FragmentActivity activity = getActivity(); if (activity instanceof MainActivity) { @@ -119,6 +126,15 @@ public abstract class BaseScene extends SceneFragment { } } + public boolean isDrawersVisible() { + FragmentActivity activity = getActivity(); + if (activity instanceof MainActivity) { + return ((MainActivity) activity).isDrawersVisible(); + } else { + return false; + } + } + public void showTip(CharSequence message, int length) { FragmentActivity activity = getActivity(); if (activity instanceof MainActivity) { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index 33b5d5de5..678a446a0 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -38,9 +38,11 @@ import android.util.Pair; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MenuItem; +import android.view.MotionEvent; import android.view.View; import android.view.ViewAnimationUtils; import android.view.ViewGroup; +import android.view.ViewParent; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; @@ -93,6 +95,7 @@ import com.hippo.ehviewer.ui.CommonOperations; import com.hippo.ehviewer.ui.GalleryActivity; import com.hippo.ehviewer.ui.MainActivity; import com.hippo.ehviewer.ui.annotation.WholeLifeCircle; +import com.hippo.ehviewer.widget.EhDrawerLayout; import com.hippo.ehviewer.widget.GalleryRatingBar; import com.hippo.scene.Announcer; import com.hippo.scene.SceneFragment; @@ -483,7 +486,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene AssertUtils.assertNotNull(context); View actionsScrollView = ViewUtils.$$(view, R.id.actions_scroll_view); - /*setDrawerGestureBlocker(new DrawerLayout.GestureBlocker() { + setDrawerGestureBlocker(new EhDrawerLayout.GestureBlocker() { private void transformPointToViewLocal(int[] point, View child) { ViewParent viewParent = child.getParent(); @@ -492,7 +495,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene point[0] += view.getScrollX() - child.getLeft(); point[1] += view.getScrollY() - child.getTop(); - if (view instanceof DrawerLayout) { + if (view instanceof EhDrawerLayout) { break; } @@ -509,7 +512,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene && point[0] > 0 && point[0] < actionsScrollView.getWidth() && point[1] > 0 && point[1] < actionsScrollView.getHeight(); } - });*/ + }); Drawable drawable = DrawableManager.getVectorDrawable(context, R.drawable.big_sad_pandroid); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); diff --git a/app/src/main/java/com/hippo/ehviewer/widget/EhDrawerLayout.java b/app/src/main/java/com/hippo/ehviewer/widget/EhDrawerLayout.java index 0dd6af8a8..f91d76b4d 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/EhDrawerLayout.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/EhDrawerLayout.java @@ -25,9 +25,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.view.ViewCompat; -import androidx.drawerlayout.widget.DrawerLayout; import com.google.android.material.snackbar.Snackbar; +import com.hippo.drawerlayout.DrawerLayout; import com.hippo.yorozuya.LayoutUtils; import java.util.ArrayList;