Merge pull request #6263 from ByteHamster/screen-insets

Use exactly those insets that we mark as consumed
This commit is contained in:
ByteHamster 2023-01-13 17:26:24 +01:00 committed by GitHub
commit cf057acdf7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 15 additions and 10 deletions

View File

@ -90,6 +90,7 @@ public class MainActivity extends CastEnabledActivity {
private LockableBottomSheetBehavior sheetBehavior;
private RecyclerView.RecycledViewPool recycledViewPool = new RecyclerView.RecycledViewPool();
private int lastTheme = 0;
private Insets navigationBarInsets = Insets.NONE;
@NonNull
public static Intent getIntentToOpenFeed(@NonNull Context context, long feedId) {
@ -116,10 +117,13 @@ public class MainActivity extends CastEnabledActivity {
setNavDrawerSize();
// Consume navigation bar insets - we apply them in setPlayerVisible()
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main_view), (v, insets) ->
new WindowInsetsCompat.Builder(insets)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main_view), (v, insets) -> {
navigationBarInsets = insets.getInsets(WindowInsetsCompat.Type.navigationBars());
updateInsets();
return new WindowInsetsCompat.Builder(insets)
.setInsets(WindowInsetsCompat.Type.navigationBars(), Insets.NONE)
.build());
.build();
});
final FragmentManager fm = getSupportFragmentManager();
if (fm.findFragmentByTag(MAIN_FRAGMENT_TAG) == null) {
@ -160,8 +164,7 @@ public class MainActivity extends CastEnabledActivity {
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
int playerHeight = (int) getResources().getDimension(R.dimen.external_player_height);
sheetBehavior.setPeekHeight(playerHeight + getBottomInset());
updateInsets();
}
/**
@ -253,9 +256,10 @@ public class MainActivity extends CastEnabledActivity {
return sheetBehavior;
}
private int getBottomInset() {
WindowInsetsCompat insets = ViewCompat.getRootWindowInsets(getWindow().getDecorView());
return insets == null ? 0 : insets.getInsets(WindowInsetsCompat.Type.systemBars()).bottom;
private void updateInsets() {
setPlayerVisible(findViewById(R.id.audioplayerFragment).getVisibility() == View.VISIBLE);
int playerHeight = (int) getResources().getDimension(R.dimen.external_player_height);
sheetBehavior.setPeekHeight(playerHeight + navigationBarInsets.bottom);
}
public void setPlayerVisible(boolean visible) {
@ -268,7 +272,8 @@ public class MainActivity extends CastEnabledActivity {
FragmentContainerView mainView = findViewById(R.id.main_view);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mainView.getLayoutParams();
int externalPlayerHeight = (int) getResources().getDimension(R.dimen.external_player_height);
params.setMargins(0, 0, 0, getBottomInset() + (visible ? externalPlayerHeight : 0));
params.setMargins(navigationBarInsets.left, 0, navigationBarInsets.right,
navigationBarInsets.bottom + (visible ? externalPlayerHeight : 0));
mainView.setLayoutParams(params);
findViewById(R.id.audioplayerFragment).setVisibility(visible ? View.VISIBLE : View.GONE);
}