diff options
author | H. Lehmann <ByteHamster@users.noreply.github.com> | 2020-03-25 22:49:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-25 22:49:34 +0100 |
commit | b5836650d18aa611b2fe2ca73d41ed58342c1e94 (patch) | |
tree | 8e427bd10df1ee6422df210910a879acff11dcdb /app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java | |
parent | ae906de06d1720331be1c64607cdb6011fc66ef5 (diff) | |
parent | d87cc27c9bdfd7fa68df6e09bf184bd75393212b (diff) | |
download | AntennaPod-b5836650d18aa611b2fe2ca73d41ed58342c1e94.zip |
Merge pull request #3954 from ByteHamster/audioplayer-fragment
Convert AudioPlayer to fragment
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java | 66 |
1 files changed, 37 insertions, 29 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 872174403..403198bea 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -23,6 +23,7 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import com.bumptech.glide.Glide; +import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.google.android.material.snackbar.Snackbar; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.event.MessageEvent; @@ -31,9 +32,9 @@ import de.danoeh.antennapod.core.util.Flavors; import de.danoeh.antennapod.core.util.StorageUtils; import de.danoeh.antennapod.dialog.RatingDialog; import de.danoeh.antennapod.fragment.AddFeedFragment; +import de.danoeh.antennapod.fragment.AudioPlayerFragment; import de.danoeh.antennapod.fragment.DownloadsFragment; import de.danoeh.antennapod.fragment.EpisodesFragment; -import de.danoeh.antennapod.fragment.ExternalPlayerFragment; import de.danoeh.antennapod.fragment.FeedItemlistFragment; import de.danoeh.antennapod.fragment.NavDrawerFragment; import de.danoeh.antennapod.fragment.PlaybackHistoryFragment; @@ -41,6 +42,7 @@ import de.danoeh.antennapod.fragment.QueueFragment; import de.danoeh.antennapod.fragment.SubscriptionFragment; import de.danoeh.antennapod.fragment.TransitionEffect; import de.danoeh.antennapod.preferences.PreferenceUpgrader; +import de.danoeh.antennapod.view.LockableBottomSheetBehavior; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.Validate; import org.greenrobot.eventbus.EventBus; @@ -61,12 +63,14 @@ public class MainActivity extends CastEnabledActivity { public static final String EXTRA_FRAGMENT_TAG = "fragment_tag"; public static final String EXTRA_FRAGMENT_ARGS = "fragment_args"; public static final String EXTRA_FEED_ID = "fragment_feed_id"; + public static final String EXTRA_OPEN_PLAYER = "open_player"; private static final String SAVE_BACKSTACK_COUNT = "backstackCount"; private DrawerLayout drawerLayout; private View navDrawer; private ActionBarDrawerToggle drawerToggle; + private LockableBottomSheetBehavior sheetBehavior; private long lastBackButtonPressTime = 0; @NonNull @@ -111,15 +115,34 @@ public class MainActivity extends CastEnabledActivity { } } } - ExternalPlayerFragment externalPlayerFragment = new ExternalPlayerFragment(); - transaction.replace(R.id.playerFragment, externalPlayerFragment, ExternalPlayerFragment.TAG); NavDrawerFragment navDrawerFragment = new NavDrawerFragment(); transaction.replace(R.id.navDrawerFragment, navDrawerFragment, NavDrawerFragment.TAG); - + AudioPlayerFragment audioPlayerFragment = new AudioPlayerFragment(); + transaction.replace(R.id.audioplayerFragment, audioPlayerFragment, AudioPlayerFragment.TAG); transaction.commit(); checkFirstLaunch(); PreferenceUpgrader.checkUpgrades(this); + View bottomSheet = findViewById(R.id.audioplayerFragment); + sheetBehavior = (LockableBottomSheetBehavior) BottomSheetBehavior.from(bottomSheet); + sheetBehavior.setPeekHeight((int) getResources().getDimension(R.dimen.external_player_height)); + sheetBehavior.setHideable(false); + sheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { + @Override + public void onStateChanged(@NonNull View view, int state) { + + } + + @Override + public void onSlide(@NonNull View view, float slideOffset) { + AudioPlayerFragment audioPlayer = + (AudioPlayerFragment) getSupportFragmentManager().findFragmentByTag(AudioPlayerFragment.TAG); + float condensedSlideOffset = Math.max(0.0f, Math.min(0.1f, slideOffset - 0.5f)) / 0.1f; + audioPlayer.getExternalPlayerHolder().setAlpha(1 - condensedSlideOffset); + audioPlayer.getExternalPlayerHolder().setVisibility( + condensedSlideOffset > 0.99f ? View.GONE : View.VISIBLE); + } + }); } @Override @@ -151,6 +174,10 @@ public class MainActivity extends CastEnabledActivity { return drawerLayout != null && navDrawer != null && drawerLayout.isDrawerOpen(navDrawer); } + public LockableBottomSheetBehavior getBottomSheet() { + return sheetBehavior; + } + public void loadFragment(String tag, Bundle args) { Log.d(TAG, "loadFragment(tag: " + tag + ", args: " + args + ")"); Fragment fragment; @@ -302,29 +329,6 @@ public class MainActivity extends CastEnabledActivity { } @Override - public boolean onCreateOptionsMenu(Menu menu) { - boolean retVal = super.onCreateOptionsMenu(menu); - if (Flavors.FLAVOR == Flavors.PLAY) { - switch (NavDrawerFragment.getLastNavFragment(this)) { - case QueueFragment.TAG: - case EpisodesFragment.TAG: - requestCastButton(MenuItem.SHOW_AS_ACTION_IF_ROOM); - return retVal; - case DownloadsFragment.TAG: - case PlaybackHistoryFragment.TAG: - case AddFeedFragment.TAG: - case SubscriptionFragment.TAG: - return retVal; - default: - requestCastButton(MenuItem.SHOW_AS_ACTION_NEVER); - return retVal; - } - } else { - return retVal; - } - } - - @Override public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.onOptionsItemSelected(item)) { return true; @@ -342,6 +346,8 @@ public class MainActivity extends CastEnabledActivity { public void onBackPressed() { if (isDrawerOpen()) { drawerLayout.closeDrawer(navDrawer); + } else if (sheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) { + sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } else if (getSupportFragmentManager().getBackStackEntryCount() != 0) { super.onBackPressed(); } else { @@ -400,9 +406,11 @@ public class MainActivity extends CastEnabledActivity { } else if (feedId > 0) { loadFeedFragmentById(feedId, args); } - // to avoid handling the intent twice when the configuration changes - setIntent(new Intent(MainActivity.this, MainActivity.class)); + } else if (intent.hasExtra(EXTRA_OPEN_PLAYER)) { + sheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); } + // to avoid handling the intent twice when the configuration changes + setIntent(new Intent(MainActivity.this, MainActivity.class)); } @Override |