style: use material in playback view

Use Slider and FloatingActionbutton in the playback view. This is not
because I wanted to, but because there were insane bugs on Lollipop
devices that stemmed from them being unable to load complex selector
resources.
This commit is contained in:
OxygenCobalt 2021-11-11 16:25:56 -07:00
parent 67797d957e
commit 032fd2bd40
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
51 changed files with 328 additions and 257 deletions

View file

@ -100,7 +100,7 @@ dependencies {
implementation 'io.coil-kt:coil:1.4.0' implementation 'io.coil-kt:coil:1.4.0'
// Material // Material
implementation "com.google.android.material:material:1.5.0-alpha05" implementation "com.google.android.material:material:1.5.0-beta01"
// --- DEBUG --- // --- DEBUG ---

View file

@ -25,6 +25,7 @@ import android.util.AttributeSet
import android.view.WindowInsets import android.view.WindowInsets
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.google.android.material.color.MaterialColors
import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.shape.MaterialShapeDrawable
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.ViewCompactPlaybackBinding import org.oxycblt.auxio.databinding.ViewCompactPlaybackBinding
@ -83,6 +84,12 @@ class CompactPlaybackView @JvmOverloads constructor(
binding.playbackPlayPause.setOnClickListener { binding.playbackPlayPause.setOnClickListener {
mCallback?.onPlayPauseClick() mCallback?.onPlayPauseClick()
} }
// By default, LinearProgressIndicator will not actually color the track with the proper
// opacity. Why? Who knows!
binding.playbackProgressBar.trackColor = MaterialColors.compositeARGBWithAlpha(
binding.playbackProgressBar.trackColor, (255 * 0.2).toInt()
)
} }
override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets { override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets {

View file

@ -20,8 +20,8 @@ package org.oxycblt.auxio.playback
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.widget.SeekBar
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import com.google.android.material.slider.Slider
import org.oxycblt.auxio.databinding.ViewSeekBarBinding import org.oxycblt.auxio.databinding.ViewSeekBarBinding
import org.oxycblt.auxio.music.toDuration import org.oxycblt.auxio.music.toDuration
import org.oxycblt.auxio.util.inflater import org.oxycblt.auxio.util.inflater
@ -36,39 +36,40 @@ class PlaybackSeekBar @JvmOverloads constructor(
context: Context, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyleRes: Int = -1 defStyleRes: Int = -1
) : ConstraintLayout(context, attrs, defStyleRes), SeekBar.OnSeekBarChangeListener { ) : ConstraintLayout(context, attrs, defStyleRes), Slider.OnChangeListener, Slider.OnSliderTouchListener {
private val binding = ViewSeekBarBinding.inflate(context.inflater, this, true) private val binding = ViewSeekBarBinding.inflate(context.inflater, this, true)
private val isSeeking: Boolean get() = binding.playbackDurationCurrent.isActivated private val isSeeking: Boolean get() = binding.playbackDurationCurrent.isActivated
var onConfirmListener: ((Long) -> Unit)? = null var onConfirmListener: ((Long) -> Unit)? = null
init { init {
binding.seekBar.setOnSeekBarChangeListener(this) binding.seekBar.addOnChangeListener(this)
binding.seekBar.addOnSliderTouchListener(this)
} }
fun setProgress(seconds: Long) { fun setProgress(seconds: Long) {
// Don't update the progress while we are seeking, that will make the SeekBar jump around. // Don't update the progress while we are seeking, that will make the SeekBar jump around.
if (!isSeeking) { if (!isSeeking) {
binding.seekBar.progress = seconds.toInt() binding.seekBar.value = seconds.toFloat()
binding.playbackDurationCurrent.text = seconds.toDuration() binding.playbackDurationCurrent.text = seconds.toDuration()
} }
} }
fun setDuration(seconds: Long) { fun setDuration(seconds: Long) {
binding.seekBar.max = seconds.toInt() binding.seekBar.valueTo = seconds.toFloat()
binding.playbackSongDuration.text = seconds.toDuration() binding.playbackSongDuration.text = seconds.toDuration()
} }
override fun onStartTrackingTouch(seekbar: SeekBar) { override fun onStartTrackingTouch(slider: Slider) {
binding.playbackDurationCurrent.isActivated = true binding.playbackDurationCurrent.isActivated = true
} }
override fun onStopTrackingTouch(seekbar: SeekBar) { override fun onStopTrackingTouch(slider: Slider) {
binding.playbackDurationCurrent.isActivated = false binding.playbackDurationCurrent.isActivated = false
onConfirmListener?.invoke(seekbar.progress.toLong()) onConfirmListener?.invoke(slider.value.toLong())
} }
override fun onProgressChanged(seekbar: SeekBar, value: Int, fromUser: Boolean) { override fun onValueChange(slider: Slider, value: Float, fromUser: Boolean) {
if (fromUser) { if (fromUser) {
// Don't actually seek yet when the user moves the progress bar, as to make our // Don't actually seek yet when the user moves the progress bar, as to make our
// player seek during every movement is both inefficient and weird. // player seek during every movement is both inefficient and weird.

View file

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<gradient android:endX="108" <gradient xmlns:android="http://schemas.android.com/apk/res/android"
android:endX="108"
android:endY="108" android:endY="108"
android:startX="0" android:startX="0"
android:startY="0" android:startY="0"
android:type="linear" android:type="linear">
xmlns:android="http://schemas.android.com/apk/res/android">
<item <item
android:color="#0D47A1" android:color="#0D47A1"
android:offset="0.0" /> android:offset="0.0" />

View file

@ -6,6 +6,6 @@
android:viewportHeight="108"> android:viewportHeight="108">
<path <path
android:fillColor="@color/fill_icon_bg" android:fillColor="@color/fill_icon_bg"
android:strokeColor="#00000000" android:pathData="M0 0h108v108H0z"
android:pathData="M0 0h108v108H0z" /> android:strokeColor="#00000000" />
</vector> </vector>

View file

@ -1,12 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp" android:width="108dp"
android:height="108dp" android:height="108dp"
android:viewportWidth="108" android:viewportWidth="108"
android:viewportHeight="108"> android:viewportHeight="108">
<path <path
android:fillColor="#ffffff"
android:pathData="M 53.999797,30.00003 V 56.66727 H 52.765254 48.82459 44.568872 l -6.567779,6.56803 v 4.05833 c -4.8e-5,0.0136 -0.0011,0.0269 -0.0011,0.0405 0,0.0136 0.0011,0.027 0.0011,0.0405 v 4.0573 l 6.567779,6.56804 h 8.196382 l 6.567788,-6.56804 v -4.0573 c 5e-5,-0.0133 9.92e-4,-0.0269 9.92e-4,-0.0405 V 40.667439 H 70.000006 V 30.001057 Z" android:pathData="M 53.999797,30.00003 V 56.66727 H 52.765254 48.82459 44.568872 l -6.567779,6.56803 v 4.05833 c -4.8e-5,0.0136 -0.0011,0.0269 -0.0011,0.0405 0,0.0136 0.0011,0.027 0.0011,0.0405 v 4.0573 l 6.567779,6.56804 h 8.196382 l 6.567788,-6.56804 v -4.0573 c 5e-5,-0.0133 9.92e-4,-0.0269 9.92e-4,-0.0405 V 40.667439 H 70.000006 V 30.001057 Z"
android:strokeColor="#00000000" android:strokeColor="#00000000"></path>
android:fillColor="#ffffff">
</path>
</vector> </vector>

View file

@ -2,10 +2,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorControlNormal"> <path
<path android:fillColor="@android:color/white"
android:fillColor="@android:color/white" android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z" />
android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z"/>
</vector> </vector>

View file

@ -2,10 +2,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorControlNormal"> <path
<path android:fillColor="@android:color/white"
android:fillColor="@android:color/white" android:pathData="M8,5v14l11,-7L8,5z" />
android:pathData="M8,5v14l11,-7L8,5z"/>
</vector> </vector>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_pause" <item android:drawable="@drawable/ic_pause" android:state_activated="true" />
android:state_activated="true" />
<item android:drawable="@drawable/ic_play" /> <item android:drawable="@drawable/ic_play" />
</selector> </selector>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android" <ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/m3_button_ripple_color_selector"> android:color="@color/mtrl_btn_ripple_color">
<item android:id="@android:id/background"> <item android:id="@android:id/background">
<shape <shape
android:shape="rectangle" android:shape="rectangle"

View file

@ -1,11 +1,16 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape <shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:shape="rectangle"
android:tint="?attr/colorSecondary"> android:tint="?attr/colorSecondary">
<corners android:radius="8dp" /> <corners android:radius="8dp" />
<padding android:top="4dp" android:bottom="4dp" android:right="2dp" android:left="2dp"/> <padding
<size android:width="8dp" android:height="52dp" /> android:bottom="4dp"
android:left="2dp"
android:right="2dp"
android:top="4dp" />
<size
android:width="8dp"
android:height="52dp" />
<solid android:color="@android:color/white" /> <solid android:color="@android:color/white" />
</shape> </shape>

View file

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?><!-- Hack to make MaterialShapeDrawable cooperate with RippleDrawable. See
<!-- Hack to make MaterialShapeDrawable cooperate with RippleDrawable. See
CompactPlaybackView for more info. --> CompactPlaybackView for more info. -->
<ripple xmlns:android="http://schemas.android.com/apk/res/android" <ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight"> android:color="?attr/colorControlHighlight">

View file

@ -2,10 +2,9 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid <solid android:color="#00000000" />
android:color="#00000000" />
<size <size
android:width="1000px" android:width="1000px"
android:height="1000px"/> android:height="1000px" />
</shape> </shape>

View file

@ -24,7 +24,8 @@
android:id="@+id/playback_layout" android:id="@+id/playback_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/colorSurface"> android:background="?attr/colorSurface"
android:clipToPadding="false">
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playback_toolbar" android:id="@+id/playback_toolbar"
@ -109,8 +110,8 @@
android:id="@+id/playback_seek_bar" android:id="@+id/playback_seek_bar"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginEnd="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause" app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
@ -144,9 +145,9 @@
app:layout_constraintStart_toEndOf="@+id/playback_loop" app:layout_constraintStart_toEndOf="@+id/playback_loop"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<ImageButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
style="@style/Widget.Auxio.Button.Circular" style="@style/Widget.Auxio.FloatingActionButton.MidLarge"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"

View file

@ -24,10 +24,10 @@
android:id="@+id/detail_name" android:id="@+id/detail_name"
style="@style/Widget.Auxio.TextView.Detail" style="@style/Widget.Auxio.TextView.Detail"
android:layout_width="0dp" android:layout_width="0dp"
android:maxLines="2"
android:ellipsize="end"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:ellipsize="end"
android:maxLines="2"
app:layout_constraintBottom_toTopOf="@+id/detail_subhead" app:layout_constraintBottom_toTopOf="@+id/detail_subhead"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"

View file

@ -24,8 +24,8 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:maxLines="4"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="4"
app:layout_constraintBottom_toTopOf="@+id/detail_subhead" app:layout_constraintBottom_toTopOf="@+id/detail_subhead"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"

View file

@ -24,7 +24,8 @@
android:id="@+id/playback_layout" android:id="@+id/playback_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/colorSurface"> android:background="?attr/colorSurface"
android:clipToPadding="false">
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playback_toolbar" android:id="@+id/playback_toolbar"
@ -110,8 +111,8 @@
android:id="@+id/playback_seek_bar" android:id="@+id/playback_seek_bar"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginEnd="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause" app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
@ -145,9 +146,9 @@
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<ImageButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
style="@style/Widget.Auxio.Button.Circular" style="@style/Widget.Auxio.FloatingActionButton.MidLarge"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"

View file

@ -24,7 +24,8 @@
android:id="@+id/playback_layout" android:id="@+id/playback_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/colorSurface"> android:background="?attr/colorSurface"
android:clipToPadding="false">
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playback_toolbar" android:id="@+id/playback_toolbar"
@ -37,7 +38,7 @@
<ImageView <ImageView
android:id="@+id/playback_cover" android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full" style="@style/Widget.Auxio.Image.Full"
android:layout_margin="@dimen/spacing_mid_huge" android:layout_margin="@dimen/spacing_huge"
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_toTopOf="@+id/playback_song" app:layout_constraintBottom_toTopOf="@+id/playback_song"
@ -52,8 +53,8 @@
style="@style/Widget.Auxio.TextView.Primary" style="@style/Widget.Auxio.TextView.Primary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_mid_huge" android:layout_marginStart="@dimen/spacing_huge"
android:layout_marginEnd="@dimen/spacing_mid_huge" android:layout_marginEnd="@dimen/spacing_huge"
android:onClick="@{() -> detailModel.navToItem(playbackModel.song)}" android:onClick="@{() -> detailModel.navToItem(playbackModel.song)}"
android:text="@{song.name}" android:text="@{song.name}"
app:layout_constraintBottom_toTopOf="@+id/playback_artist" app:layout_constraintBottom_toTopOf="@+id/playback_artist"
@ -67,8 +68,8 @@
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_mid_huge" android:layout_marginStart="@dimen/spacing_huge"
android:layout_marginEnd="@dimen/spacing_mid_huge" android:layout_marginEnd="@dimen/spacing_huge"
android:onClick="@{() -> detailModel.navToItem(playbackModel.song.album.artist)}" android:onClick="@{() -> detailModel.navToItem(playbackModel.song.album.artist)}"
android:text="@{song.album.artist.resolvedName}" android:text="@{song.album.artist.resolvedName}"
app:layout_constraintBottom_toTopOf="@+id/playback_album" app:layout_constraintBottom_toTopOf="@+id/playback_album"
@ -81,8 +82,8 @@
style="@style/Widget.Auxio.TextView.Secondary" style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_mid_huge" android:layout_marginStart="@dimen/spacing_huge"
android:layout_marginEnd="@dimen/spacing_mid_huge" android:layout_marginEnd="@dimen/spacing_huge"
android:onClick="@{() -> detailModel.navToItem(playbackModel.song.album)}" android:onClick="@{() -> detailModel.navToItem(playbackModel.song.album)}"
android:text="@{song.album.name}" android:text="@{song.album.name}"
app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar" app:layout_constraintBottom_toTopOf="@+id/playback_seek_bar"
@ -94,8 +95,8 @@
android:id="@+id/playback_seek_bar" android:id="@+id/playback_seek_bar"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_mid_huge" android:layout_marginStart="@dimen/spacing_large"
android:layout_marginEnd="@dimen/spacing_mid_huge" android:layout_marginEnd="@dimen/spacing_large"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause" app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />
@ -127,9 +128,9 @@
app:layout_constraintEnd_toStartOf="@+id/playback_play_pause" app:layout_constraintEnd_toStartOf="@+id/playback_play_pause"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<ImageButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
style="@style/Widget.Auxio.Button.Circular" style="@style/Widget.Auxio.FloatingActionButton.MidLarge"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/spacing_large" android:layout_marginBottom="@dimen/spacing_large"

View file

@ -8,8 +8,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:overScrollMode="never" android:overScrollMode="never"
android:paddingTop="@dimen/spacing_medium"
android:paddingStart="@dimen/spacing_medium" android:paddingStart="@dimen/spacing_medium"
android:paddingTop="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_medium" android:paddingEnd="@dimen/spacing_medium"
app:layoutManager="org.oxycblt.auxio.accent.AutoGridLayoutManager" app:layoutManager="org.oxycblt.auxio.accent.AutoGridLayoutManager"
app:layout_constraintBottom_toTopOf="@+id/accent_cancel" app:layout_constraintBottom_toTopOf="@+id/accent_cancel"

View file

@ -178,8 +178,8 @@
style="@style/Widget.Auxio.TextView.Icon" style="@style/Widget.Auxio.TextView.Icon"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:theme="@style/Theme.Auxio.Neutral"
android:text="@string/lbl_author" android:text="@string/lbl_author"
android:theme="@style/Theme.Auxio.Neutral"
app:drawableStartCompat="@drawable/ic_artist" app:drawableStartCompat="@drawable/ic_artist"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View file

@ -32,9 +32,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:background="@android:color/transparent"
app:tabContentStart="@dimen/spacing_medium" app:tabContentStart="@dimen/spacing_medium"
app:tabMode="scrollable"
app:tabGravity="start" app:tabGravity="start"
app:tabTextColor="@color/sel_accented_primary"/> app:tabMode="scrollable"
app:tabTextAppearance="@style/TextAppearance.Auxio.LabelLarge"
app:tabTextColor="@color/sel_accented_primary" />
</org.oxycblt.auxio.ui.EdgeAppBarLayout> </org.oxycblt.auxio.ui.EdgeAppBarLayout>
@ -57,10 +58,10 @@
android:id="@+id/home_fab" android:id="@+id/home_fab"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/ic_shuffle"
app:fabSize="normal"
android:layout_margin="@dimen/spacing_medium" android:layout_margin="@dimen/spacing_medium"
android:contentDescription="@string/desc_shuffle_all" android:contentDescription="@string/desc_shuffle_all"
android:src="@drawable/ic_shuffle"
app:fabSize="normal"
app:tint="?attr/colorOnPrimaryContainer" /> app:tint="?attr/colorOnPrimaryContainer" />
</org.oxycblt.auxio.home.FloatingActionButtonContainer> </org.oxycblt.auxio.home.FloatingActionButtonContainer>

View file

@ -23,7 +23,8 @@
android:id="@+id/playback_layout" android:id="@+id/playback_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/colorSurface"> android:background="?attr/colorSurface"
android:clipToPadding="false">
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playback_toolbar" android:id="@+id/playback_toolbar"
@ -93,8 +94,8 @@
android:id="@+id/playback_seek_bar" android:id="@+id/playback_seek_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_medium" android:layout_marginEnd="@dimen/spacing_small"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause" app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />
@ -125,9 +126,9 @@
app:layout_constraintStart_toEndOf="@+id/playback_loop" app:layout_constraintStart_toEndOf="@+id/playback_loop"
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" /> app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
<ImageButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
style="@style/Widget.Auxio.Button.Circular" style="@style/Widget.Auxio.FloatingActionButton.MidLarge"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/spacing_medium" android:layout_marginBottom="@dimen/spacing_medium"

View file

@ -24,24 +24,24 @@
android:id="@+id/search_text_layout" android:id="@+id/search_text_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:hintEnabled="false"
app:endIconContentDescription="@string/desc_clear_search" app:endIconContentDescription="@string/desc_clear_search"
app:endIconDrawable="@drawable/ic_close" app:endIconDrawable="@drawable/ic_close"
app:endIconMode="clear_text" app:endIconMode="clear_text"
app:endIconTint="?attr/colorControlNormal" app:endIconTint="?attr/colorControlNormal"
app:errorEnabled="false"> app:errorEnabled="false"
app:hintEnabled="false">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/search_edit_text" android:id="@+id/search_edit_text"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:hint="@string/hint_search_library" android:hint="@string/hint_search_library"
android:imeOptions="actionSearch|flagNoExtractUi" android:imeOptions="actionSearch|flagNoExtractUi"
android:inputType="textFilter" /> android:inputType="textFilter"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>

View file

@ -4,11 +4,11 @@
tools:context=".settings.pref.AccentAdapter.ViewHolder"> tools:context=".settings.pref.AccentAdapter.ViewHolder">
<FrameLayout <FrameLayout
android:theme="@style/ThemeOverlay.Accent"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/spacing_small" android:paddingTop="@dimen/spacing_small"
android:paddingBottom="@dimen/spacing_small"> android:paddingBottom="@dimen/spacing_small"
android:theme="@style/ThemeOverlay.Accent">
<ImageButton <ImageButton
android:id="@+id/accent" android:id="@+id/accent"

View file

@ -31,12 +31,12 @@
style="@style/Widget.AppCompat.Button.Borderless" style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/ui_small_unbounded_ripple"
android:contentDescription="@{context.getString(header.desc)}" android:contentDescription="@{context.getString(header.desc)}"
android:minWidth="@dimen/size_btn_small" android:minWidth="@dimen/size_btn_small"
android:minHeight="@dimen/size_btn_small" android:minHeight="@dimen/size_btn_small"
android:paddingStart="@dimen/spacing_medium" android:paddingStart="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_medium" android:paddingEnd="@dimen/spacing_medium"
android:background="@drawable/ui_small_unbounded_ripple"
android:src="@{context.getDrawable(header.icon)}" android:src="@{context.getDrawable(header.icon)}"
app:layout_constraintBottom_toTopOf="@id/header_divider" app:layout_constraintBottom_toTopOf="@id/header_divider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View file

@ -25,9 +25,9 @@
<TextView <TextView
android:id="@+id/artist_name" android:id="@+id/artist_name"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:text="@{artist.resolvedName}" android:text="@{artist.resolvedName}"
app:layout_constraintBottom_toTopOf="@+id/artist_details" app:layout_constraintBottom_toTopOf="@+id/artist_details"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@ -38,9 +38,9 @@
<TextView <TextView
android:id="@+id/artist_details" android:id="@+id/artist_details"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Item.Secondary"
app:artistCounts="@{artist}" app:artistCounts="@{artist}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View file

@ -25,11 +25,11 @@
<TextView <TextView
android:id="@+id/album_name" android:id="@+id/album_name"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:textColor="@color/sel_accented_primary"
android:text="@{album.name}" android:text="@{album.name}"
android:textColor="@color/sel_accented_primary"
app:layout_constraintBottom_toTopOf="@+id/album_year" app:layout_constraintBottom_toTopOf="@+id/album_year"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/album_cover" app:layout_constraintStart_toEndOf="@+id/album_cover"
@ -39,9 +39,9 @@
<TextView <TextView
android:id="@+id/album_year" android:id="@+id/album_year"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:text="@{album.year != 0 ? String.valueOf(album.year) : @string/def_date}" android:text="@{album.year != 0 ? String.valueOf(album.year) : @string/def_date}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View file

@ -53,9 +53,9 @@
<TextView <TextView
android:id="@+id/song_duration" android:id="@+id/song_duration"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:ellipsize="none" android:ellipsize="none"
android:gravity="end" android:gravity="end"
android:text="@{song.formattedDuration}" android:text="@{song.formattedDuration}"

View file

@ -35,9 +35,9 @@
<TextView <TextView
android:id="@+id/detail_subhead" android:id="@+id/detail_subhead"
style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Secondary"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detail_name" app:layout_constraintTop_toBottomOf="@+id/detail_name"
@ -45,9 +45,9 @@
<TextView <TextView
android:id="@+id/detail_info" android:id="@+id/detail_info"
style="@style/Widget.Auxio.TextView.Secondary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Secondary"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detail_subhead" app:layout_constraintTop_toBottomOf="@+id/detail_subhead"

View file

@ -5,8 +5,8 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
style="@style/Widget.Auxio.ItemLayout" style="@style/Widget.Auxio.ItemLayout"
android:layout_height="wrap_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false" android:clickable="false"
android:focusable="false" android:focusable="false"
android:padding="0dp"> android:padding="0dp">
@ -14,11 +14,11 @@
<TextView <TextView
android:id="@+id/excluded_path" android:id="@+id/excluded_path"
style="@style/Widget.Auxio.TextView.Item.Primary" style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_height="wrap_content"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_medium" android:layout_margin="@dimen/spacing_medium"
android:maxLines="@null"
android:gravity="center" android:gravity="center"
android:maxLines="@null"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/excluded_clear" app:layout_constraintEnd_toStartOf="@+id/excluded_clear"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View file

@ -53,9 +53,9 @@
<TextView <TextView
android:id="@+id/song_duration" android:id="@+id/song_duration"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Auxio.TextView.Item.Secondary"
android:ellipsize="none" android:ellipsize="none"
android:gravity="end" android:gravity="end"
android:text="@{song.formattedDuration}" android:text="@{song.formattedDuration}"

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ui.HeaderViewHolder"> tools:context=".ui.HeaderViewHolder">
<data> <data>

View file

@ -21,16 +21,16 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/colorPrimary" android:background="?attr/colorPrimary"
android:visibility="invisible"/> android:visibility="invisible" />
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/ic_clear"
android:layout_gravity="end|center_vertical" android:layout_gravity="end|center_vertical"
android:contentDescription="@string/desc_clear_queue_item"
android:padding="@dimen/spacing_medium" android:padding="@dimen/spacing_medium"
app:tint="?attr/colorSurface" android:src="@drawable/ic_clear"
android:contentDescription="@string/desc_clear_queue_item"/> app:tint="?attr/colorSurface" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/body" android:id="@+id/body"

View file

@ -5,22 +5,22 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
style="@style/Widget.Auxio.ItemLayout" style="@style/Widget.Auxio.ItemLayout"
android:layout_height="wrap_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="0dp"> android:padding="0dp">
<com.google.android.material.checkbox.MaterialCheckBox <com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/tab_icon" android:id="@+id/tab_icon"
android:layout_width="0dp"
style="@style/Widget.Material3.CompoundButton.CheckBox" style="@style/Widget.Material3.CompoundButton.CheckBox"
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium" android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginTop="@dimen/spacing_small" android:layout_marginTop="@dimen/spacing_small"
android:layout_marginBottom="@dimen/spacing_small" android:layout_marginBottom="@dimen/spacing_small"
android:clickable="false" android:clickable="false"
android:focusable="false" android:focusable="false"
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge"
android:paddingStart="@dimen/spacing_medium" android:paddingStart="@dimen/spacing_medium"
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge"
app:buttonCompat="@null" app:buttonCompat="@null"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tab_drag_handle" app:layout_constraintEnd_toStartOf="@+id/tab_drag_handle"

View file

@ -30,9 +30,9 @@
<TextView <TextView
android:id="@+id/playback_song" android:id="@+id/playback_song"
android:layout_height="wrap_content"
android:layout_width="0dp"
style="@style/Widget.Auxio.TextView.Primary.Compact" style="@style/Widget.Auxio.TextView.Primary.Compact"
android:layout_width="0dp"
android:layout_height="wrap_content"
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="@{song.name}" android:text="@{song.name}"
@ -45,9 +45,9 @@
<TextView <TextView
android:id="@+id/playback_info" android:id="@+id/playback_info"
android:layout_height="wrap_content"
android:layout_width="0dp"
style="@style/Widget.Auxio.TextView.Secondary.Compact" style="@style/Widget.Auxio.TextView.Secondary.Compact"
android:layout_width="0dp"
android:layout_height="wrap_content"
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:ellipsize="end" android:ellipsize="end"
@ -60,25 +60,26 @@
<ImageButton <ImageButton
android:id="@+id/playback_play_pause" android:id="@+id/playback_play_pause"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
style="@style/Widget.Auxio.Button.Unbounded" style="@style/Widget.Auxio.Button.Unbounded"
android:src="@drawable/sel_playing_state" android:layout_width="wrap_content"
android:layout_height="wrap_content"
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/sel_playing_state"
app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar" app:layout_constraintBottom_toTopOf="@+id/playback_progress_bar"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ProgressBar <com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/playback_progress_bar" android:id="@+id/playback_progress_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/size_stroke_large" android:layout_height="wrap_content"
android:disabledAlpha="0.24"
android:max="@{(int) song.seconds}" android:max="@{(int) song.seconds}"
style="@style/Widget.Auxio.ProgressBar"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:trackColor="@color/blue_primary"
tools:progress="70" /> tools:progress="70" />
</merge> </merge>

View file

@ -8,14 +8,18 @@
tools:layout_width="match_parent" tools:layout_width="match_parent"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<SeekBar <com.google.android.material.slider.Slider
android:id="@+id/seek_bar" android:id="@+id/seek_bar"
style="@style/Widget.Auxio.SeekBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/spacing_medium"
android:paddingStart="@dimen/spacing_small" android:paddingStart="@dimen/spacing_small"
android:paddingEnd="@dimen/spacing_small" android:paddingEnd="@dimen/spacing_small"
android:layout_marginBottom="@dimen/spacing_medium" app:labelBehavior="gone"
android:valueFrom="0"
android:valueTo="0"
app:thumbRadius="6dp"
app:haloRadius="14dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />
@ -24,8 +28,8 @@
android:id="@+id/playback_duration_current" android:id="@+id/playback_duration_current"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginBottom="@dimen/spacing_small" android:layout_marginBottom="@dimen/spacing_small"
android:layout_marginStart="@dimen/spacing_small"
android:textColor="@color/sel_accented_secondary" android:textColor="@color/sel_accented_secondary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -35,8 +39,8 @@
android:id="@+id/playback_song_duration" android:id="@+id/playback_song_duration"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium"
android:layout_marginBottom="@dimen/spacing_small" android:layout_marginBottom="@dimen/spacing_small"
android:layout_marginEnd="@dimen/spacing_small"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
tools:text="16:16" /> tools:text="16:16" />

View file

@ -2,10 +2,10 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/background" android:id="@android:id/background"
android:background="?attr/colorSurface"
android:theme="@style/Theme.Widget"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:background="?attr/colorSurface"
android:theme="@style/Theme.Widget">
<!-- <!--
We can't use ConstraintLayout on widgets due to RemoteView limitations, but We can't use ConstraintLayout on widgets due to RemoteView limitations, but
@ -19,15 +19,15 @@
android:id="@+id/widget_aspect_ratio" android:id="@+id/widget_aspect_ratio"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_above="@+id/widget_panel"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_medium"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_medium"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_above="@+id/widget_panel"
android:src="@drawable/ui_widget_aspect_ratio" android:src="@drawable/ui_widget_aspect_ratio"
android:visibility="invisible" android:visibility="invisible"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
@ -71,45 +71,45 @@
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_loop" android:id="@+id/widget_loop"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_weight="1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_change_loop" android:contentDescription="@string/desc_change_loop"
android:src="@drawable/ic_loop" /> android:src="@drawable/ic_loop" />
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_skip_prev" android:id="@+id/widget_skip_prev"
android:layout_weight="1"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_skip_prev" android:contentDescription="@string/desc_skip_prev"
android:src="@drawable/ic_skip_prev" /> android:src="@drawable/ic_skip_prev" />
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_play_pause" android:id="@+id/widget_play_pause"
android:layout_weight="1"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
android:src="@drawable/sel_playing_state" /> android:src="@drawable/sel_playing_state" />
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_skip_next" android:id="@+id/widget_skip_next"
android:layout_weight="1"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_skip_next" android:contentDescription="@string/desc_skip_next"
android:src="@drawable/ic_skip_next" /> android:src="@drawable/ic_skip_next" />
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_shuffle" android:id="@+id/widget_shuffle"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_weight="1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_shuffle" android:contentDescription="@string/desc_shuffle"
android:src="@drawable/ic_shuffle" /> android:src="@drawable/ic_shuffle" />

View file

@ -2,10 +2,10 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/background" android:id="@android:id/background"
android:background="?attr/colorSurface"
android:theme="@style/Theme.Widget"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:background="?attr/colorSurface"
android:theme="@style/Theme.Widget">
<!-- <!--
We can't use ConstraintLayout on widgets due to RemoteView limitations, but We can't use ConstraintLayout on widgets due to RemoteView limitations, but
@ -19,15 +19,15 @@
android:id="@+id/widget_aspect_ratio" android:id="@+id/widget_aspect_ratio"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_above="@+id/widget_panel"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_medium"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:layout_marginTop="@dimen/spacing_medium"
android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginEnd="@dimen/spacing_medium"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_above="@+id/widget_panel"
android:src="@drawable/ui_widget_aspect_ratio" android:src="@drawable/ui_widget_aspect_ratio"
android:visibility="invisible" android:visibility="invisible"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />

View file

@ -3,60 +3,60 @@
android:id="@android:id/background" android:id="@android:id/background"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_vertical"
android:background="?attr/colorSurface" android:background="?attr/colorSurface"
android:gravity="center_vertical"
android:orientation="vertical"
android:theme="@style/Theme.Widget"> android:theme="@style/Theme.Widget">
<LinearLayout
style="@style/Widget.Auxio.AppWidget.Panel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/widget_cover"
style="@style/Widget.Auxio.Image.Normal"
android:layout_marginEnd="@dimen/spacing_medium"
android:contentDescription="@string/desc_no_cover"
android:scaleType="centerCrop"
android:src="@drawable/ic_song" />
<LinearLayout <LinearLayout
style="@style/Widget.Auxio.AppWidget.Panel" android:layout_width="0dp"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:layout_weight="1"
android:orientation="horizontal"> android:orientation="vertical">
<ImageView <android.widget.TextView
android:id="@+id/widget_cover" android:id="@+id/widget_song"
style="@style/Widget.Auxio.Image.Normal" style="@style/Widget.Auxio.TextView.Primary.AppWidget"
android:contentDescription="@string/desc_no_cover" android:layout_width="match_parent"
android:scaleType="centerCrop"
android:layout_marginEnd="@dimen/spacing_medium"
android:src="@drawable/ic_song" />
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:text="@string/def_widget_song" />
<android.widget.TextView <android.widget.TextView
android:id="@+id/widget_song" android:id="@+id/widget_artist"
style="@style/Widget.Auxio.TextView.Primary.AppWidget" style="@style/Widget.Auxio.TextView.Secondary.AppWidget"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/def_widget_song" />
<android.widget.TextView
android:id="@+id/widget_artist"
style="@style/Widget.Auxio.TextView.Secondary.AppWidget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/def_widget_artist" />
</LinearLayout>
<android.widget.ImageButton
android:id="@+id/widget_play_pause"
style="@style/Widget.Auxio.Button.AppWidget"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="@dimen/size_btn_small" android:text="@string/def_widget_artist" />
android:minWidth="@dimen/size_btn_small"
android:contentDescription="@string/desc_play_pause"
android:src="@drawable/sel_playing_state" />
</LinearLayout> </LinearLayout>
<android.widget.ImageButton
android:id="@+id/widget_play_pause"
style="@style/Widget.Auxio.Button.AppWidget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/desc_play_pause"
android:minWidth="@dimen/size_btn_small"
android:minHeight="@dimen/size_btn_small"
android:src="@drawable/sel_playing_state" />
</LinearLayout>
</LinearLayout> </LinearLayout>

View file

@ -3,9 +3,9 @@
android:id="@android:id/background" android:id="@android:id/background"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_vertical"
android:background="?attr/colorSurface" android:background="?attr/colorSurface"
android:gravity="center_vertical"
android:orientation="vertical"
android:theme="@style/Theme.Widget"> android:theme="@style/Theme.Widget">
<android.widget.LinearLayout style="@style/Widget.Auxio.AppWidget.Panel"> <android.widget.LinearLayout style="@style/Widget.Auxio.AppWidget.Panel">
@ -18,9 +18,9 @@
<ImageView <ImageView
android:id="@+id/widget_cover" android:id="@+id/widget_cover"
style="@style/Widget.Auxio.Image.Normal" style="@style/Widget.Auxio.Image.Normal"
android:layout_marginEnd="@dimen/spacing_medium"
android:contentDescription="@string/desc_no_cover" android:contentDescription="@string/desc_no_cover"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:layout_marginEnd="@dimen/spacing_medium"
android:src="@drawable/ic_song" /> android:src="@drawable/ic_song" />
<LinearLayout <LinearLayout
@ -55,45 +55,45 @@
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_loop" android:id="@+id/widget_loop"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_weight="1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_change_loop" android:contentDescription="@string/desc_change_loop"
android:src="@drawable/ic_loop" /> android:src="@drawable/ic_loop" />
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_skip_prev" android:id="@+id/widget_skip_prev"
android:layout_weight="1"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_skip_prev" android:contentDescription="@string/desc_skip_prev"
android:src="@drawable/ic_skip_prev" /> android:src="@drawable/ic_skip_prev" />
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_play_pause" android:id="@+id/widget_play_pause"
android:layout_weight="1"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_play_pause" android:contentDescription="@string/desc_play_pause"
android:src="@drawable/sel_playing_state" /> android:src="@drawable/sel_playing_state" />
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_skip_next" android:id="@+id/widget_skip_next"
android:layout_weight="1"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_skip_next" android:contentDescription="@string/desc_skip_next"
android:src="@drawable/ic_skip_next" /> android:src="@drawable/ic_skip_next" />
<android.widget.ImageButton <android.widget.ImageButton
android:id="@+id/widget_shuffle" android:id="@+id/widget_shuffle"
style="@style/Widget.Auxio.Button.AppWidget" style="@style/Widget.Auxio.Button.AppWidget"
android:layout_weight="1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/desc_shuffle" android:contentDescription="@string/desc_shuffle"
android:src="@drawable/ic_shuffle" /> android:src="@drawable/ic_shuffle" />

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/> <background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground"/> <foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon> </adaptive-icon>

View file

@ -16,23 +16,32 @@
<item name="colorOnPrimary">@color/m3_sys_color_dynamic_dark_on_primary</item> <item name="colorOnPrimary">@color/m3_sys_color_dynamic_dark_on_primary</item>
<item name="colorPrimaryInverse">@color/m3_sys_color_dynamic_dark_inverse_primary</item> <item name="colorPrimaryInverse">@color/m3_sys_color_dynamic_dark_inverse_primary</item>
<item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_dark_primary_container</item> <item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_dark_primary_container</item>
<item name="colorOnPrimaryContainer">@color/m3_sys_color_dynamic_dark_on_primary_container</item> <item name="colorOnPrimaryContainer">@color/m3_sys_color_dynamic_dark_on_primary_container
</item>
<item name="colorSecondary">@color/m3_sys_color_dynamic_dark_secondary</item> <item name="colorSecondary">@color/m3_sys_color_dynamic_dark_secondary</item>
<item name="colorOnSecondary">@color/m3_sys_color_dynamic_dark_on_secondary</item> <item name="colorOnSecondary">@color/m3_sys_color_dynamic_dark_on_secondary</item>
<item name="colorSecondaryContainer">@color/m3_sys_color_dynamic_dark_secondary_container</item> <item name="colorSecondaryContainer">@color/m3_sys_color_dynamic_dark_secondary_container
<item name="colorOnSecondaryContainer">@color/m3_sys_color_dynamic_dark_on_secondary_container</item> </item>
<item name="colorOnSecondaryContainer">
@color/m3_sys_color_dynamic_dark_on_secondary_container
</item>
<item name="colorTertiary">@color/m3_sys_color_dynamic_dark_tertiary</item> <item name="colorTertiary">@color/m3_sys_color_dynamic_dark_tertiary</item>
<item name="colorOnTertiary">@color/m3_sys_color_dynamic_dark_on_tertiary</item> <item name="colorOnTertiary">@color/m3_sys_color_dynamic_dark_on_tertiary</item>
<item name="colorTertiaryContainer">@color/m3_sys_color_dynamic_dark_tertiary_container</item> <item name="colorTertiaryContainer">@color/m3_sys_color_dynamic_dark_tertiary_container
<item name="colorOnTertiaryContainer">@color/m3_sys_color_dynamic_dark_on_tertiary_container</item> </item>
<item name="colorOnTertiaryContainer">
@color/m3_sys_color_dynamic_dark_on_tertiary_container
</item>
<item name="android:colorBackground">@color/m3_sys_color_dynamic_dark_background</item> <item name="android:colorBackground">@color/m3_sys_color_dynamic_dark_background</item>
<item name="colorOnBackground">@color/m3_sys_color_dynamic_dark_on_background</item> <item name="colorOnBackground">@color/m3_sys_color_dynamic_dark_on_background</item>
<item name="colorSurface">@color/m3_sys_color_dynamic_dark_surface</item> <item name="colorSurface">@color/m3_sys_color_dynamic_dark_surface</item>
<item name="colorOnSurface">@color/m3_sys_color_dynamic_dark_on_surface</item> <item name="colorOnSurface">@color/m3_sys_color_dynamic_dark_on_surface</item>
<item name="colorSurfaceVariant">@color/m3_sys_color_dynamic_dark_surface_variant</item> <item name="colorSurfaceVariant">@color/m3_sys_color_dynamic_dark_surface_variant</item>
<item name="colorOnSurfaceVariant">@color/m3_sys_color_dynamic_dark_on_surface_variant</item> <item name="colorOnSurfaceVariant">@color/m3_sys_color_dynamic_dark_on_surface_variant
</item>
<item name="colorSurfaceInverse">@color/m3_sys_color_dynamic_dark_inverse_surface</item> <item name="colorSurfaceInverse">@color/m3_sys_color_dynamic_dark_inverse_surface</item>
<item name="colorOnSurfaceInverse">@color/m3_sys_color_dynamic_dark_inverse_on_surface</item> <item name="colorOnSurfaceInverse">@color/m3_sys_color_dynamic_dark_inverse_on_surface
</item>
<item name="colorOutline">@color/m3_sys_color_dynamic_dark_outline</item> <item name="colorOutline">@color/m3_sys_color_dynamic_dark_outline</item>
<item name="colorError">@color/m3_sys_color_dark_error</item> <item name="colorError">@color/m3_sys_color_dark_error</item>
<item name="colorOnError">@color/m3_sys_color_dark_on_error</item> <item name="colorOnError">@color/m3_sys_color_dark_on_error</item>
@ -40,17 +49,32 @@
<item name="colorOnErrorContainer">@color/m3_sys_color_dark_on_error_container</item> <item name="colorOnErrorContainer">@color/m3_sys_color_dark_on_error_container</item>
<!-- Default Framework Text Colors. --> <!-- Default Framework Text Colors. -->
<item name="android:textColorPrimary">@color/m3_dynamic_dark_default_color_primary_text</item> <item name="android:textColorPrimary">@color/m3_dynamic_dark_default_color_primary_text
<item name="android:textColorPrimaryInverse">@color/m3_dynamic_default_color_primary_text</item> </item>
<item name="android:textColorSecondary">@color/m3_dynamic_dark_default_color_secondary_text</item> <item name="android:textColorPrimaryInverse">@color/m3_dynamic_default_color_primary_text
<item name="android:textColorSecondaryInverse">@color/m3_dynamic_default_color_secondary_text</item> </item>
<item name="android:textColorTertiary">@color/m3_dynamic_dark_default_color_secondary_text</item> <item name="android:textColorSecondary">
<item name="android:textColorTertiaryInverse">@color/m3_dynamic_default_color_secondary_text</item> @color/m3_dynamic_dark_default_color_secondary_text
<item name="android:textColorPrimaryDisableOnly">@color/m3_dynamic_dark_primary_text_disable_only</item> </item>
<item name="android:textColorPrimaryInverseDisableOnly">@color/m3_dynamic_primary_text_disable_only</item> <item name="android:textColorSecondaryInverse">
@color/m3_dynamic_default_color_secondary_text
</item>
<item name="android:textColorTertiary">@color/m3_dynamic_dark_default_color_secondary_text
</item>
<item name="android:textColorTertiaryInverse">
@color/m3_dynamic_default_color_secondary_text
</item>
<item name="android:textColorPrimaryDisableOnly">
@color/m3_dynamic_dark_primary_text_disable_only
</item>
<item name="android:textColorPrimaryInverseDisableOnly">
@color/m3_dynamic_primary_text_disable_only
</item>
<item name="android:textColorHint">@color/m3_dynamic_dark_hint_foreground</item> <item name="android:textColorHint">@color/m3_dynamic_dark_hint_foreground</item>
<item name="android:textColorHintInverse">@color/m3_dynamic_hint_foreground</item> <item name="android:textColorHintInverse">@color/m3_dynamic_hint_foreground</item>
<item name="android:textColorAlertDialogListItem">@color/m3_dynamic_dark_default_color_primary_text</item> <item name="android:textColorAlertDialogListItem">
@color/m3_dynamic_dark_default_color_primary_text
</item>
</style> </style>
<style name="Theme.Widget" parent="@android:style/Theme.DeviceDefault.DayNight"> <style name="Theme.Widget" parent="@android:style/Theme.DeviceDefault.DayNight">

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="Widget.Auxio.Button.AppWidget.V31" parent="Widget.AppCompat.Button.Borderless"> <style name="Widget.Auxio.Button.AppWidget.V31" parent="Widget.AppCompat.Button.Borderless">
<item name="android:background">@drawable/ui_unbounded_ripple</item> <item name="android:background">@drawable/ui_unbounded_ripple</item>
</style> </style>

View file

@ -15,24 +15,35 @@
<item name="colorPrimary">@color/m3_sys_color_dynamic_light_primary</item> <item name="colorPrimary">@color/m3_sys_color_dynamic_light_primary</item>
<item name="colorOnPrimary">@color/m3_sys_color_dynamic_light_on_primary</item> <item name="colorOnPrimary">@color/m3_sys_color_dynamic_light_on_primary</item>
<item name="colorPrimaryInverse">@color/m3_sys_color_dynamic_light_inverse_primary</item> <item name="colorPrimaryInverse">@color/m3_sys_color_dynamic_light_inverse_primary</item>
<item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_light_primary_container</item> <item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_light_primary_container
<item name="colorOnPrimaryContainer">@color/m3_sys_color_dynamic_light_on_primary_container</item> </item>
<item name="colorOnPrimaryContainer">
@color/m3_sys_color_dynamic_light_on_primary_container
</item>
<item name="colorSecondary">@color/m3_sys_color_dynamic_light_secondary</item> <item name="colorSecondary">@color/m3_sys_color_dynamic_light_secondary</item>
<item name="colorOnSecondary">@color/m3_sys_color_dynamic_light_on_secondary</item> <item name="colorOnSecondary">@color/m3_sys_color_dynamic_light_on_secondary</item>
<item name="colorSecondaryContainer">@color/m3_sys_color_dynamic_light_secondary_container</item> <item name="colorSecondaryContainer">@color/m3_sys_color_dynamic_light_secondary_container
<item name="colorOnSecondaryContainer">@color/m3_sys_color_dynamic_light_on_secondary_container</item> </item>
<item name="colorOnSecondaryContainer">
@color/m3_sys_color_dynamic_light_on_secondary_container
</item>
<item name="colorTertiary">@color/m3_sys_color_dynamic_light_tertiary</item> <item name="colorTertiary">@color/m3_sys_color_dynamic_light_tertiary</item>
<item name="colorOnTertiary">@color/m3_sys_color_dynamic_light_on_tertiary</item> <item name="colorOnTertiary">@color/m3_sys_color_dynamic_light_on_tertiary</item>
<item name="colorTertiaryContainer">@color/m3_sys_color_dynamic_light_tertiary_container</item> <item name="colorTertiaryContainer">@color/m3_sys_color_dynamic_light_tertiary_container
<item name="colorOnTertiaryContainer">@color/m3_sys_color_dynamic_light_on_tertiary_container</item> </item>
<item name="colorOnTertiaryContainer">
@color/m3_sys_color_dynamic_light_on_tertiary_container
</item>
<item name="android:colorBackground">@color/m3_sys_color_dynamic_light_background</item> <item name="android:colorBackground">@color/m3_sys_color_dynamic_light_background</item>
<item name="colorOnBackground">@color/m3_sys_color_dynamic_light_on_background</item> <item name="colorOnBackground">@color/m3_sys_color_dynamic_light_on_background</item>
<item name="colorSurface">@color/m3_sys_color_dynamic_light_surface</item> <item name="colorSurface">@color/m3_sys_color_dynamic_light_surface</item>
<item name="colorOnSurface">@color/m3_sys_color_dynamic_light_on_surface</item> <item name="colorOnSurface">@color/m3_sys_color_dynamic_light_on_surface</item>
<item name="colorSurfaceVariant">@color/m3_sys_color_dynamic_light_surface_variant</item> <item name="colorSurfaceVariant">@color/m3_sys_color_dynamic_light_surface_variant</item>
<item name="colorOnSurfaceVariant">@color/m3_sys_color_dynamic_light_on_surface_variant</item> <item name="colorOnSurfaceVariant">@color/m3_sys_color_dynamic_light_on_surface_variant
</item>
<item name="colorSurfaceInverse">@color/m3_sys_color_dynamic_light_inverse_surface</item> <item name="colorSurfaceInverse">@color/m3_sys_color_dynamic_light_inverse_surface</item>
<item name="colorOnSurfaceInverse">@color/m3_sys_color_dynamic_light_inverse_on_surface</item> <item name="colorOnSurfaceInverse">@color/m3_sys_color_dynamic_light_inverse_on_surface
</item>
<item name="colorOutline">@color/m3_sys_color_dynamic_light_outline</item> <item name="colorOutline">@color/m3_sys_color_dynamic_light_outline</item>
<item name="colorError">@color/m3_sys_color_light_error</item> <item name="colorError">@color/m3_sys_color_light_error</item>
<item name="colorOnError">@color/m3_sys_color_light_on_error</item> <item name="colorOnError">@color/m3_sys_color_light_on_error</item>
@ -41,16 +52,29 @@
<!-- Default Framework Text Colors. --> <!-- Default Framework Text Colors. -->
<item name="android:textColorPrimary">@color/m3_dynamic_default_color_primary_text</item> <item name="android:textColorPrimary">@color/m3_dynamic_default_color_primary_text</item>
<item name="android:textColorPrimaryInverse">@color/m3_dynamic_dark_default_color_primary_text</item> <item name="android:textColorPrimaryInverse">
<item name="android:textColorSecondary">@color/m3_dynamic_default_color_secondary_text</item> @color/m3_dynamic_dark_default_color_primary_text
<item name="android:textColorSecondaryInverse">@color/m3_dynamic_dark_default_color_secondary_text</item> </item>
<item name="android:textColorSecondary">@color/m3_dynamic_default_color_secondary_text
</item>
<item name="android:textColorSecondaryInverse">
@color/m3_dynamic_dark_default_color_secondary_text
</item>
<item name="android:textColorTertiary">@color/m3_dynamic_default_color_secondary_text</item> <item name="android:textColorTertiary">@color/m3_dynamic_default_color_secondary_text</item>
<item name="android:textColorTertiaryInverse">@color/m3_dynamic_dark_default_color_secondary_text</item> <item name="android:textColorTertiaryInverse">
<item name="android:textColorPrimaryDisableOnly">@color/m3_dynamic_primary_text_disable_only</item> @color/m3_dynamic_dark_default_color_secondary_text
<item name="android:textColorPrimaryInverseDisableOnly">@color/m3_dynamic_dark_primary_text_disable_only</item> </item>
<item name="android:textColorPrimaryDisableOnly">
@color/m3_dynamic_primary_text_disable_only
</item>
<item name="android:textColorPrimaryInverseDisableOnly">
@color/m3_dynamic_dark_primary_text_disable_only
</item>
<item name="android:textColorHint">@color/m3_dynamic_hint_foreground</item> <item name="android:textColorHint">@color/m3_dynamic_hint_foreground</item>
<item name="android:textColorHintInverse">@color/m3_dynamic_dark_hint_foreground</item> <item name="android:textColorHintInverse">@color/m3_dynamic_dark_hint_foreground</item>
<item name="android:textColorAlertDialogListItem">@color/m3_dynamic_default_color_primary_text</item> <item name="android:textColorAlertDialogListItem">
@color/m3_dynamic_default_color_primary_text
</item>
</style> </style>
<style name="Theme.Widget" parent="@android:style/Theme.DeviceDefault.DayNight"> <style name="Theme.Widget" parent="@android:style/Theme.DeviceDefault.DayNight">

View file

@ -5,7 +5,7 @@
<dimen name="spacing_medium">16dp</dimen> <dimen name="spacing_medium">16dp</dimen>
<dimen name="spacing_mid_large">24dp</dimen> <dimen name="spacing_mid_large">24dp</dimen>
<dimen name="spacing_large">32dp</dimen> <dimen name="spacing_large">32dp</dimen>
<dimen name="spacing_mid_huge">48dp</dimen> <dimen name="spacing_huge">48dp</dimen>
<dimen name="spacing_insane">128dp</dimen> <dimen name="spacing_insane">128dp</dimen>
<!-- Size Namespace | Width & Heights for UI elements --> <!-- Size Namespace | Width & Heights for UI elements -->
@ -17,12 +17,13 @@
<dimen name="size_cover_huge_land">128dp</dimen> <dimen name="size_cover_huge_land">128dp</dimen>
<dimen name="size_cover_huge">256dp</dimen> <dimen name="size_cover_huge">256dp</dimen>
<dimen name="size_stroke_large">2dp</dimen> <dimen name="size_stroke_large">1dp</dimen>
<dimen name="size_small_unb_ripple">20dp</dimen> <dimen name="size_small_unb_ripple">20dp</dimen>
<dimen name="size_unb_ripple">24dp</dimen> <dimen name="size_unb_ripple">24dp</dimen>
<dimen name="size_track_number">32dp</dimen> <dimen name="size_track_number">32dp</dimen>
<dimen name="size_play_fab_icon">32dp</dimen>
<!-- Misc --> <!-- Misc -->
<dimen name="elevation_small">2dp</dimen> <dimen name="elevation_small">2dp</dimen>

View file

@ -30,7 +30,7 @@
<!-- Style for dialog buttons --> <!-- Style for dialog buttons -->
<style name="Widget.Auxio.Dialog.Button" parent="Widget.Material3.Button.TextButton.Dialog"> <style name="Widget.Auxio.Dialog.Button" parent="Widget.Material3.Button.TextButton.Dialog">
<item name="android:fontFamily">@font/inter_semibold</item> <item name="android:fontFamily">@font/inter_semibold</item>
<item name="android:textAppearance">@style/TextAppearance.Auxio.LabelMedium</item> <item name="android:textAppearance">@style/TextAppearance.Auxio.LabelLarge</item>
</style> </style>
<!-- Custom button style that eliminates the weird margin that the neutral button has --> <!-- Custom button style that eliminates the weird margin that the neutral button has -->
@ -48,8 +48,7 @@
<!-- Widget TextView that mimics the main Auxio Primary TextView --> <!-- Widget TextView that mimics the main Auxio Primary TextView -->
<style name="Widget.Auxio.TextView.Primary.AppWidget" parent="Widget.Auxio.TextView.AppWidget"> <style name="Widget.Auxio.TextView.Primary.AppWidget" parent="Widget.Auxio.TextView.AppWidget">
<item name="android:textStyle">bold</item> <item name="android:textStyle">bold</item>
<item name="android:textAppearance">@style/TextAppearance.Auxio.TitleMedium <item name="android:textAppearance">@style/TextAppearance.Auxio.TitleMedium</item>
</item>
</style> </style>
<!-- Widget TextView that mimics the main Auxio Secondary TextView --> <!-- Widget TextView that mimics the main Auxio Secondary TextView -->

View file

@ -3,7 +3,9 @@
<!-- Master parent theme --> <!-- Master parent theme -->
<style name="Theme.Auxio" parent="Theme.Material3.DayNight.NoActionBar" /> <style name="Theme.Auxio" parent="Theme.Material3.DayNight.NoActionBar" />
<!-- Template theme that handles edge-to-edge on other styles variants --> <!-- Template theme that handles edge-to-edge on other styles variants -->
<style name="Theme.Auxio.V27" parent="Theme.Auxio" /> <style name="Theme.Auxio.V27" parent="Theme.Auxio">
<item name="android:statusBarColor">@android:color/black</item>
</style>
<!-- Android 12 configuration --> <!-- Android 12 configuration -->
<style name="Theme.Auxio.V31" parent="Theme.Auxio.V27"> <style name="Theme.Auxio.V31" parent="Theme.Auxio.V27">
<!-- Make sure to apply more accent-friendly values on older versions --> <!-- Make sure to apply more accent-friendly values on older versions -->
@ -26,6 +28,7 @@
<!-- Values --> <!-- Values -->
<item name="colorAccent">?attr/colorSecondary</item> <item name="colorAccent">?attr/colorSecondary</item>
<item name="colorOutline">@color/overlay_stroke</item> <item name="colorOutline">@color/overlay_stroke</item>
<item name="indicatorColor">?attr/colorPrimary</item>
<item name="colorControlNormal">?attr/colorOnSurfaceVariant</item> <item name="colorControlNormal">?attr/colorOnSurfaceVariant</item>
<item name="colorControlActivated">?attr/colorSecondary</item> <item name="colorControlActivated">?attr/colorSecondary</item>
@ -56,6 +59,14 @@
<item name="textAppearanceBodyLarge">@style/TextAppearance.Auxio.BodyLarge</item> <item name="textAppearanceBodyLarge">@style/TextAppearance.Auxio.BodyLarge</item>
<item name="textAppearanceBodyMedium">@style/TextAppearance.Auxio.BodyMedium</item> <item name="textAppearanceBodyMedium">@style/TextAppearance.Auxio.BodyMedium</item>
<item name="textAppearanceBodySmall">@style/TextAppearance.Auxio.BodySmall</item> <item name="textAppearanceBodySmall">@style/TextAppearance.Auxio.BodySmall</item>
<!-- Work around other views actually using text appearances I modified -->
<item name="android:textAppearanceListItem">@style/TextAppearance.Material3.TitleMedium</item>
<item name="android:textAppearanceListItemSmall">@style/TextAppearance.Material3.TitleMedium</item>
<item name="android:textAppearanceListItemSecondary">@style/TextAppearance.Material3.BodyMedium</item>
<item name="textAppearanceListItem">@style/TextAppearance.Material3.TitleMedium</item>
<item name="textAppearanceListItemSmall">@style/TextAppearance.Material3.TitleMedium</item>
<item name="textAppearanceListItemSecondary">@style/TextAppearance.Material3.BodyMedium</item>
</style> </style>
<!-- The basic black theme derived in all black accents. --> <!-- The basic black theme derived in all black accents. -->

View file

@ -19,11 +19,6 @@
<item name="navigationIcon">@drawable/ic_down</item> <item name="navigationIcon">@drawable/ic_down</item>
</style> </style>
<style name="Widget.Auxio.ProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal">
<item name="android:progressTint">?attr/colorPrimary</item>
<item name="android:progressBackgroundTint">?attr/colorSecondary</item>
</style>
<style name="Widget.Auxio.SeekBar" parent="Widget.AppCompat.SeekBar"> <style name="Widget.Auxio.SeekBar" parent="Widget.AppCompat.SeekBar">
<item name="android:progressTint">?attr/colorPrimary</item> <item name="android:progressTint">?attr/colorPrimary</item>
<item name="android:progressBackgroundTint">?attr/colorSecondary</item> <item name="android:progressBackgroundTint">?attr/colorSecondary</item>
@ -106,6 +101,7 @@
<item name="android:ellipsize">end</item> <item name="android:ellipsize">end</item>
<item name="android:maxLines">1</item> <item name="android:maxLines">1</item>
<item name="android:fontFamily">@font/inter_semibold</item> <item name="android:fontFamily">@font/inter_semibold</item>
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:textAppearance">@style/TextAppearance.Auxio.LabelMedium</item> <item name="android:textAppearance">@style/TextAppearance.Auxio.LabelMedium</item>
</style> </style>
@ -156,19 +152,16 @@
<style name="Widget.Auxio.Button.Primary" parent="Widget.Material3.Button"> <style name="Widget.Auxio.Button.Primary" parent="Widget.Material3.Button">
<item name="fontFamily">@font/inter_semibold</item> <item name="fontFamily">@font/inter_semibold</item>
<item name="android:textAppearance">@style/TextAppearance.Auxio.LabelLarge</item>
</style> </style>
<style name="Widget.Auxio.Button.Secondary" parent="Widget.Material3.Button.OutlinedButton"> <style name="Widget.Auxio.Button.Secondary" parent="Widget.Material3.Button.OutlinedButton">
<item name="fontFamily">@font/inter_semibold</item> <item name="fontFamily">@font/inter_semibold</item>
<item name="android:textAppearance">@style/TextAppearance.Auxio.LabelLarge</item>
</style> </style>
<style name="Widget.Auxio.Button.Circular" parent=""> <style name="Widget.Auxio.FloatingActionButton.MidLarge" parent="Widget.Material3.FloatingActionButton.Primary">
<item name="android:minHeight">@dimen/size_btn_large</item> <item name="maxImageSize">@dimen/size_play_fab_icon</item>
<item name="android:minWidth">@dimen/size_btn_large</item> <item name="fabCustomSize">@dimen/size_btn_large</item>
<item name="android:background">@drawable/ui_play_pause_circle</item>
<item name="android:contentDescription">@string/desc_play_pause</item>
<item name="android:tint">?attr/colorSurface</item>
<item name="android:scaleType">fitCenter</item>
<item name="android:padding">@dimen/spacing_medium</item>
</style> </style>
</resources> </resources>

View file

@ -2,12 +2,12 @@
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/info_widget_desc" android:description="@string/info_widget_desc"
android:initialLayout="@layout/widget_medium" android:initialLayout="@layout/widget_medium"
android:minResizeWidth="@dimen/widget_width_min"
android:minResizeHeight="@dimen/widget_height_min"
android:minWidth="@dimen/widget_width_def" android:minWidth="@dimen/widget_width_def"
android:minHeight="@dimen/widget_height_def" android:minHeight="@dimen/widget_height_def"
android:previewLayout="@layout/widget_medium" android:minResizeWidth="@dimen/widget_width_min"
android:minResizeHeight="@dimen/widget_height_min"
android:previewImage="@drawable/ui_widget_preview" android:previewImage="@drawable/ui_widget_preview"
android:previewLayout="@layout/widget_medium"
android:resizeMode="horizontal|vertical" android:resizeMode="horizontal|vertical"
android:targetCellWidth="3" android:targetCellWidth="3"
android:targetCellHeight="3" android:targetCellHeight="3"

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"> <PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory <PreferenceCategory
app:layout="@layout/item_header"
app:isPreferenceVisible="@bool/enable_theme_settings" app:isPreferenceVisible="@bool/enable_theme_settings"
app:layout="@layout/item_header"
app:title="@string/set_ui"> app:title="@string/set_ui">
<org.oxycblt.auxio.settings.pref.IntListPreference <org.oxycblt.auxio.settings.pref.IntListPreference
@ -35,10 +35,10 @@
app:title="@string/set_display"> app:title="@string/set_display">
<Preference <Preference
app:iconSpaceReserved="false"
app:key="KEY_LIB_TABS" app:key="KEY_LIB_TABS"
app:title="@string/set_lib_tabs"
app:summary="@string/set_lib_tabs_desc" app:summary="@string/set_lib_tabs_desc"
app:iconSpaceReserved="false" /> app:title="@string/set_lib_tabs" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
app:defaultValue="true" app:defaultValue="true"

View file

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget_medium" android:initialLayout="@layout/widget_medium"
android:minResizeWidth="@dimen/widget_width_min"
android:minResizeHeight="@dimen/widget_height_min"
android:minWidth="@dimen/widget_width_def" android:minWidth="@dimen/widget_width_def"
android:minHeight="@dimen/widget_height_def" android:minHeight="@dimen/widget_height_def"
android:minResizeWidth="@dimen/widget_width_min"
android:minResizeHeight="@dimen/widget_height_min"
android:previewImage="@drawable/ui_widget_preview" android:previewImage="@drawable/ui_widget_preview"
android:resizeMode="horizontal|vertical" android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="0" android:updatePeriodMillis="0"