diff options
author | ByteHamster <ByteHamster@users.noreply.github.com> | 2023-01-13 17:26:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-13 17:26:24 +0100 |
commit | cf057acdf7414c4679738649b032edc67be0c4c6 (patch) | |
tree | 035e2b3fd6c8ee7d8d42e3dc6051d05918cf7cce /app/src/main/java/de | |
parent | d7bfe89b13dd5ed4e9aa7bd64b83d2a59c7e296f (diff) | |
parent | ba9da3b74ce818c2b634a51a3f4e5cef773b0853 (diff) | |
download | AntennaPod-cf057acdf7414c4679738649b032edc67be0c4c6.zip |
Merge pull request #6263 from ByteHamster/screen-insets
Use exactly those insets that we mark as consumed
Diffstat (limited to 'app/src/main/java/de')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index a36924452..f30c3d456 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -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) - .setInsets(WindowInsetsCompat.Type.navigationBars(), Insets.NONE) - .build()); + 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(); + }); 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); } |