Smooth scroll only when log items <= 1000

This commit is contained in:
NekoInverter 2021-01-26 16:41:21 +08:00
parent 2d85cd5482
commit 43dbd73134
No known key found for this signature in database
GPG Key ID: 280D6CCCF95715F9
1 changed files with 16 additions and 11 deletions

View File

@ -6,6 +6,7 @@ import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
@ -53,6 +54,7 @@ public class LogsActivity extends BaseActivity {
private LogsAdapter adapter;
private final Handler handler = new Handler();
private ActivityLogsBinding binding;
private LinearLayoutManagerFix layoutManager;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@ -82,7 +84,8 @@ public class LogsActivity extends BaseActivity {
}
adapter = new LogsAdapter();
binding.recyclerView.setAdapter(adapter);
binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this));
layoutManager = new LinearLayoutManagerFix(this);
binding.recyclerView.setLayoutManager(layoutManager);
if (App.getPreferences().getBoolean("disable_verbose_log", false)) {
binding.slidingTabs.setVisibility(View.GONE);
}
@ -121,9 +124,19 @@ public class LogsActivity extends BaseActivity {
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.menu_scroll_top) {
scrollTop();
Log.e("Test", adapter.getItemCount() + "");
if (layoutManager.findFirstVisibleItemPosition() > 1000) {
binding.recyclerView.scrollToPosition(0);
} else {
binding.recyclerView.smoothScrollToPosition(0);
}
binding.recyclerView.smoothScrollToPosition(0);
} else if (itemId == R.id.menu_scroll_down) {
scrollDown();
if (adapter.getItemCount() - layoutManager.findLastVisibleItemPosition() > 1000) {
binding.recyclerView.scrollToPosition(adapter.getItemCount() - 1);
} else {
binding.recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);
}
} else if (itemId == R.id.menu_refresh) {
reloadErrorLog();
return true;
@ -144,14 +157,6 @@ public class LogsActivity extends BaseActivity {
return super.onOptionsItemSelected(item);
}
private void scrollTop() {
binding.recyclerView.smoothScrollToPosition(0);
}
private void scrollDown() {
binding.recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);
}
private void reloadErrorLog() {
new LogsReader().execute(allLog ? fileAllLog : fileErrorLog);
}