Use Android 12 stretch overscroll

pull/157/head
Fox2Code 2 years ago
parent 7757f6f892
commit 7b60a514fe

@ -93,6 +93,7 @@ dependencies {
implementation "dev.rikka.rikkax.layoutinflater:layoutinflater:1.2.0"
implementation "dev.rikka.rikkax.insets:insets:1.2.0"
implementation 'com.github.Dimezis:BlurView:version-1.6.6'
implementation 'com.github.KieronQuinn:MonetCompat:0.4.1'
// Utils
implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:4.9.3'

@ -103,7 +103,6 @@ public class MainActivity extends CompatActivity implements SwipeRefreshLayout.O
this.moduleList.setAdapter(this.moduleViewAdapter);
this.moduleList.setLayoutManager(new LinearLayoutManager(this));
this.moduleList.setItemViewCacheSize(4); // Default is 2
OverScrollManager.install(this.moduleList, this);
this.swipeRefreshLayout.setOnRefreshListener(this);
this.actionBarBlur.setBackground(this.actionBarBackground);
this.actionBarBlur.setupWith(this.moduleList).setFrameClearDrawable(

@ -1,14 +1,5 @@
package com.fox2code.mmm;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.fox2code.mmm.compat.CompatDisplay;
import com.mikepenz.aboutlibraries.LibsConfiguration;
public class OverScrollManager {
private static final String TAG = "OverScrollManager";
@ -17,76 +8,4 @@ public class OverScrollManager {
int getOverScrollInsetBottom();
}
public static class LibsOverScroll implements LibsConfiguration.LibsUIListener {
private final OverScrollHelper overScrollHelper;
public LibsOverScroll() {
this.overScrollHelper = null;
}
public LibsOverScroll(OverScrollHelper overScrollHelper) {
this.overScrollHelper = overScrollHelper;
}
@NonNull
@Override
public View preOnCreateView(@NonNull View view) {
return view;
}
@NonNull
@Override
public View postOnCreateView(@NonNull View view) {
OverScrollManager.install(
view.findViewById(R.id.cardListView),
this.overScrollHelper);
return view;
}
}
public static void install(final RecyclerView recyclerView) {
OverScrollManager.install(recyclerView, null);
}
public static void install(final RecyclerView recyclerView,
final OverScrollHelper overScrollHelper) {
if (recyclerView == null) return;
recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
int prevState = -1, lastTranslation = 0;
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
if (newState == RecyclerView.SCROLL_STATE_IDLE && this.prevState != newState) {
if (recyclerView.getOverScrollMode() != View.OVER_SCROLL_NEVER)
recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
final int threshold = CompatDisplay.dpToPixel(16);
final int lastTranslation = this.lastTranslation;
if (lastTranslation < threshold) {
this.prevState = newState;
return;
}
final int insetTop;
final int insetBottom;
if (overScrollHelper == null) {
insetTop = 0;
insetBottom = 0;
} else {
insetTop = overScrollHelper.getOverScrollInsetTop();
insetBottom = overScrollHelper.getOverScrollInsetBottom();
}
Log.d(TAG, "Overscroll: " + lastTranslation + " -> ("
+ insetTop + ", " + insetBottom + ")");
// TODO Overscroll effect for 5.0 (With settings toggle)
}
this.prevState = newState;
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
this.lastTranslation = dy;
}
});
}
}

@ -12,6 +12,7 @@ import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemProperties;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.KeyCharacterMap;
@ -20,6 +21,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.ScrollView;
import androidx.annotation.AttrRes;
import androidx.annotation.CallSuper;
@ -36,10 +38,15 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.ColorUtils;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.fox2code.mmm.Constants;
import com.fox2code.mmm.R;
import com.kieronquinn.monetcompat.app.MonetCompatActivity;
import com.kieronquinn.monetcompat.extensions.views.ViewExtensions_RecyclerViewKt;
import com.kieronquinn.monetcompat.extensions.views.ViewExtensions_ScrollViewKt;
import java.lang.ref.WeakReference;
import java.util.Locale;
@ -89,7 +96,16 @@ public class CompatActivity extends AppCompatActivity {
protected void onCreate(@Nullable Bundle savedInstanceState) {
if (!this.onCreateCalled) {
this.getLayoutInflater().setFactory2(new LayoutInflaterFactory(this.getDelegate())
.addOnViewCreatedListener(WindowInsetsHelper.Companion.getLISTENER()));
.addOnViewCreatedListeners(WindowInsetsHelper.Companion.getLISTENER(),
(view, parent, name, context, attrs) -> {
if (view instanceof RecyclerView) {
ViewExtensions_RecyclerViewKt.enableStretchOverscroll(
(RecyclerView) view, null);
} else if (view instanceof NestedScrollView) {
ViewExtensions_ScrollViewKt.enableStretchOverscroll(
(NestedScrollView) view, null);
}
}));
this.hasHardwareNavBar = this.hasHardwareNavBar0();
this.onCreateCalledOnce = true;
}

@ -28,6 +28,7 @@ import androidx.core.graphics.ColorUtils;
import com.fox2code.mmm.Constants;
import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.OverScrollManager;
import com.fox2code.mmm.R;
import com.fox2code.mmm.XHooks;
import com.fox2code.mmm.compat.CompatActivity;

@ -77,7 +77,6 @@ public class SettingsActivity extends CompatActivity implements LanguageActivity
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getPreferenceManager().setSharedPreferencesName("mmm");
setPreferencesFromResource(R.xml.root_preferences, rootKey);
OverScrollManager.install(getListView());
findPreference("pref_manage_repos").setOnPreferenceClickListener(p -> {
devModeStep = 0;
openFragment(new RepoFragment(), R.string.manage_repos_pref);
@ -166,8 +165,7 @@ public class SettingsActivity extends CompatActivity implements LanguageActivity
}
final LibsBuilder libsBuilder = new LibsBuilder().withShowLoadingProgress(false)
.withLicenseShown(true).withAboutMinimalDesign(false)
.withUiListener(new OverScrollManager.LibsOverScroll());
.withLicenseShown(true).withAboutMinimalDesign(false);
Preference update = findPreference("pref_update");
update.setVisible(BuildConfig.ENABLE_AUTO_UPDATER && (BuildConfig.DEBUG ||
AppUpdateManager.getAppUpdateManager().peekHasUpdate()));
@ -234,7 +232,6 @@ public class SettingsActivity extends CompatActivity implements LanguageActivity
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getPreferenceManager().setSharedPreferencesName("mmm");
setPreferencesFromResource(R.xml.repo_preferences, rootKey);
OverScrollManager.install(getListView());
setRepoData(RepoManager.MAGISK_ALT_REPO,
"Magisk Modules Alt Repo", RepoManager.MAGISK_ALT_REPO_HOMEPAGE,
null, null,

@ -20,7 +20,6 @@
android:id="@+id/module_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
app:edgeToEdge="true" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

Loading…
Cancel
Save