Skip to content
This repository was archived by the owner on May 4, 2023. It is now read-only.

Commit 7b60a51

Browse files
committed
Use Android 12 stretch overscroll
1 parent 7757f6f commit 7b60a51

File tree

7 files changed

+20
-88
lines changed

7 files changed

+20
-88
lines changed

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ dependencies {
9393
implementation "dev.rikka.rikkax.layoutinflater:layoutinflater:1.2.0"
9494
implementation "dev.rikka.rikkax.insets:insets:1.2.0"
9595
implementation 'com.github.Dimezis:BlurView:version-1.6.6'
96+
implementation 'com.github.KieronQuinn:MonetCompat:0.4.1'
9697

9798
// Utils
9899
implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:4.9.3'

app/src/main/java/com/fox2code/mmm/MainActivity.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ protected void onCreate(Bundle savedInstanceState) {
103103
this.moduleList.setAdapter(this.moduleViewAdapter);
104104
this.moduleList.setLayoutManager(new LinearLayoutManager(this));
105105
this.moduleList.setItemViewCacheSize(4); // Default is 2
106-
OverScrollManager.install(this.moduleList, this);
107106
this.swipeRefreshLayout.setOnRefreshListener(this);
108107
this.actionBarBlur.setBackground(this.actionBarBackground);
109108
this.actionBarBlur.setupWith(this.moduleList).setFrameClearDrawable(
Lines changed: 0 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
package com.fox2code.mmm;
22

3-
import android.util.Log;
4-
import android.view.View;
5-
6-
import androidx.annotation.NonNull;
7-
import androidx.recyclerview.widget.RecyclerView;
8-
9-
import com.fox2code.mmm.compat.CompatDisplay;
10-
import com.mikepenz.aboutlibraries.LibsConfiguration;
11-
123
public class OverScrollManager {
134
private static final String TAG = "OverScrollManager";
145

@@ -17,76 +8,4 @@ public interface OverScrollHelper {
178

189
int getOverScrollInsetBottom();
1910
}
20-
21-
public static class LibsOverScroll implements LibsConfiguration.LibsUIListener {
22-
private final OverScrollHelper overScrollHelper;
23-
24-
public LibsOverScroll() {
25-
this.overScrollHelper = null;
26-
}
27-
28-
public LibsOverScroll(OverScrollHelper overScrollHelper) {
29-
this.overScrollHelper = overScrollHelper;
30-
}
31-
32-
@NonNull
33-
@Override
34-
public View preOnCreateView(@NonNull View view) {
35-
return view;
36-
}
37-
38-
@NonNull
39-
@Override
40-
public View postOnCreateView(@NonNull View view) {
41-
OverScrollManager.install(
42-
view.findViewById(R.id.cardListView),
43-
this.overScrollHelper);
44-
return view;
45-
}
46-
}
47-
48-
public static void install(final RecyclerView recyclerView) {
49-
OverScrollManager.install(recyclerView, null);
50-
}
51-
52-
public static void install(final RecyclerView recyclerView,
53-
final OverScrollHelper overScrollHelper) {
54-
if (recyclerView == null) return;
55-
recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
56-
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
57-
int prevState = -1, lastTranslation = 0;
58-
59-
@Override
60-
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
61-
if (newState == RecyclerView.SCROLL_STATE_IDLE && this.prevState != newState) {
62-
if (recyclerView.getOverScrollMode() != View.OVER_SCROLL_NEVER)
63-
recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
64-
final int threshold = CompatDisplay.dpToPixel(16);
65-
final int lastTranslation = this.lastTranslation;
66-
if (lastTranslation < threshold) {
67-
this.prevState = newState;
68-
return;
69-
}
70-
final int insetTop;
71-
final int insetBottom;
72-
if (overScrollHelper == null) {
73-
insetTop = 0;
74-
insetBottom = 0;
75-
} else {
76-
insetTop = overScrollHelper.getOverScrollInsetTop();
77-
insetBottom = overScrollHelper.getOverScrollInsetBottom();
78-
}
79-
Log.d(TAG, "Overscroll: " + lastTranslation + " -> ("
80-
+ insetTop + ", " + insetBottom + ")");
81-
// TODO Overscroll effect for 5.0 (With settings toggle)
82-
}
83-
this.prevState = newState;
84-
}
85-
86-
@Override
87-
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
88-
this.lastTranslation = dy;
89-
}
90-
});
91-
}
9211
}

