package com.marverenic.music.activity; import android.databinding.DataBindingUtil; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.annotation.LayoutRes; import android.support.design.widget.BottomSheetBehavior; import android.view.View; import com.marverenic.music.R; import com.marverenic.music.databinding.ActivityLibraryBaseWrapperBinding; import com.marverenic.music.viewmodel.BaseLibraryActivityViewModel; public abstract class BaseLibraryActivity extends BaseActivity { private static final String KEY_WAS_NOW_PLAYING_EXPANDED = "NowPlayingPageExpanded"; private ActivityLibraryBaseWrapperBinding mBinding; private BaseLibraryActivityViewModel mViewModel; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBinding = DataBindingUtil.setContentView(this, R.layout.activity_library_base_wrapper); mViewModel = new BaseLibraryActivityViewModel(this, !isToolbarCollapsing()); mBinding.setViewModel(mViewModel); getLayoutInflater().inflate(getContentLayoutResource(), mBinding.libraryBaseWrapperContainer, true); setupToolbar(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); getWindow().setStatusBarColor(Color.TRANSPARENT); } if (savedInstanceState != null && savedInstanceState.getBoolean(KEY_WAS_NOW_PLAYING_EXPANDED, false)) { expandBottomSheet(); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); BottomSheetBehavior<View> bottomSheet = BottomSheetBehavior.from(mBinding.miniplayerHolder); boolean expanded = bottomSheet.getState() == BottomSheetBehavior.STATE_EXPANDED; outState.putBoolean(KEY_WAS_NOW_PLAYING_EXPANDED, expanded); } @Override protected void onPause() { super.onPause(); mViewModel.onActivityExitForeground(); mBinding.executePendingBindings(); } @Override public void onResume() { super.onResume(); mViewModel.onActivityEnterForeground(); mBinding.executePendingBindings(); } @Override public void onBackPressed() { BottomSheetBehavior<View> bottomSheet = BottomSheetBehavior.from(mBinding.miniplayerHolder); if (bottomSheet.getState() == BottomSheetBehavior.STATE_EXPANDED) { bottomSheet.setState(BottomSheetBehavior.STATE_COLLAPSED); } else { super.onBackPressed(); } } @Override protected void showSnackbar(String message) { if (mBinding.libraryBaseWrapperContainer.getVisibility() == View.VISIBLE) { super.showSnackbar(message); } } @LayoutRes protected abstract int getContentLayoutResource(); public boolean isToolbarCollapsing() { return false; } public void expandBottomSheet() { BottomSheetBehavior<View> bottomSheet = BottomSheetBehavior.from(mBinding.miniplayerHolder); bottomSheet.setState(BottomSheetBehavior.STATE_EXPANDED); } }