From 7114fd6c28a57e0f2a89180d6770f92abf783720 Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+NekoInverter@users.noreply.github.com> Date: Wed, 25 Nov 2020 16:02:05 +0800 Subject: [PATCH] Add fast scroll for lists --- app/build.gradle | 1 + .../org/meowcat/edxposed/manager/BlackListActivity.java | 6 ++++++ .../java/org/meowcat/edxposed/manager/DownloadActivity.java | 6 ++++++ .../org/meowcat/edxposed/manager/ModuleScopeActivity.java | 6 ++++++ .../java/org/meowcat/edxposed/manager/ModulesActivity.java | 6 ++++++ .../edxposed/manager/widget/RecyclerViewBugFixed.java | 4 +++- 6 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 1cfe2d19..e8d825a9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -80,5 +80,6 @@ dependencies { implementation 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar' implementation 'tech.rectifier.preferencex-android:preferencex-simplemenu:88f93154b2' implementation 'me.zhanghai.android.appiconloader:appiconloader-glide:1.2.0' + implementation 'me.zhanghai.android.fastscroll:library:1.1.5' compileOnly 'de.robv.android.xposed:api:82' } diff --git a/app/src/main/java/org/meowcat/edxposed/manager/BlackListActivity.java b/app/src/main/java/org/meowcat/edxposed/manager/BlackListActivity.java index 64049d0f..ae4f2822 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/BlackListActivity.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/BlackListActivity.java @@ -22,6 +22,8 @@ import org.meowcat.edxposed.manager.adapters.CompatListAdapter; import org.meowcat.edxposed.manager.databinding.ActivityBlackListBinding; import org.meowcat.edxposed.manager.util.LinearLayoutManagerFix; +import me.zhanghai.android.fastscroll.FastScrollerBuilder; + public class BlackListActivity extends BaseActivity implements AppAdapter.Callback { private SearchView searchView; private AppAdapter appAdapter; @@ -55,11 +57,15 @@ public class BlackListActivity extends BaseActivity implements AppAdapter.Callba appAdapter.setHasStableIds(true); binding.recyclerView.setAdapter(appAdapter); binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this)); + FastScrollerBuilder fastScrollerBuilder = new FastScrollerBuilder(binding.recyclerView); if (!App.getPreferences().getBoolean("md2", false)) { DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); binding.recyclerView.addItemDecoration(dividerItemDecoration); + } else { + fastScrollerBuilder.useMd2Style(); } + fastScrollerBuilder.build(); appAdapter.setCallback(this); handler.postDelayed(runnable, 300); binding.swipeRefreshLayout.setOnRefreshListener(appAdapter::refresh); diff --git a/app/src/main/java/org/meowcat/edxposed/manager/DownloadActivity.java b/app/src/main/java/org/meowcat/edxposed/manager/DownloadActivity.java index bfcf0ff2..f65e81ba 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/DownloadActivity.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/DownloadActivity.java @@ -41,6 +41,8 @@ import org.meowcat.edxposed.manager.util.RepoLoader; import java.text.DateFormat; import java.util.Date; +import me.zhanghai.android.fastscroll.FastScrollerBuilder; + public class DownloadActivity extends BaseActivity implements RepoLoader.RepoListener, ModuleUtil.ModuleListener, SharedPreferences.OnSharedPreferenceChangeListener { private DownloadsAdapter adapter; private String filterText; @@ -104,11 +106,15 @@ public class DownloadActivity extends BaseActivity implements RepoLoader.RepoLis headersDecor.invalidateHeaders(); } }); + FastScrollerBuilder fastScrollerBuilder = new FastScrollerBuilder(binding.recyclerView); if (!App.getPreferences().getBoolean("md2", false)) { DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); binding.recyclerView.addItemDecoration(dividerItemDecoration); + } else { + fastScrollerBuilder.useMd2Style(); } + fastScrollerBuilder.build(); } diff --git a/app/src/main/java/org/meowcat/edxposed/manager/ModuleScopeActivity.java b/app/src/main/java/org/meowcat/edxposed/manager/ModuleScopeActivity.java index 51cac8d5..f41b04f5 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/ModuleScopeActivity.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/ModuleScopeActivity.java @@ -18,6 +18,8 @@ import org.meowcat.edxposed.manager.adapters.ScopeAdapter; import org.meowcat.edxposed.manager.databinding.ActivityScopeListBinding; import org.meowcat.edxposed.manager.util.LinearLayoutManagerFix; +import me.zhanghai.android.fastscroll.FastScrollerBuilder; + public class ModuleScopeActivity extends BaseActivity implements AppAdapter.Callback { private SearchView searchView; private ScopeAdapter appAdapter; @@ -51,11 +53,15 @@ public class ModuleScopeActivity extends BaseActivity implements AppAdapter.Call appAdapter.setHasStableIds(true); binding.recyclerView.setAdapter(appAdapter); binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this)); + FastScrollerBuilder fastScrollerBuilder = new FastScrollerBuilder(binding.recyclerView); if (!App.getPreferences().getBoolean("md2", false)) { DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); binding.recyclerView.addItemDecoration(dividerItemDecoration); + } else { + fastScrollerBuilder.useMd2Style(); } + fastScrollerBuilder.build(); appAdapter.setCallback(this); handler.postDelayed(runnable, 300); binding.swipeRefreshLayout.setOnRefreshListener(() -> appAdapter.refresh()); diff --git a/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java b/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java index 639ea104..44a61358 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java @@ -58,6 +58,8 @@ import java.util.Map; import java.util.Objects; import java.util.Set; +import me.zhanghai.android.fastscroll.FastScrollerBuilder; + import static android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS; public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleListener { @@ -199,11 +201,15 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi moduleUtil.addListener(this); binding.recyclerView.setAdapter(adapter); binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this)); + FastScrollerBuilder fastScrollerBuilder = new FastScrollerBuilder(binding.recyclerView); if (!App.getPreferences().getBoolean("md2", false)) { DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); binding.recyclerView.addItemDecoration(dividerItemDecoration); + } else { + fastScrollerBuilder.useMd2Style(); } + fastScrollerBuilder.build(); binding.swipeRefreshLayout.setOnRefreshListener(reloadModules::run); reloadModules.run(); mSearchListener = new SearchView.OnQueryTextListener() { diff --git a/app/src/main/java/org/meowcat/edxposed/manager/widget/RecyclerViewBugFixed.java b/app/src/main/java/org/meowcat/edxposed/manager/widget/RecyclerViewBugFixed.java index 7ec74f8e..998ac33d 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/widget/RecyclerViewBugFixed.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/widget/RecyclerViewBugFixed.java @@ -9,7 +9,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; -public class RecyclerViewBugFixed extends RecyclerView { +import me.zhanghai.android.fastscroll.FixItemDecorationRecyclerView; + +public class RecyclerViewBugFixed extends FixItemDecorationRecyclerView { public RecyclerViewBugFixed(@NonNull Context context) {