migrate card player controls to view binding
This commit is contained in:
parent
52a5b15116
commit
ee1d86098b
3 changed files with 48 additions and 74 deletions
|
|
@ -323,7 +323,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
float density = getResources().getDisplayMetrics().density;
|
||||
playingQueueCard.setCardElevation((6 * slide + 2) * density);
|
||||
playbackControlsFragment.playPauseFab.setElevation((2 * Math.max(0, (1 - (slide * 16))) + 2) * density);
|
||||
playbackControlsFragment.binding.playerPlayPauseFab.setElevation((2 * Math.max(0, (1 - (slide * 16))) + 2) * density);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -369,9 +369,9 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
Animator backgroundAnimator;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
//noinspection ConstantConditions
|
||||
int x = (int) (fragment.playbackControlsFragment.playPauseFab.getX() + fragment.playbackControlsFragment.playPauseFab.getWidth() / 2 + fragment.playbackControlsFragment.getView().getX());
|
||||
int y = (int) (fragment.playbackControlsFragment.playPauseFab.getY() + fragment.playbackControlsFragment.playPauseFab.getHeight() / 2 + fragment.playbackControlsFragment.getView().getY() + fragment.playbackControlsFragment.progressSlider.getHeight());
|
||||
float startRadius = Math.max(fragment.playbackControlsFragment.playPauseFab.getWidth() / 2, fragment.playbackControlsFragment.playPauseFab.getHeight() / 2);
|
||||
int x = (int) (fragment.playbackControlsFragment.binding.playerPlayPauseFab.getX() + fragment.playbackControlsFragment.binding.playerPlayPauseFab.getWidth() / 2 + fragment.playbackControlsFragment.getView().getX());
|
||||
int y = (int) (fragment.playbackControlsFragment.binding.playerPlayPauseFab.getY() + fragment.playbackControlsFragment.binding.playerPlayPauseFab.getHeight() / 2 + fragment.playbackControlsFragment.getView().getY() + fragment.playbackControlsFragment.binding.playerProgressSlider.getHeight());
|
||||
float startRadius = Math.max(fragment.playbackControlsFragment.binding.playerPlayPauseFab.getWidth() / 2, fragment.playbackControlsFragment.binding.playerPlayPauseFab.getHeight() / 2);
|
||||
float endRadius = Math.max(fragment.colorBackground.getWidth(), fragment.colorBackground.getHeight());
|
||||
fragment.colorBackground.setBackgroundColor(newColor);
|
||||
backgroundAnimator = ViewAnimationUtils.createCircularReveal(fragment.colorBackground, x, y, startRadius, endRadius);
|
||||
|
|
|
|||
|
|
@ -4,14 +4,13 @@ import android.graphics.Color;
|
|||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
|
||||
import com.dkanada.gramophone.databinding.FragmentCardPlayerPlaybackControlsBinding;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.DecelerateInterpolator;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.kabouzeid.appthemehelper.util.ColorUtil;
|
||||
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
||||
|
|
@ -26,31 +25,9 @@ import com.dkanada.gramophone.ui.fragments.AbsMusicServiceFragment;
|
|||
import com.dkanada.gramophone.util.MusicUtil;
|
||||
import com.dkanada.gramophone.views.PlayPauseDrawable;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
||||
public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment implements MusicProgressViewUpdateHelper.Callback {
|
||||
|
||||
private Unbinder unbinder;
|
||||
|
||||
@BindView(R.id.player_play_pause_fab)
|
||||
FloatingActionButton playPauseFab;
|
||||
@BindView(R.id.player_prev_button)
|
||||
ImageButton prevButton;
|
||||
@BindView(R.id.player_next_button)
|
||||
ImageButton nextButton;
|
||||
@BindView(R.id.player_repeat_button)
|
||||
ImageButton repeatButton;
|
||||
@BindView(R.id.player_shuffle_button)
|
||||
ImageButton shuffleButton;
|
||||
|
||||
@BindView(R.id.player_progress_slider)
|
||||
SeekBar progressSlider;
|
||||
@BindView(R.id.player_song_total_time)
|
||||
TextView songTotalTime;
|
||||
@BindView(R.id.player_song_current_progress)
|
||||
TextView songCurrentProgress;
|
||||
FragmentCardPlayerPlaybackControlsBinding binding;
|
||||
|
||||
private PlayPauseDrawable playerFabPlayPauseDrawable;
|
||||
|
||||
|
|
@ -67,13 +44,14 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.fragment_card_player_playback_controls, container, false);
|
||||
binding = FragmentCardPlayerPlaybackControlsBinding.inflate(inflater);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
setUpMusicControllers();
|
||||
updateProgressTextColor();
|
||||
}
|
||||
|
|
@ -81,7 +59,6 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
unbinder.unbind();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -135,17 +112,17 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
|
||||
private void setUpPlayPauseFab() {
|
||||
final int fabColor = Color.WHITE;
|
||||
TintHelper.setTintAuto(playPauseFab, fabColor, true);
|
||||
TintHelper.setTintAuto(binding.playerPlayPauseFab, fabColor, true);
|
||||
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
|
||||
playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseFab.post(() -> {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
binding.playerPlayPauseFab.setImageDrawable(playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
binding.playerPlayPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
binding.playerPlayPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
binding.playerPlayPauseFab.post(() -> {
|
||||
if (binding.playerPlayPauseFab != null) {
|
||||
binding.playerPlayPauseFab.setPivotX(binding.playerPlayPauseFab.getWidth() / 2);
|
||||
binding.playerPlayPauseFab.setPivotY(binding.playerPlayPauseFab.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -168,59 +145,59 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
|
||||
private void setUpPrevNext() {
|
||||
updatePrevNextColor();
|
||||
nextButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong());
|
||||
prevButton.setOnClickListener(v -> MusicPlayerRemote.back());
|
||||
binding.playerNextButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong());
|
||||
binding.playerPrevButton.setOnClickListener(v -> MusicPlayerRemote.back());
|
||||
}
|
||||
|
||||
private void updateProgressTextColor() {
|
||||
int color = MaterialValueHelper.getPrimaryTextColor(getContext(), false);
|
||||
songTotalTime.setTextColor(color);
|
||||
songCurrentProgress.setTextColor(color);
|
||||
binding.playerSongTotalTime.setTextColor(color);
|
||||
binding.playerSongCurrentProgress.setTextColor(color);
|
||||
}
|
||||
|
||||
private void updatePrevNextColor() {
|
||||
nextButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
prevButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
binding.playerNextButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
binding.playerPrevButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
}
|
||||
|
||||
private void setUpShuffleButton() {
|
||||
shuffleButton.setOnClickListener(v -> MusicPlayerRemote.toggleShuffleMode());
|
||||
binding.playerShuffleButton.setOnClickListener(v -> MusicPlayerRemote.toggleShuffleMode());
|
||||
}
|
||||
|
||||
private void updateShuffleState() {
|
||||
switch (MusicPlayerRemote.getShuffleMode()) {
|
||||
case MusicService.SHUFFLE_MODE_SHUFFLE:
|
||||
shuffleButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
binding.playerShuffleButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
default:
|
||||
shuffleButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
binding.playerShuffleButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpRepeatButton() {
|
||||
repeatButton.setOnClickListener(v -> MusicPlayerRemote.cycleRepeatMode());
|
||||
binding.playerRepeatButton.setOnClickListener(v -> MusicPlayerRemote.cycleRepeatMode());
|
||||
}
|
||||
|
||||
private void updateRepeatState() {
|
||||
switch (MusicPlayerRemote.getRepeatMode()) {
|
||||
case MusicService.REPEAT_MODE_NONE:
|
||||
repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp);
|
||||
repeatButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
binding.playerRepeatButton.setImageResource(R.drawable.ic_repeat_white_24dp);
|
||||
binding.playerRepeatButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
case MusicService.REPEAT_MODE_ALL:
|
||||
repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp);
|
||||
repeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
binding.playerRepeatButton.setImageResource(R.drawable.ic_repeat_white_24dp);
|
||||
binding.playerRepeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
case MusicService.REPEAT_MODE_THIS:
|
||||
repeatButton.setImageResource(R.drawable.ic_repeat_one_white_24dp);
|
||||
repeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
binding.playerRepeatButton.setImageResource(R.drawable.ic_repeat_one_white_24dp);
|
||||
binding.playerRepeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void show() {
|
||||
playPauseFab.animate()
|
||||
binding.playerPlayPauseFab.animate()
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.rotation(360f)
|
||||
|
|
@ -229,19 +206,17 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
}
|
||||
|
||||
public void hide() {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setScaleX(0f);
|
||||
playPauseFab.setScaleY(0f);
|
||||
playPauseFab.setRotation(0f);
|
||||
}
|
||||
binding.playerPlayPauseFab.setScaleX(0f);
|
||||
binding.playerPlayPauseFab.setScaleY(0f);
|
||||
binding.playerPlayPauseFab.setRotation(0f);
|
||||
}
|
||||
|
||||
private void setUpProgressSlider() {
|
||||
int color = MaterialValueHelper.getPrimaryTextColor(getContext(), false);
|
||||
progressSlider.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
||||
progressSlider.getProgressDrawable().mutate().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_IN);
|
||||
binding.playerProgressSlider.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
||||
binding.playerProgressSlider.getProgressDrawable().mutate().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_IN);
|
||||
|
||||
progressSlider.setOnSeekBarChangeListener(new SimpleOnSeekbarChangeListener() {
|
||||
binding.playerProgressSlider.setOnSeekBarChangeListener(new SimpleOnSeekbarChangeListener() {
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
if (fromUser) {
|
||||
|
|
@ -254,9 +229,9 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
|
||||
@Override
|
||||
public void onUpdateProgressViews(int progress, int total) {
|
||||
progressSlider.setMax(total);
|
||||
progressSlider.setProgress(progress);
|
||||
songTotalTime.setText(MusicUtil.getReadableDurationString(total));
|
||||
songCurrentProgress.setText(MusicUtil.getReadableDurationString(progress));
|
||||
binding.playerProgressSlider.setMax(total);
|
||||
binding.playerProgressSlider.setProgress(progress);
|
||||
binding.playerSongTotalTime.setText(MusicUtil.getReadableDurationString(total));
|
||||
binding.playerSongCurrentProgress.setText(MusicUtil.getReadableDurationString(progress));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,10 +124,8 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
updatePlayPauseColor();
|
||||
binding.playerPlayPauseButton.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
binding.playerPlayPauseButton.post(() -> {
|
||||
if (binding.playerPlayPauseButton != null) {
|
||||
binding.playerPlayPauseButton.setPivotX(binding.playerPlayPauseButton.getWidth() / 2);
|
||||
binding.playerPlayPauseButton.setPivotY(binding.playerPlayPauseButton.getHeight() / 2);
|
||||
}
|
||||
binding.playerPlayPauseButton.setPivotX(binding.playerPlayPauseButton.getWidth() / 2);
|
||||
binding.playerPlayPauseButton.setPivotY(binding.playerPlayPauseButton.getHeight() / 2);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -233,6 +231,7 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
if (musicControllerAnimationSet != null) {
|
||||
musicControllerAnimationSet.cancel();
|
||||
}
|
||||
|
||||
prepareForAnimation(binding.playerPlayPauseButton);
|
||||
prepareForAnimation(binding.playerNextButton);
|
||||
prepareForAnimation(binding.playerPrevButton);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue