diff options
author | H. Lehmann <ByteHamster@users.noreply.github.com> | 2020-07-21 11:03:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-21 11:03:41 +0200 |
commit | 602cd71dd84048080b54abe2ce150eda38ca67e8 (patch) | |
tree | 13319de0e47e478588f0f3ae42e50042aad7e052 /app/src/main/java/de/danoeh/antennapod/activity | |
parent | dea32051f6d1e3b5afbf1ffa6fce4d846b581964 (diff) | |
parent | d804c867c0af7168f3b22a7fa8a75150b59b37b6 (diff) | |
download | AntennaPod-602cd71dd84048080b54abe2ce150eda38ca67e8.zip |
Merge pull request #4298 from ByteHamster/tablet-layout
Tablet layout
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java | 58 |
1 files changed, 42 insertions, 16 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 eaa423708..04d31d096 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -31,6 +31,7 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.event.MessageEvent; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.util.StorageUtils; +import de.danoeh.antennapod.core.util.ThemeUtils; import de.danoeh.antennapod.core.util.download.AutoUpdateManager; import de.danoeh.antennapod.dialog.RatingDialog; import de.danoeh.antennapod.fragment.AddFeedFragment; @@ -68,9 +69,9 @@ public class MainActivity extends CastEnabledActivity { public static final String EXTRA_OPEN_PLAYER = "open_player"; public static final String EXTRA_REFRESH_ON_START = "refresh_on_start"; - private DrawerLayout drawerLayout; + private @Nullable DrawerLayout drawerLayout; + private @Nullable ActionBarDrawerToggle drawerToggle; private View navDrawer; - private ActionBarDrawerToggle drawerToggle; private LockableBottomSheetBehavior sheetBehavior; private long lastBackButtonPressTime = 0; private RecyclerView.RecycledViewPool recycledViewPool = new RecyclerView.RecycledViewPool(); @@ -97,8 +98,14 @@ public class MainActivity extends CastEnabledActivity { navDrawer = findViewById(R.id.navDrawerFragment); final FragmentManager fm = getSupportFragmentManager(); - fm.addOnBackStackChangedListener(() -> - drawerToggle.setDrawerIndicatorEnabled(fm.getBackStackEntryCount() == 0)); + fm.addOnBackStackChangedListener(() -> { + boolean showArrow = fm.getBackStackEntryCount() != 0; + if (drawerToggle != null) { // Tablet layout does not have a drawer + drawerToggle.setDrawerIndicatorEnabled(!showArrow); + } else if (getActionBar() != null) { + getActionBar().setDisplayHomeAsUpEnabled(showArrow); + } + }); if (fm.findFragmentByTag(MAIN_FRAGMENT_TAG) == null) { String lastFragment = NavDrawerFragment.getLastNavFragment(this); @@ -151,12 +158,18 @@ public class MainActivity extends CastEnabledActivity { @Override public void setSupportActionBar(@Nullable Toolbar toolbar) { - drawerLayout.removeDrawerListener(drawerToggle); - drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, - R.string.drawer_open, R.string.drawer_close); - drawerLayout.addDrawerListener(drawerToggle); - drawerToggle.syncState(); - drawerToggle.setDrawerIndicatorEnabled(getSupportFragmentManager().getBackStackEntryCount() == 0); + if (drawerLayout != null) { // Tablet layout does not have a drawer + drawerLayout.removeDrawerListener(drawerToggle); + drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, + R.string.drawer_open, R.string.drawer_close); + drawerLayout.addDrawerListener(drawerToggle); + drawerToggle.syncState(); + drawerToggle.setDrawerIndicatorEnabled(getSupportFragmentManager().getBackStackEntryCount() == 0); + } else if (getSupportFragmentManager().getBackStackEntryCount() == 0) { + toolbar.setNavigationIcon(null); + } else { + toolbar.setNavigationIcon(ThemeUtils.getDrawableFromAttr(this, R.attr.homeAsUpIndicator)); + } super.setSupportActionBar(toolbar); } @@ -164,7 +177,11 @@ public class MainActivity extends CastEnabledActivity { SharedPreferences prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE); if (prefs.getBoolean(PREF_IS_FIRST_LAUNCH, true)) { loadFragment(AddFeedFragment.TAG, null); - new Handler().postDelayed(() -> drawerLayout.openDrawer(navDrawer), 1500); + new Handler().postDelayed(() -> { + if (drawerLayout != null) { // Tablet layout does not have a drawer + drawerLayout.openDrawer(navDrawer); + } + }, 1500); // for backward compatibility, we only change defaults for fresh installs UserPreferences.setUpdateInterval(12); @@ -258,7 +275,10 @@ public class MainActivity extends CastEnabledActivity { // not commit anything in an AsyncTask, but that's a bigger // change than we want now. t.commitAllowingStateLoss(); - drawerLayout.closeDrawer(navDrawer); + + if (drawerLayout != null) { // Tablet layout does not have a drawer + drawerLayout.closeDrawer(navDrawer); + } } public void loadChildFragment(Fragment fragment, TransitionEffect transition) { @@ -292,13 +312,17 @@ public class MainActivity extends CastEnabledActivity { @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); - drawerToggle.syncState(); + if (drawerToggle != null) { // Tablet layout does not have a drawer + drawerToggle.syncState(); + } } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - drawerToggle.onConfigurationChanged(newConfig); + if (drawerToggle != null) { // Tablet layout does not have a drawer + drawerToggle.onConfigurationChanged(newConfig); + } } @Override @@ -351,7 +375,7 @@ public class MainActivity extends CastEnabledActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { - if (drawerToggle.onOptionsItemSelected(item)) { + if (drawerToggle != null && drawerToggle.onOptionsItemSelected(item)) { // Tablet layout does not have a drawer return true; } else if (item.getItemId() == android.R.id.home) { if (getSupportFragmentManager().getBackStackEntryCount() > 0) { @@ -374,7 +398,9 @@ public class MainActivity extends CastEnabledActivity { } else { switch (UserPreferences.getBackButtonBehavior()) { case OPEN_DRAWER: - drawerLayout.openDrawer(navDrawer); + if (drawerLayout != null) { // Tablet layout does not have drawer + drawerLayout.openDrawer(navDrawer); + } break; case SHOW_PROMPT: new AlertDialog.Builder(this) |