use view binding for AbsSlidingMusicPanelActivity

This commit is contained in:
dkanada 2020-09-07 10:54:02 +09:00
commit 3cf4b90779

View file

@ -17,6 +17,7 @@ import android.view.animation.PathInterpolator;
import com.dkanada.gramophone.App; import com.dkanada.gramophone.App;
import com.dkanada.gramophone.R; import com.dkanada.gramophone.R;
import com.dkanada.gramophone.databinding.SlidingMusicPanelLayoutBinding;
import com.dkanada.gramophone.helper.MusicPlayerRemote; import com.dkanada.gramophone.helper.MusicPlayerRemote;
import com.dkanada.gramophone.ui.activities.SplashActivity; import com.dkanada.gramophone.ui.activities.SplashActivity;
import com.dkanada.gramophone.ui.fragments.player.AbsPlayerFragment; import com.dkanada.gramophone.ui.fragments.player.AbsPlayerFragment;
@ -28,13 +29,8 @@ import com.dkanada.gramophone.util.PreferenceUtil;
import com.dkanada.gramophone.util.ViewUtil; import com.dkanada.gramophone.util.ViewUtil;
import com.sothree.slidinguppanel.SlidingUpPanelLayout; import com.sothree.slidinguppanel.SlidingUpPanelLayout;
import butterknife.BindView;
import butterknife.ButterKnife;
public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivity implements SlidingUpPanelLayout.PanelSlideListener, CardPlayerFragment.Callbacks { public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivity implements SlidingUpPanelLayout.PanelSlideListener, CardPlayerFragment.Callbacks {
private SlidingMusicPanelLayoutBinding binding;
@BindView(R.id.sliding_layout)
SlidingUpPanelLayout slidingUpPanelLayout;
private int navigationbarColor; private int navigationbarColor;
private int taskColor; private int taskColor;
@ -50,8 +46,9 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(createContentView()); setContentView(createContentView());
ButterKnife.bind(this); binding = SlidingMusicPanelLayoutBinding.bind(findViewById(R.id.sliding_layout));
// TODO use a fragment for the splash activity // TODO use a fragment for the splash activity
if (App.getApiClient() == null) { if (App.getApiClient() == null) {
@ -85,18 +82,18 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
// noinspection ConstantConditions // noinspection ConstantConditions
miniPlayerFragment.getView().setOnClickListener(v -> expandPanel()); miniPlayerFragment.getView().setOnClickListener(v -> expandPanel());
slidingUpPanelLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { binding.slidingLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override @Override
public void onGlobalLayout() { public void onGlobalLayout() {
slidingUpPanelLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); binding.slidingLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
switch (getPanelState()) { switch (getPanelState()) {
case EXPANDED: case EXPANDED:
onPanelSlide(slidingUpPanelLayout, 1); onPanelSlide(binding.slidingLayout, 1);
onPanelExpanded(slidingUpPanelLayout); onPanelExpanded(binding.slidingLayout);
break; break;
case COLLAPSED: case COLLAPSED:
onPanelCollapsed(slidingUpPanelLayout); onPanelCollapsed(binding.slidingLayout);
break; break;
default: default:
playerFragment.onHide(); playerFragment.onHide();
@ -105,7 +102,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
} }
}); });
slidingUpPanelLayout.addPanelSlideListener(this); binding.slidingLayout.addPanelSlideListener(this);
} }
@Override @Override
@ -117,7 +114,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
} }
public void setAntiDragView(View antiDragView) { public void setAntiDragView(View antiDragView) {
slidingUpPanelLayout.setAntiDragView(antiDragView); binding.slidingLayout.setAntiDragView(antiDragView);
} }
protected abstract View createContentView(); protected abstract View createContentView();
@ -126,10 +123,10 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
public void onServiceConnected() { public void onServiceConnected() {
super.onServiceConnected(); super.onServiceConnected();
if (!MusicPlayerRemote.getPlayingQueue().isEmpty()) { if (!MusicPlayerRemote.getPlayingQueue().isEmpty()) {
slidingUpPanelLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { binding.slidingLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override @Override
public void onGlobalLayout() { public void onGlobalLayout() {
slidingUpPanelLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); binding.slidingLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
hideBottomBar(false); hideBottomBar(false);
} }
}); });
@ -159,7 +156,8 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
onPanelExpanded(panel); onPanelExpanded(panel);
break; break;
case ANCHORED: case ANCHORED:
collapsePanel(); // this fixes a bug where the panel would get stuck for some reason // this fixes a bug where the panel would get stuck for some reason
collapsePanel();
break; break;
} }
} }
@ -197,23 +195,23 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
public SlidingUpPanelLayout.PanelState getPanelState() { public SlidingUpPanelLayout.PanelState getPanelState() {
return slidingUpPanelLayout == null ? null : slidingUpPanelLayout.getPanelState(); return binding.slidingLayout.getPanelState();
} }
public void collapsePanel() { public void collapsePanel() {
slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); binding.slidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
} }
public void expandPanel() { public void expandPanel() {
slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); binding.slidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);
} }
public void hideBottomBar(final boolean hide) { public void hideBottomBar(final boolean hide) {
if (hide) { if (hide) {
slidingUpPanelLayout.setPanelHeight(0); binding.slidingLayout.setPanelHeight(0);
collapsePanel(); collapsePanel();
} else { } else {
slidingUpPanelLayout.setPanelHeight(getResources().getDimensionPixelSize(R.dimen.mini_player_height)); binding.slidingLayout.setPanelHeight(getResources().getDimensionPixelSize(R.dimen.mini_player_height));
} }
} }
@ -227,12 +225,11 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
@Override @Override
public void onBackPressed() { public void onBackPressed() {
if (!handleBackPress()) if (!handleBackPress()) super.onBackPressed();
super.onBackPressed();
} }
public boolean handleBackPress() { public boolean handleBackPress() {
if (slidingUpPanelLayout.getPanelHeight() != 0 && playerFragment.onBackPressed()) if (binding.slidingLayout.getPanelHeight() != 0 && playerFragment.onBackPressed())
return true; return true;
if (getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) { if (getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
collapsePanel(); collapsePanel();
@ -274,6 +271,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
navigationBarColorAnimator = ValueAnimator navigationBarColorAnimator = ValueAnimator
.ofArgb(getWindow().getNavigationBarColor(), color) .ofArgb(getWindow().getNavigationBarColor(), color)
.setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME); .setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME);
navigationBarColorAnimator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f)); navigationBarColorAnimator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
navigationBarColorAnimator.addUpdateListener(animation -> AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue())); navigationBarColorAnimator.addUpdateListener(animation -> AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue()));
navigationBarColorAnimator.start(); navigationBarColorAnimator.start();
@ -298,16 +296,4 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
protected View getSnackBarContainer() { protected View getSnackBarContainer() {
return findViewById(R.id.content_container); return findViewById(R.id.content_container);
} }
public SlidingUpPanelLayout getSlidingUpPanelLayout() {
return slidingUpPanelLayout;
}
public MiniPlayerFragment getMiniPlayerFragment() {
return miniPlayerFragment;
}
public AbsPlayerFragment getPlayerFragment() {
return playerFragment;
}
} }