playback: unify compact views

Move the progress bar to the bottom of CompactPlaybackFragment in both
orientations. Doesn't look the nicest right now, but will be when the
new home fragment is created.
This commit is contained in:
OxygenCobalt 2021-08-21 13:27:39 -06:00
parent f06ca142f6
commit c9e84d0d39
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
5 changed files with 19 additions and 100 deletions

View file

@ -27,7 +27,6 @@ import android.content.res.Configuration
import android.content.res.Resources import android.content.res.Resources
import android.database.Cursor import android.database.Cursor
import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteDatabase
import android.graphics.drawable.AnimatedVectorDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Build import android.os.Build
import android.os.Looper import android.os.Looper

View file

@ -30,6 +30,11 @@ import kotlin.math.sign
* The Drag callback used by the queue recyclerview. Delivers updates to [PlaybackViewModel] * The Drag callback used by the queue recyclerview. Delivers updates to [PlaybackViewModel]
* and [QueueAdapter] simultaneously. * and [QueueAdapter] simultaneously.
* @author OxygenCobalt * @author OxygenCobalt
* TODO: Its possible to apply some elevation to the item views when they are picked up,
* however you need to keep track of the viewholder in the item touch helper and reset
* it when done. Theoretically this also means you can do the material drawer thing where
* the bottom of the recyclerview a darker color but is only shown when an item is moved.
* Maybe.
*/ */
class QueueDragCallback(private val playbackModel: PlaybackViewModel) : ItemTouchHelper.Callback() { class QueueDragCallback(private val playbackModel: PlaybackViewModel) : ItemTouchHelper.Callback() {
private lateinit var queueAdapter: QueueAdapter private lateinit var queueAdapter: QueueAdapter

View file

@ -19,7 +19,6 @@
package org.oxycblt.auxio.widgets package org.oxycblt.auxio.widgets
import android.content.Context import android.content.Context
import android.util.Log
import android.widget.RemoteViews import android.widget.RemoteViews
import androidx.annotation.LayoutRes import androidx.annotation.LayoutRes
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
@ -128,7 +127,6 @@ fun createFullWidget(context: Context, state: WidgetState): RemoteViews {
else -> R.drawable.ic_shuffle else -> R.drawable.ic_shuffle
} }
val loopRes = when (state.loopMode) { val loopRes = when (state.loopMode) {
LoopMode.NONE -> R.drawable.ic_loop LoopMode.NONE -> R.drawable.ic_loop
LoopMode.ALL -> R.drawable.ic_loop_tinted LoopMode.ALL -> R.drawable.ic_loop_tinted

View file

@ -1,84 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".playback.CompactPlaybackFragment">
<data>
<variable
name="song"
type="org.oxycblt.auxio.music.Song" />
<variable
name="playbackModel"
type="org.oxycblt.auxio.playback.PlaybackViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/playback_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:background="@drawable/ui_background_ripple"
android:clickable="true"
android:focusable="true">
<ImageView
android:id="@+id/playback_cover"
style="@style/Widget.ImageView.Compact"
android:layout_margin="@dimen/spacing_small"
android:contentDescription="@{@string/desc_album_cover(song.name)}"
app:albumArt="@{song}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_song" />
<TextView
android:id="@+id/playback_song"
style="@style/Widget.TextView.Compact.Primary"
android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_small"
android:text="@{song.name}"
app:layout_constraintBottom_toTopOf="@+id/playback_info"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toTopOf="@+id/playback_cover"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" />
<TextView
android:id="@+id/playback_info"
style="@style/Widget.TextView.Compact.Secondary"
android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_small"
android:text="@{@string/format_info(song.album.artist.name, song.album.name)}"
app:layout_constraintBottom_toBottomOf="@+id/playback_cover"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_song"
tools:text="Artist Name / Album Name" />
<ImageButton
android:id="@+id/playback_play_pause"
style="@style/Widget.Button.Unbounded"
android:src="@drawable/ic_playing_state"
android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause"
android:onClick="@{() -> playbackModel.invertPlayingStatus()}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/playback_progress"
style="@style/Widget.ProgressBar.Compact"
android:progress="@{playbackModel.positionAsProgress}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:progress="70" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View file

@ -24,23 +24,15 @@
android:clickable="true" android:clickable="true"
android:focusable="true"> android:focusable="true">
<ProgressBar
android:id="@+id/playback_progress"
style="@style/Widget.ProgressBar.Compact"
android:progress="@{playbackModel.positionAsProgress}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:progress="70" />
<ImageView <ImageView
android:id="@+id/playback_cover" android:id="@+id/playback_cover"
style="@style/Widget.ImageView.Compact" style="@style/Widget.ImageView.Compact"
android:layout_margin="@dimen/spacing_small" android:layout_margin="@dimen/spacing_small"
android:contentDescription="@{@string/desc_album_cover(song.name)}" android:contentDescription="@{@string/desc_album_cover(song.name)}"
app:albumArt="@{song}" app:albumArt="@{song}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@+id/playback_progress"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/playback_progress" app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_song" /> tools:src="@drawable/ic_song" />
<TextView <TextView
@ -52,7 +44,7 @@
app:layout_constraintBottom_toTopOf="@+id/playback_info" app:layout_constraintBottom_toTopOf="@+id/playback_info"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_cover" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="@+id/playback_cover"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
tools:text="Song Name" /> tools:text="Song Name" />
@ -62,7 +54,7 @@
android:layout_marginStart="@dimen/spacing_small" android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_small"
android:text="@{@string/format_info(song.album.artist.name, song.album.name)}" android:text="@{@string/format_info(song.album.artist.name, song.album.name)}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="@+id/playback_cover"
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintStart_toEndOf="@+id/playback_cover" app:layout_constraintStart_toEndOf="@+id/playback_cover"
app:layout_constraintTop_toBottomOf="@+id/playback_song" app:layout_constraintTop_toBottomOf="@+id/playback_song"
@ -71,13 +63,22 @@
<ImageButton <ImageButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
style="@style/Widget.Button.Unbounded" style="@style/Widget.Button.Unbounded"
android:src="@drawable/ic_playing_state"
android:layout_margin="@dimen/spacing_small" android:layout_margin="@dimen/spacing_small"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
android:src="@drawable/ic_playing_state"
android:onClick="@{() -> playbackModel.invertPlayingStatus()}" android:onClick="@{() -> playbackModel.invertPlayingStatus()}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/playback_progress"
style="@style/Widget.ProgressBar.Compact"
android:progress="@{playbackModel.positionAsProgress}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:progress="70" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>