app/src/main/java/com/fox2code/mmm/compat/CompatActivity.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import android.os.Build;
1313
import android.os.Bundle;
1414
import android.os.SystemProperties;
15+
import android.util.AttributeSet;
1516
import android.util.Log;
1617
import android.util.TypedValue;
1718
import android.view.KeyCharacterMap;
@@ -20,6 +21,7 @@
2021
import android.view.MenuItem;
2122
import android.view.View;
2223
import android.view.ViewConfiguration;
24+
import android.widget.ScrollView;
2325

2426
import androidx.annotation.AttrRes;
2527
import androidx.annotation.CallSuper;
@@ -36,10 +38,15 @@
3638
import androidx.core.content.ContextCompat;
3739
import androidx.core.graphics.ColorUtils;
3840
import androidx.core.view.WindowInsetsCompat;
41+
import androidx.core.widget.NestedScrollView;
3942
import androidx.fragment.app.Fragment;
43+
import androidx.recyclerview.widget.RecyclerView;
4044

4145
import com.fox2code.mmm.Constants;
4246
import com.fox2code.mmm.R;
47+
import com.kieronquinn.monetcompat.app.MonetCompatActivity;
48+
import com.kieronquinn.monetcompat.extensions.views.ViewExtensions_RecyclerViewKt;
49+
import com.kieronquinn.monetcompat.extensions.views.ViewExtensions_ScrollViewKt;
4350

4451
import java.lang.ref.WeakReference;
4552
import java.util.Locale;
@@ -89,7 +96,16 @@ public CompatActivity() {
8996
protected void onCreate(@Nullable Bundle savedInstanceState) {
9097
if (!this.onCreateCalled) {
9198
this.getLayoutInflater().setFactory2(new LayoutInflaterFactory(this.getDelegate())
92-
.addOnViewCreatedListener(WindowInsetsHelper.Companion.getLISTENER()));
99+
.addOnViewCreatedListeners(WindowInsetsHelper.Companion.getLISTENER(),
100+
(view, parent, name, context, attrs) -> {
101+
if (view instanceof RecyclerView) {
102+
ViewExtensions_RecyclerViewKt.enableStretchOverscroll(
103+
(RecyclerView) view, null);
104+
} else if (view instanceof NestedScrollView) {
105+
ViewExtensions_ScrollViewKt.enableStretchOverscroll(
106+
(NestedScrollView) view, null);
107+
}
108+
}));
93109
this.hasHardwareNavBar = this.hasHardwareNavBar0();
94110
this.onCreateCalledOnce = true;
95111
}

app/src/main/java/com/fox2code/mmm/markdown/MarkdownActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import com.fox2code.mmm.Constants;
3030
import com.fox2code.mmm.MainApplication;
31+
import com.fox2code.mmm.OverScrollManager;
3132
import com.fox2code.mmm.R;
3233
import com.fox2code.mmm.XHooks;
3334
import com.fox2code.mmm.compat.CompatActivity;

app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ public static class SettingsFragment extends PreferenceFragmentCompat
7777
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
7878
getPreferenceManager().setSharedPreferencesName("mmm");
7979
setPreferencesFromResource(R.xml.root_preferences, rootKey);
80-
OverScrollManager.install(getListView());
8180
findPreference("pref_manage_repos").setOnPreferenceClickListener(p -> {
8281
devModeStep = 0;
8382
openFragment(new RepoFragment(), R.string.manage_repos_pref);
@@ -166,8 +165,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
166165
}
167166

168167
final LibsBuilder libsBuilder = new LibsBuilder().withShowLoadingProgress(false)
169-
.withLicenseShown(true).withAboutMinimalDesign(false)
170-
.withUiListener(new OverScrollManager.LibsOverScroll());
168+
.withLicenseShown(true).withAboutMinimalDesign(false);
171169
Preference update = findPreference("pref_update");
172170
update.setVisible(BuildConfig.ENABLE_AUTO_UPDATER && (BuildConfig.DEBUG ||
173171
AppUpdateManager.getAppUpdateManager().peekHasUpdate()));
@@ -234,7 +232,6 @@ public static class RepoFragment extends PreferenceFragmentCompat {
234232
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
235233
getPreferenceManager().setSharedPreferencesName("mmm");
236234
setPreferencesFromResource(R.xml.repo_preferences, rootKey);
237-
OverScrollManager.install(getListView());
238235
setRepoData(RepoManager.MAGISK_ALT_REPO,
239236
"Magisk Modules Alt Repo", RepoManager.MAGISK_ALT_REPO_HOMEPAGE,
240237
null, null,

app/src/main/res/layout/activity_main.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
android:id="@+id/module_list"
2121
android:layout_width="match_parent"
2222
android:layout_height="match_parent"
23-
android:overScrollMode="never"
2423
app:edgeToEdge="true" />
2524
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
2625

0 commit comments

Comments
 (0)