Improve layout and top blur, fix light theme.
parent
63224b76fd
commit
6f7c40393e
@ -0,0 +1,92 @@
|
||||
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";
|
||||
|
||||
public interface OverScrollHelper {
|
||||
int getOverScrollInsetTop();
|
||||
|
||||
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;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="status_bar_color">@color/transparent</color>
|
||||
</resources>
|
Loading…
Reference in New Issue