mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 18:03:33 +00:00
feat: increased visibility of gestures within the music player
This commit is contained in:
parent
13d8bbf877
commit
b656ad9e7f
6 changed files with 63 additions and 11 deletions
|
|
@ -240,6 +240,10 @@ public class PlayerBottomSheetFragment extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void goToQueuePage() {
|
||||||
|
bind.playerBodyLayout.playerBodyBottomSheetViewPager.setCurrentItem(1, true);
|
||||||
|
}
|
||||||
|
|
||||||
private void defineProgressBarHandler(MediaBrowser mediaBrowser) {
|
private void defineProgressBarHandler(MediaBrowser mediaBrowser) {
|
||||||
progressBarHandler = new Handler();
|
progressBarHandler = new Handler();
|
||||||
progressBarRunnable = () -> {
|
progressBarRunnable = () -> {
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,14 @@ import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
import android.widget.ImageButton;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import android.widget.ToggleButton;
|
import android.widget.ToggleButton;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.media3.common.MediaMetadata;
|
import androidx.media3.common.MediaMetadata;
|
||||||
|
|
@ -35,6 +37,7 @@ import com.cappielloantonio.tempo.util.MusicUtil;
|
||||||
import com.cappielloantonio.tempo.util.Preferences;
|
import com.cappielloantonio.tempo.util.Preferences;
|
||||||
import com.cappielloantonio.tempo.viewmodel.PlayerBottomSheetViewModel;
|
import com.cappielloantonio.tempo.viewmodel.PlayerBottomSheetViewModel;
|
||||||
import com.google.android.material.chip.Chip;
|
import com.google.android.material.chip.Chip;
|
||||||
|
import com.google.android.material.elevation.SurfaceColors;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
import com.google.common.util.concurrent.MoreExecutors;
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
|
|
||||||
|
|
@ -55,6 +58,8 @@ public class PlayerControllerFragment extends Fragment {
|
||||||
private ImageView playerMediaTranscodingPriorityIcon;
|
private ImageView playerMediaTranscodingPriorityIcon;
|
||||||
private Chip playerMediaTranscodedExtension;
|
private Chip playerMediaTranscodedExtension;
|
||||||
private TextView playerMediaTranscodedBitrate;
|
private TextView playerMediaTranscodedBitrate;
|
||||||
|
private ConstraintLayout playerQuickActionView;
|
||||||
|
private ImageButton playerOpenQueueButton;
|
||||||
|
|
||||||
private MainActivity activity;
|
private MainActivity activity;
|
||||||
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
|
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
|
||||||
|
|
@ -70,6 +75,7 @@ public class PlayerControllerFragment extends Fragment {
|
||||||
playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class);
|
playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class);
|
||||||
|
|
||||||
init();
|
init();
|
||||||
|
initQuickActionView();
|
||||||
initCoverLyricsSlideView();
|
initCoverLyricsSlideView();
|
||||||
initMediaListenable();
|
initMediaListenable();
|
||||||
initArtistLabelButton();
|
initArtistLabelButton();
|
||||||
|
|
@ -110,6 +116,19 @@ public class PlayerControllerFragment extends Fragment {
|
||||||
playerMediaTranscodingPriorityIcon = bind.getRoot().findViewById(R.id.player_media_server_transcode_priority);
|
playerMediaTranscodingPriorityIcon = bind.getRoot().findViewById(R.id.player_media_server_transcode_priority);
|
||||||
playerMediaTranscodedExtension = bind.getRoot().findViewById(R.id.player_media_transcoded_extension);
|
playerMediaTranscodedExtension = bind.getRoot().findViewById(R.id.player_media_transcoded_extension);
|
||||||
playerMediaTranscodedBitrate = bind.getRoot().findViewById(R.id.player_media_transcoded_bitrate);
|
playerMediaTranscodedBitrate = bind.getRoot().findViewById(R.id.player_media_transcoded_bitrate);
|
||||||
|
playerQuickActionView = bind.getRoot().findViewById(R.id.player_quick_action_view);
|
||||||
|
playerOpenQueueButton = bind.getRoot().findViewById(R.id.player_open_queue_button);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initQuickActionView() {
|
||||||
|
playerQuickActionView.setBackgroundColor(SurfaceColors.getColorForElevation(requireContext(), 8));
|
||||||
|
|
||||||
|
playerOpenQueueButton.setOnClickListener(view -> {
|
||||||
|
PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) requireActivity().getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet");
|
||||||
|
if (playerBottomSheetFragment != null) {
|
||||||
|
playerBottomSheetFragment.goToQueuePage();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeBrowser() {
|
private void initializeBrowser() {
|
||||||
|
|
@ -160,9 +179,7 @@ public class PlayerControllerFragment extends Fragment {
|
||||||
private void setMediaInfo(MediaMetadata mediaMetadata) {
|
private void setMediaInfo(MediaMetadata mediaMetadata) {
|
||||||
if (mediaMetadata.extras != null) {
|
if (mediaMetadata.extras != null) {
|
||||||
String extension = mediaMetadata.extras.getString("suffix", "Unknown format");
|
String extension = mediaMetadata.extras.getString("suffix", "Unknown format");
|
||||||
String bitrate = mediaMetadata.extras.getInt("bitrate", 0) != 0
|
String bitrate = mediaMetadata.extras.getInt("bitrate", 0) != 0 ? mediaMetadata.extras.getInt("bitrate", 0) + "kbps" : "Original";
|
||||||
? mediaMetadata.extras.getInt("bitrate", 0) + "kbps"
|
|
||||||
: "Original";
|
|
||||||
|
|
||||||
playerMediaExtension.setText(extension);
|
playerMediaExtension.setText(extension);
|
||||||
|
|
||||||
|
|
@ -175,9 +192,7 @@ public class PlayerControllerFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
String transcodingExtension = MusicUtil.getTranscodingFormatPreference();
|
String transcodingExtension = MusicUtil.getTranscodingFormatPreference();
|
||||||
String transcodingBitrate = Integer.parseInt(MusicUtil.getBitratePreference()) != 0
|
String transcodingBitrate = Integer.parseInt(MusicUtil.getBitratePreference()) != 0 ? Integer.parseInt(MusicUtil.getBitratePreference()) + "kbps" : "Original";
|
||||||
? Integer.parseInt(MusicUtil.getBitratePreference()) + "kbps"
|
|
||||||
: "Original";
|
|
||||||
|
|
||||||
if (transcodingExtension.equals("raw") && transcodingBitrate.equals("Original")) {
|
if (transcodingExtension.equals("raw") && transcodingBitrate.equals("Original")) {
|
||||||
playerMediaTranscodingPriorityIcon.setVisibility(View.GONE);
|
playerMediaTranscodingPriorityIcon.setVisibility(View.GONE);
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,7 @@ public class PlayerCoverFragment extends Fragment {
|
||||||
|
|
||||||
TransitionManager.beginDelayedTransition(bind.getRoot(), transition);
|
TransitionManager.beginDelayedTransition(bind.getRoot(), transition);
|
||||||
bind.nowPlayingSongCoverButtonGroup.setVisibility(isVisible ? View.VISIBLE : View.GONE);
|
bind.nowPlayingSongCoverButtonGroup.setVisibility(isVisible ? View.VISIBLE : View.GONE);
|
||||||
|
bind.nowPlayingTapButton.setVisibility(isVisible ? View.GONE : View.VISIBLE);
|
||||||
|
|
||||||
bind.innerButtonBottomRight.setVisibility(Preferences.isSyncronizationEnabled() ? View.VISIBLE : View.GONE);
|
bind.innerButtonBottomRight.setVisibility(Preferences.isSyncronizationEnabled() ? View.VISIBLE : View.GONE);
|
||||||
bind.innerButtonBottomRightAlternative.setVisibility(Preferences.isSyncronizationEnabled() ? View.GONE : View.VISIBLE);
|
bind.innerButtonBottomRightAlternative.setVisibility(Preferences.isSyncronizationEnabled() ? View.GONE : View.VISIBLE);
|
||||||
|
|
|
||||||
10
app/src/main/res/drawable/ic_queue.xml
Normal file
10
app/src/main/res/drawable/ic_queue.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="20dp"
|
||||||
|
android:height="20dp"
|
||||||
|
android:viewportWidth="960"
|
||||||
|
android:viewportHeight="960"
|
||||||
|
android:autoMirrored="true">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/titleTextColor"
|
||||||
|
android:pathData="M624,720Q574,720 539,685Q504,650 504,600Q504,550 539,515Q574,480 624,480Q636,480 648.5,482.5Q661,485 672,490L672,192L864,192L864,264L744,264L744,600Q744,650 709,685Q674,720 624,720ZM144,552L144,480L432,480L432,552L144,552ZM144,408L144,336L576,336L576,408L144,408ZM144,264L144,192L576,192L576,264L144,264Z"/>
|
||||||
|
</vector>
|
||||||
|
|
@ -83,7 +83,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
app:layout_constraintGuide_percent="0.60" />
|
app:layout_constraintGuide_percent="0.575" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/player_media_title_label"
|
android:id="@+id/player_media_title_label"
|
||||||
|
|
@ -194,11 +194,11 @@
|
||||||
android:layout_width="70dp"
|
android:layout_width="70dp"
|
||||||
android:layout_height="70dp"
|
android:layout_height="70dp"
|
||||||
android:layout_marginTop="0dp"
|
android:layout_marginTop="0dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toTopOf="@+id/player_quick_action_view"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/exo_progress"
|
app:layout_constraintTop_toBottomOf="@+id/exo_progress"
|
||||||
app:layout_constraintVertical_bias=".60" />
|
app:layout_constraintVertical_bias=".45" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/placeholder_view_middle_right"
|
android:id="@+id/placeholder_view_middle_right"
|
||||||
|
|
@ -282,11 +282,11 @@
|
||||||
android:layout_width="80dp"
|
android:layout_width="80dp"
|
||||||
android:layout_height="80dp"
|
android:layout_height="80dp"
|
||||||
android:layout_marginTop="0dp"
|
android:layout_marginTop="0dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toTopOf="@+id/player_quick_action_view"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/exo_progress"
|
app:layout_constraintTop_toBottomOf="@+id/exo_progress"
|
||||||
app:layout_constraintVertical_bias=".60"
|
app:layout_constraintVertical_bias=".45"
|
||||||
app:tint="?attr/colorOnPrimaryContainer" />
|
app:tint="?attr/colorOnPrimaryContainer" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
|
|
@ -343,4 +343,25 @@
|
||||||
app:layout_constraintStart_toEndOf="@+id/placeholder_view_middle_right"
|
app:layout_constraintStart_toEndOf="@+id/placeholder_view_middle_right"
|
||||||
app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_right"
|
app:layout_constraintTop_toTopOf="@+id/placeholder_view_middle_right"
|
||||||
app:tint="?attr/colorOnPrimaryContainer" />
|
app:tint="?attr/colorOnPrimaryContainer" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/player_quick_action_view"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/now_playing_bottom_peek_height"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent">
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/player_open_queue_button"
|
||||||
|
android:layout_width="20dp"
|
||||||
|
android:layout_height="20dp"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:srcCompat="@drawable/ic_queue" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
<dimen name="activity_margin_content">24dp</dimen>
|
<dimen name="activity_margin_content">24dp</dimen>
|
||||||
<dimen name="bottom_sheet_behavior_peek_height">136dp</dimen>
|
<dimen name="bottom_sheet_behavior_peek_height">136dp</dimen>
|
||||||
<dimen name="bottom_sheet_peek_height">56dp</dimen>
|
<dimen name="bottom_sheet_peek_height">56dp</dimen>
|
||||||
|
<dimen name="now_playing_bottom_peek_height">64dp</dimen>
|
||||||
<dimen name="global_padding_bottom">164dp</dimen>
|
<dimen name="global_padding_bottom">164dp</dimen>
|
||||||
<dimen name="radius">2dp</dimen>
|
<dimen name="radius">2dp</dimen>
|
||||||
<dimen name="dots_height">2dp</dimen>
|
<dimen name="dots_height">2dp</dimen>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue