diff --git a/app/src/main/java/com/dkanada/gramophone/fragments/player/AbsPlayerFragment.java b/app/src/main/java/com/dkanada/gramophone/fragments/player/AbsPlayerFragment.java index 980c841e..009e806b 100644 --- a/app/src/main/java/com/dkanada/gramophone/fragments/player/AbsPlayerFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/fragments/player/AbsPlayerFragment.java @@ -4,6 +4,7 @@ import android.content.Context; import android.view.MenuItem; import android.view.View; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; @@ -28,7 +29,7 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen private Callbacks callbacks; @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); try { callbacks = (Callbacks) context; diff --git a/app/src/main/java/com/dkanada/gramophone/fragments/player/PlayerAlbumCoverFragment.java b/app/src/main/java/com/dkanada/gramophone/fragments/player/PlayerAlbumCoverFragment.java index d89b1673..431e8cb5 100644 --- a/app/src/main/java/com/dkanada/gramophone/fragments/player/PlayerAlbumCoverFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/fragments/player/PlayerAlbumCoverFragment.java @@ -50,6 +50,7 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements callbacks.onToolbarToggled(); return true; } + return super.onSingleTapConfirmed(e); } }); @@ -122,8 +123,8 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements binding.playerFavoriteIcon.setScaleX(0f); binding.playerFavoriteIcon.setScaleY(0f); binding.playerFavoriteIcon.setVisibility(View.VISIBLE); - binding.playerFavoriteIcon.setPivotX(binding.playerFavoriteIcon.getWidth() / 2); - binding.playerFavoriteIcon.setPivotY(binding.playerFavoriteIcon.getHeight() / 2); + binding.playerFavoriteIcon.setPivotX(binding.playerFavoriteIcon.getWidth() / 2f); + binding.playerFavoriteIcon.setPivotY(binding.playerFavoriteIcon.getHeight() / 2f); binding.playerFavoriteIcon.animate() .setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME / 2) diff --git a/app/src/main/java/com/dkanada/gramophone/fragments/player/card/CardPlayerPlaybackControlsFragment.java b/app/src/main/java/com/dkanada/gramophone/fragments/player/card/CardPlayerPlaybackControlsFragment.java index 52df303b..5bd29117 100644 --- a/app/src/main/java/com/dkanada/gramophone/fragments/player/card/CardPlayerPlaybackControlsFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/fragments/player/card/CardPlayerPlaybackControlsFragment.java @@ -51,7 +51,7 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } @Override - public void onViewCreated(View view, Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setUpMusicControllers(); updateProgressTextColor(); @@ -98,11 +98,11 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment public void setDark(boolean dark) { if (dark) { - lastPlaybackControlsColor = MaterialValueHelper.getSecondaryTextColor(getActivity(), true); - lastDisabledPlaybackControlsColor = MaterialValueHelper.getSecondaryDisabledTextColor(getActivity(), true); + lastPlaybackControlsColor = MaterialValueHelper.getSecondaryTextColor(requireActivity(), true); + lastDisabledPlaybackControlsColor = MaterialValueHelper.getSecondaryDisabledTextColor(requireActivity(), true); } else { - lastPlaybackControlsColor = MaterialValueHelper.getPrimaryTextColor(getActivity(), false); - lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(getActivity(), false); + lastPlaybackControlsColor = MaterialValueHelper.getPrimaryTextColor(requireActivity(), false); + lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(requireActivity(), false); } updateRepeatState(); @@ -115,16 +115,14 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment final int fabColor = Color.WHITE; TintHelper.setTintAuto(binding.playerPlayPauseFab, fabColor, true); - playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity()); + playerFabPlayPauseDrawable = new PlayPauseDrawable(requireActivity()); 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.setColorFilter(MaterialValueHelper.getPrimaryTextColor(requireContext(), 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); - } + binding.playerPlayPauseFab.setPivotX(binding.playerPlayPauseFab.getWidth() / 2f); + binding.playerPlayPauseFab.setPivotY(binding.playerPlayPauseFab.getHeight() / 2f); }); } @@ -156,7 +154,7 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } private void updateProgressTextColor() { - int color = MaterialValueHelper.getPrimaryTextColor(getContext(), false); + int color = MaterialValueHelper.getPrimaryTextColor(requireContext(), false); binding.playerSongTotalTime.setTextColor(color); binding.playerSongCurrentProgress.setTextColor(color); } @@ -218,7 +216,7 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } private void setUpProgressSlider() { - int color = MaterialValueHelper.getPrimaryTextColor(getContext(), false); + int color = MaterialValueHelper.getPrimaryTextColor(requireContext(), false); binding.playerProgressSlider.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN); binding.playerProgressSlider.getProgressDrawable().mutate().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_IN); diff --git a/app/src/main/java/com/dkanada/gramophone/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java b/app/src/main/java/com/dkanada/gramophone/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java index 2a7fee35..c9865984 100644 --- a/app/src/main/java/com/dkanada/gramophone/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java @@ -105,11 +105,11 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment public void setDark(boolean dark) { if (dark) { - lastPlaybackControlsColor = MaterialValueHelper.getSecondaryTextColor(getActivity(), true); - lastDisabledPlaybackControlsColor = MaterialValueHelper.getSecondaryDisabledTextColor(getActivity(), true); + lastPlaybackControlsColor = MaterialValueHelper.getSecondaryTextColor(requireActivity(), true); + lastDisabledPlaybackControlsColor = MaterialValueHelper.getSecondaryDisabledTextColor(requireActivity(), true); } else { - lastPlaybackControlsColor = MaterialValueHelper.getPrimaryTextColor(getActivity(), false); - lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(getActivity(), false); + lastPlaybackControlsColor = MaterialValueHelper.getPrimaryTextColor(requireActivity(), false); + lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(requireActivity(), false); } updateRepeatState(); @@ -120,13 +120,13 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } private void setUpPlayPauseButton() { - playPauseDrawable = new PlayPauseDrawable(getActivity()); + playPauseDrawable = new PlayPauseDrawable(requireActivity()); binding.playerPlayPauseButton.setImageDrawable(playPauseDrawable); updatePlayPauseColor(); binding.playerPlayPauseButton.setOnClickListener(new PlayPauseButtonOnClickHandler()); binding.playerPlayPauseButton.post(() -> { - binding.playerPlayPauseButton.setPivotX(binding.playerPlayPauseButton.getWidth() / 2); - binding.playerPlayPauseButton.setPivotY(binding.playerPlayPauseButton.getHeight() / 2); + binding.playerPlayPauseButton.setPivotX(binding.playerPlayPauseButton.getWidth() / 2f); + binding.playerPlayPauseButton.setPivotY(binding.playerPlayPauseButton.getHeight() / 2f); }); } @@ -153,7 +153,7 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } private void updateProgressTextColor() { - int color = MaterialValueHelper.getPrimaryTextColor(getContext(), false); + int color = MaterialValueHelper.getPrimaryTextColor(requireContext(), false); binding.playerSongTotalTime.setTextColor(color); binding.playerSongCurrentProgress.setTextColor(color); } @@ -222,6 +222,7 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } else { musicControllerAnimationSet.cancel(); } + musicControllerAnimationSet.start(); } @@ -264,7 +265,7 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } private void setUpProgressSlider() { - int color = MaterialValueHelper.getPrimaryTextColor(getContext(), false); + int color = MaterialValueHelper.getPrimaryTextColor(requireContext(), false); binding.playerProgressSlider.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN); binding.playerProgressSlider.getProgressDrawable().mutate().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_IN); @@ -283,6 +284,7 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment public void onUpdateProgressViews(int progress, int total) { binding.playerProgressSlider.setMax(total); binding.playerProgressSlider.setProgress(progress); + binding.playerSongTotalTime.setText(MusicUtil.getReadableDurationString(total)); binding.playerSongCurrentProgress.setText(MusicUtil.getReadableDurationString(progress)); } diff --git a/app/src/main/java/com/dkanada/gramophone/glide/BlurTransformation.java b/app/src/main/java/com/dkanada/gramophone/glide/BlurTransformation.java index a9ec36ee..97c608ae 100644 --- a/app/src/main/java/com/dkanada/gramophone/glide/BlurTransformation.java +++ b/app/src/main/java/com/dkanada/gramophone/glide/BlurTransformation.java @@ -21,9 +21,9 @@ import java.security.MessageDigest; public class BlurTransformation extends BitmapTransformation { public static final float DEFAULT_BLUR_RADIUS = 5f; - private Context context; - private float blurRadius; - private int sampling; + private final Context context; + private final float blurRadius; + private final int sampling; private BlurTransformation(Builder builder) { super(); diff --git a/app/src/main/res/layout/activity_album_detail.xml b/app/src/main/res/layout/activity_album_detail.xml index 1033de3d..e5a0d138 100644 --- a/app/src/main/res/layout/activity_album_detail.xml +++ b/app/src/main/res/layout/activity_album_detail.xml @@ -52,7 +52,7 @@ android:scaleType="centerCrop" android:src="@drawable/default_album_art" android:transitionName="@string/transition_album_image" - tools:ignore="ContentDescription,UnusedAttribute" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:text="1.0.0" /> @@ -88,6 +88,7 @@ android:layout_height="wrap_content" android:background="?attr/rectSelector" android:clickable="true" + android:focusable="true" android:gravity="center_vertical" android:minHeight="@dimen/md_listitem_height" android:orientation="horizontal" @@ -99,7 +100,7 @@ android:layout_width="24dp" android:layout_height="24dp" app:srcCompat="@drawable/ic_github_circle_white_24dp" - tools:ignore="ContentDescription,UnusedAttribute" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + tools:ignore="ContentDescription" /> + android:orientation="vertical"> + tools:ignore="ContentDescription" /> diff --git a/app/src/main/res/layout/fragment_card_player_playback_controls.xml b/app/src/main/res/layout/fragment_card_player_playback_controls.xml index 3d27383d..d5d15088 100644 --- a/app/src/main/res/layout/fragment_card_player_playback_controls.xml +++ b/app/src/main/res/layout/fragment_card_player_playback_controls.xml @@ -31,8 +31,8 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:fontFamily="sans-serif-medium" - android:gravity="center_vertical|left|end" - android:paddingLeft="8dp" + android:gravity="center_vertical|start" + android:paddingStart="8dp" android:singleLine="true" android:textAppearance="@style/TextAppearance.AppCompat.Title" android:textColor="?android:textColorSecondary" @@ -47,8 +47,8 @@ android:layout_height="match_parent" android:layout_alignParentEnd="true" android:fontFamily="sans-serif-medium" - android:gravity="center_vertical|right|end" - android:paddingRight="8dp" + android:gravity="center_vertical|end" + android:paddingEnd="8dp" android:singleLine="true" android:textAppearance="@style/TextAppearance.AppCompat.Title" android:textColor="?android:textColorSecondary" @@ -72,7 +72,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/fab_media_controller_container_height" android:layoutDirection="ltr" - tools:ignore="ContentDescription,UnusedAttribute"> + tools:ignore="ContentDescription"> + app:srcCompat="@drawable/ic_skip_previous_white_24dp" /> + app:srcCompat="@drawable/ic_skip_next_white_24dp" /> + app:srcCompat="@drawable/ic_repeat_white_24dp" /> + app:srcCompat="@drawable/ic_shuffle_white_24dp" /> + tools:ignore="RtlSymmetry" + tools:text="4:00" /> + android:layout_toEndOf="@id/player_song_current_progress" /> @@ -57,7 +56,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/media_controller_container_height" android:layoutDirection="ltr" - tools:ignore="ContentDescription,UnusedAttribute"> + tools:ignore="ContentDescription"> + app:srcCompat="@drawable/ic_skip_previous_white_24dp" /> + app:srcCompat="@drawable/ic_skip_next_white_24dp" /> + app:srcCompat="@drawable/ic_repeat_white_24dp" /> + app:srcCompat="@drawable/ic_shuffle_white_24dp" /> diff --git a/app/src/main/res/layout/item_grid.xml b/app/src/main/res/layout/item_grid.xml index f4917266..1ca49c7d 100644 --- a/app/src/main/res/layout/item_grid.xml +++ b/app/src/main/res/layout/item_grid.xml @@ -12,7 +12,7 @@ android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" - tools:ignore="UnusedAttribute,UselessParent"> + tools:ignore="UselessParent"> + tools:ignore="ContentDescription" /> + android:checkableBehavior="single">