ui: rework cover style

Rework the style of all album covers in the app to be more in line with
the new track number style.

This is mostly comprised of adding a new background to all cover views
and rescaling error icons to be smaller than they would normally be.
This also includes a change in the cover/track background color from
colorSurfaceVariant to colorOnSurfaceInverse, which seems to provide
the best visibility in all cases.

These changes also apply to the track number views.
This commit is contained in:
OxygenCobalt 2022-04-02 16:52:02 -06:00
parent e387e72b2c
commit 74f5962844
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
55 changed files with 254 additions and 350 deletions

View file

@ -53,12 +53,15 @@ I primarily built Auxio for myself, but you can use it too, I guess.
- Completely private and offline
- No rounded album covers (Unless you want them. Then you can.)
## To possibly come in the future:
## To come in the future:
- Automatic music rescanning
- Even better metadata support
- Playlists
- Liked songs
- More notification actions
- And other things, probably
- Artist Images
- More customization options
- Other things, probably
## Permissions
@ -69,7 +72,7 @@ I primarily built Auxio for myself, but you can use it too, I guess.
Auxio relies on a custom version of ExoPlayer that enables some extra features. So, the build process is as follows:
1. `cd` into the project directory
1. `cd` into the project directory.
2. Run `python3 prebuild.py`, which installs ExoPlayer and it's extensions.
- The pre-build process only works with \*nix systems. On windows, this process must be done manually.
3. Build the project normally in Android Studio.

View file

@ -1,8 +1,9 @@
apply plugin: "com.android.application"
apply plugin: "kotlin-android"
apply plugin: "kotlin-kapt"
apply plugin: "androidx.navigation.safeargs.kotlin"
apply plugin: "com.diffplug.spotless"
plugins {
id "com.android.application"
id "kotlin-android"
id "androidx.navigation.safeargs.kotlin"
id "com.diffplug.spotless"
}
android {
compileSdkVersion 32

View file

@ -41,6 +41,7 @@
android:windowSoftInputMode="adjustPan">
<intent-filter>
<!-- Expose that we are a music player. -->
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.MUSIC_PLAYER" />
@ -50,6 +51,11 @@
</intent-filter>
<intent-filter>
<!--
Signal that we can take audio of *any* format, file or content. This is important,
as some apps use this to determine if Auxio is eligible to be a default music
player.
-->
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
@ -80,6 +86,7 @@
</intent-filter>
</receiver>
<!-- Auxio's one and only AppWidget -->
<receiver
android:name=".widgets.WidgetProvider"
android:exported="false"

View file

@ -1,80 +0,0 @@
/*
* Copyright (c) 2021 Auxio Project
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.coil
import android.content.Context
import android.graphics.Bitmap
import android.widget.ImageView
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.core.graphics.drawable.toBitmap
import coil.dispose
import coil.imageLoader
import coil.load
import coil.request.ImageRequest
import coil.size.Size
import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.Album
import org.oxycblt.auxio.music.Artist
import org.oxycblt.auxio.music.Genre
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Song
// --- BINDING ADAPTERS ---
/** Bind the album cover for a [song]. */
fun ImageView.bindAlbumCover(song: Song?) =
load(song, R.drawable.ic_album, R.string.desc_album_cover)
/** Bind the album cover for an [album]. */
fun ImageView.bindAlbumCover(album: Album?) =
load(album, R.drawable.ic_album, R.string.desc_album_cover)
/** Bind the image for an [artist] */
fun ImageView.bindArtistImage(artist: Artist?) =
load(artist, R.drawable.ic_artist, R.string.desc_artist_image)
/** Bind the image for a [genre] */
fun ImageView.bindGenreImage(genre: Genre?) =
load(genre, R.drawable.ic_genre, R.string.desc_genre_image)
fun <T : Music> ImageView.load(music: T?, @DrawableRes error: Int, @StringRes desc: Int) {
contentDescription = context.getString(desc, music?.resolvedName)
dispose()
scaleType = ImageView.ScaleType.FIT_CENTER
load(music) {
error(error)
transformations(SquareFrameTransform.INSTANCE)
}
}
// --- OTHER FUNCTIONS ---
/**
* Get a bitmap for a [song]. [onDone] will be called with the loaded bitmap, or null if loading
* failed/shouldn't occur. **This not meant for UIs, instead use the Binding Adapters.**
*/
fun loadBitmap(context: Context, song: Song, onDone: (Bitmap?) -> Unit) {
context.imageLoader.enqueue(
ImageRequest.Builder(context)
.data(song.album)
.size(Size.ORIGINAL)
.transformations(SquareFrameTransform())
.target(onError = { onDone(null) }, onSuccess = { onDone(it.toBitmap()) })
.build())
}

View file

@ -1,64 +0,0 @@
/*
* Copyright (c) 2022 Auxio Project
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.coil
import android.content.Context
import android.util.AttributeSet
import androidx.annotation.AttrRes
import androidx.appcompat.widget.AppCompatImageView
import com.google.android.material.shape.MaterialShapeDrawable
import org.oxycblt.auxio.R
import org.oxycblt.auxio.settings.SettingsManager
import org.oxycblt.auxio.util.getColorSafe
import org.oxycblt.auxio.util.stateList
/**
* An [AppCompatImageView] that applies the specified cornerRadius attribute if the user has enabled
* the "Round album covers" option. We don't round album covers by default as it desecrates album
* artwork, but if the user desires it we do have an option to enable it.
*/
class RoundableImageView
@JvmOverloads
constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) :
AppCompatImageView(context, attrs, defStyleAttr) {
init {
val styledAttrs = context.obtainStyledAttributes(attrs, R.styleable.RoundableImageView)
val cornerRadius = styledAttrs.getDimension(R.styleable.RoundableImageView_cornerRadius, 0f)
styledAttrs.recycle()
background =
MaterialShapeDrawable().apply {
setCornerSize(cornerRadius)
fillColor = context.getColorSafe(android.R.color.transparent).stateList
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
// Use clipToOutline and a background drawable to crop images. While Coil's transformation
// could theoretically be used to round corners, the corner radius is dependent on the
// dimensions of the image, which will result in inconsistent corners across different
// album covers unless we resize all covers to be the same size. clipToOutline is both
// cheaper and more elegant.
if (!isInEditMode) {
val settingsManager = SettingsManager.getInstance()
clipToOutline = settingsManager.roundCovers
}
}
}

View file

@ -0,0 +1,168 @@
/*
* Copyright (c) 2022 Auxio Project
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.coil
import android.content.Context
import android.graphics.Bitmap
import android.graphics.Matrix
import android.graphics.RectF
import android.util.AttributeSet
import android.widget.ImageView
import androidx.annotation.AttrRes
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.appcompat.widget.AppCompatImageView
import androidx.core.graphics.drawable.toBitmap
import coil.dispose
import coil.imageLoader
import coil.load
import coil.request.ImageRequest
import coil.size.Size
import com.google.android.material.shape.MaterialShapeDrawable
import kotlin.math.min
import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.Album
import org.oxycblt.auxio.music.Artist
import org.oxycblt.auxio.music.Genre
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.settings.SettingsManager
import org.oxycblt.auxio.util.getColorStateListSafe
/** An [AppCompatImageView] that applies many of the stylistic choices thjat Auxio uses wi */
class StyledImageView
@JvmOverloads
constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) :
AppCompatImageView(context, attrs, defStyleAttr) {
private val centerMatrix = Matrix()
private val matrixSrc = RectF()
private val matrixDst = RectF()
private var cornerRadius = 0f
init {
val styledAttrs = context.obtainStyledAttributes(attrs, R.styleable.StyledImageView)
cornerRadius = styledAttrs.getDimension(R.styleable.StyledImageView_cornerRadius, 0f)
styledAttrs.recycle()
clipToOutline = true
background =
MaterialShapeDrawable().apply {
fillColor = context.getColorStateListSafe(R.color.sel_cover_bg)
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
// Use clipToOutline and a background drawable to crop images. While Coil's transformation
// could theoretically be used to round corners, the corner radius is dependent on the
// dimensions of the image, which will result in inconsistent corners across different
// album covers unless we resize all covers to be the same size. clipToOutline is both
// cheaper and more elegant.
if (!isInEditMode) {
val settingsManager = SettingsManager.getInstance()
if (settingsManager.roundCovers) {
(background as MaterialShapeDrawable).setCornerSize(cornerRadius)
}
}
}
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
imageMatrix =
centerMatrix.apply {
reset()
drawable?.let { drawable ->
// Android is too good to allow us to set a fixed image size, so we instead need
// to define a matrix to scale an image directly.
// First scale the icon up to the desired size.
val iconSize = min(measuredWidth, measuredHeight) / 2f
matrixSrc.set(
0f,
0f,
drawable.intrinsicWidth.toFloat(),
drawable.intrinsicHeight.toFloat())
matrixDst.set(0f, 0f, iconSize, iconSize)
centerMatrix.setRectToRect(matrixSrc, matrixDst, Matrix.ScaleToFit.CENTER)
// Then actually center it into the icon, which the previous call does not
// actually do.
centerMatrix.postTranslate(
(measuredWidth - iconSize) / 2f, (measuredHeight - iconSize) / 2f)
}
}
}
}
// TODO: Borg the extension methods into the view, move the loadBitmap call to the service
// eventually
/** Bind the album cover for a [song]. */
fun StyledImageView.bindAlbumCover(song: Song?) =
load(song, R.drawable.ic_song, R.string.desc_album_cover)
/** Bind the album cover for an [album]. */
fun StyledImageView.bindAlbumCover(album: Album?) =
load(album, R.drawable.ic_album, R.string.desc_album_cover)
/** Bind the image for an [artist] */
fun StyledImageView.bindArtistImage(artist: Artist?) =
load(artist, R.drawable.ic_artist, R.string.desc_artist_image)
/** Bind the image for a [genre] */
fun StyledImageView.bindGenreImage(genre: Genre?) =
load(genre, R.drawable.ic_genre, R.string.desc_genre_image)
fun <T : Music> StyledImageView.load(music: T?, @DrawableRes error: Int, @StringRes desc: Int) {
contentDescription = context.getString(desc, music?.resolvedName)
dispose()
scaleType = ImageView.ScaleType.FIT_CENTER
load(music) {
error(error)
transformations(SquareFrameTransform.INSTANCE)
listener(
onSuccess = { _, _ ->
// Using the matrix scale type will shrink the cover images, so set it back to
// the default scale type.
scaleType = ImageView.ScaleType.CENTER
},
onError = { _, _ ->
// Error icons need to be scaled correctly, so set it to the custom matrix
// that the ImageView applies
scaleType = ImageView.ScaleType.MATRIX
})
}
}
// --- OTHER FUNCTIONS ---
/**
* Get a bitmap for a [song]. [onDone] will be called with the loaded bitmap, or null if loading
* failed/shouldn't occur. **This not meant for UIs, instead use the Binding Adapters.**
*/
fun loadBitmap(context: Context, song: Song, onDone: (Bitmap?) -> Unit) {
context.imageLoader.enqueue(
ImageRequest.Builder(context)
.data(song.album)
.size(Size.ORIGINAL)
.transformations(SquareFrameTransform())
.target(onError = { onDone(null) }, onSuccess = { onDone(it.toBitmap()) })
.build())
}

View file

@ -158,7 +158,7 @@ class DetailViewModel : ViewModel() {
private fun refreshAlbumData(album: Album) {
logD("Refreshing album data")
val data = mutableListOf<Item>(album)
data.add(SortHeader(id = -2, R.string.lbl_albums))
data.add(SortHeader(id = -2, R.string.lbl_songs))
data.addAll(albumSort.album(album))
mAlbumData.value = data
}

View file

@ -19,7 +19,6 @@ package org.oxycblt.auxio.detail.recycler
import android.content.Context
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.R
@ -170,16 +169,18 @@ private class AlbumSongViewHolder private constructor(private val binding: ItemA
binding.songTrack.apply {
textSafe = context.getString(R.string.fmt_number, item.track)
isInvisible = false
contentDescription = context.getString(R.string.desc_track_number, item.track)
}
binding.songTrackPlaceholder.isVisible = false
binding.songTrackBg.imageAlpha = 0
} else {
binding.songTrack.apply {
textSafe = ""
isInvisible = true
contentDescription = context.getString(R.string.def_track)
}
binding.songTrackPlaceholder.isVisible = true
binding.songTrackBg.imageAlpha = 255
}
binding.songName.textSafe = item.resolvedName
@ -197,7 +198,6 @@ private class AlbumSongViewHolder private constructor(private val binding: ItemA
override fun setHighlighted(isHighlighted: Boolean) {
binding.songName.isActivated = isHighlighted
binding.songTrack.isActivated = isHighlighted
binding.songTrackPlaceholder.isActivated = isHighlighted
binding.songTrackBg.isActivated = isHighlighted
}

View file

@ -29,7 +29,6 @@ import android.view.ViewGroup
import android.view.WindowInsets
import android.widget.FrameLayout
import androidx.annotation.AttrRes
import androidx.core.math.MathUtils
import androidx.core.view.isInvisible
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
@ -38,6 +37,7 @@ import kotlin.math.abs
import org.oxycblt.auxio.R
import org.oxycblt.auxio.ui.EdgeRecyclerView
import org.oxycblt.auxio.util.canScroll
import org.oxycblt.auxio.util.clamp
import org.oxycblt.auxio.util.getDimenOffsetSafe
import org.oxycblt.auxio.util.getDimenSizeSafe
import org.oxycblt.auxio.util.getDrawableSafe
@ -266,8 +266,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr
val thumbAnchorY = thumbView.paddingTop
val popupTop =
MathUtils.clamp(
thumbTop + thumbAnchorY - popupAnchorY,
(thumbTop + thumbAnchorY - popupAnchorY).clamp(
thumbPadding.top + popupLayoutParams.topMargin,
height - thumbPadding.bottom - popupLayoutParams.bottomMargin - popupHeight)
@ -365,7 +364,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr
}
private fun scrollToThumbOffset(thumbOffset: Int) {
val clampedThumbOffset = MathUtils.clamp(thumbOffset, 0, thumbOffsetRange)
val clampedThumbOffset = thumbOffset.clamp(0, thumbOffsetRange)
val scrollOffset =
(scrollOffsetRange.toLong() * clampedThumbOffset / thumbOffsetRange).toInt() -

View file

@ -19,6 +19,8 @@ package org.oxycblt.auxio.util
import android.content.Context
import android.content.res.ColorStateList
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
import android.graphics.Insets
import android.graphics.Rect
import android.graphics.drawable.Drawable
@ -28,6 +30,7 @@ import android.view.WindowInsets
import android.widget.TextView
import androidx.annotation.ColorRes
import androidx.core.graphics.drawable.DrawableCompat
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.viewbinding.ViewBinding
@ -137,6 +140,16 @@ fun RecyclerView.canScroll(): Boolean = computeVerticalScrollRange() > height
val @receiver:ColorRes Int.stateList
get() = ColorStateList.valueOf(this)
/** Require the fragment is attached to an activity. */
fun Fragment.requireAttached() = check(!isDetached) { "Fragment is detached from activity" }
/**
* Shortcut for querying all items in a database and running [block] with the cursor returned. Will
* not run if the cursor is null.
*/
fun <R> SQLiteDatabase.queryAll(tableName: String, block: (Cursor) -> R) =
query(tableName, null, null, null, null, null, null)?.use(block)
/**
* Resolve system bar insets in a version-aware manner. This can be used to apply padding to a view
* that properly follows all the frustrating changes that were made between 8-11.

View file

@ -17,20 +17,10 @@
package org.oxycblt.auxio.util
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
import android.os.Looper
import androidx.core.math.MathUtils
import androidx.fragment.app.Fragment
import org.oxycblt.auxio.BuildConfig
/**
* Shortcut for querying all items in a database and running [block] with the cursor returned. Will
* not run if the cursor is null.
*/
fun <R> SQLiteDatabase.queryAll(tableName: String, block: (Cursor) -> R) =
query(tableName, null, null, null, null, null, null)?.use(block)
/** Assert that we are on a background thread. */
fun assertBackgroundThread() {
check(Looper.myLooper() != Looper.getMainLooper()) {
@ -50,11 +40,4 @@ fun <T> unlikelyToBeNull(value: T?): T {
}
}
/** Require the fragment is attached to an activity. */
fun Fragment.requireAttached() = check(!isDetached) { "Fragment is detached from activity" }
fun Int.clamp(min: Int, max: Int): Int = MathUtils.clamp(this, min, max)
fun Long.clamp(min: Long, max: Long): Long = MathUtils.clamp(this, min, max)
fun Float.clamp(min: Float, max: Float): Float = MathUtils.clamp(this, min, max)

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.64" android:color="?attr/colorPrimaryContainer"
<item android:color="?attr/colorPrimaryContainer"
android:state_activated="true" />
<item android:alpha="0.32" android:color="?attr/colorSurfaceVariant" />
<item android:color="?attr/colorOnSurfaceInverse" />
</selector>

View file

@ -2,5 +2,5 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorOnPrimaryContainer"
android:state_activated="true" />
<item android:color="?attr/colorOnSurfaceVariant" />
<item android:color="?attr/colorSurfaceInverse" />
</selector>

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorPrimary"
android:tint="@color/sel_on_cover_bg"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorPrimary"
android:tint="@color/sel_on_cover_bg"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorPrimary"
android:tint="@color/sel_on_cover_bg"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -2,7 +2,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorPrimary"
android:tint="@color/sel_on_cover_bg"
android:viewportWidth="24"
android:viewportHeight="24">
<path

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/sel_track_bg" />
</shape>

View file

@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.Huge"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -2,7 +2,6 @@
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:id="@+id/playback_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -15,7 +14,7 @@
app:title="@string/lbl_playback"
tools:subtitle="@string/lbl_all_songs" />
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full"
android:layout_marginStart="@dimen/spacing_medium"
@ -95,7 +94,6 @@
app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView
android:id="@+id/playback_position"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
@ -107,7 +105,6 @@
tools:text="11:38" />
<TextView
android:id="@+id/playback_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small_inv"

View file

@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.Large"
app:layout_constraintStart_toStartOf="parent"

View file

@ -2,7 +2,6 @@
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:id="@+id/playback_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -15,7 +14,7 @@
app:title="@string/lbl_playback"
tools:subtitle="@string/lbl_all_songs" />
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full"
android:layout_margin="@dimen/spacing_mid_large"
@ -93,7 +92,6 @@
app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView
android:id="@+id/playback_position"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
@ -105,7 +103,6 @@
tools:text="11:38" />
<TextView
android:id="@+id/playback_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small_inv"

View file

@ -3,7 +3,6 @@
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:id="@+id/playback_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -16,7 +15,7 @@
app:title="@string/lbl_playback"
tools:subtitle="@string/lbl_all_songs" />
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full"
android:layout_margin="@dimen/spacing_large"
@ -82,7 +81,6 @@
app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView
android:id="@+id/playback_position"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
@ -94,7 +92,6 @@
tools:text="11:38" />
<TextView
android:id="@+id/playback_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small_inv"

View file

@ -7,7 +7,7 @@
android:layout_height="match_parent"
android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.MidHuge"
app:layout_constraintDimensionRatio="1"

View file

@ -6,7 +6,7 @@
android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Medium"
android:layout_margin="@dimen/spacing_small"

View file

@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.Huge"
app:layout_constraintStart_toStartOf="parent"

View file

@ -3,7 +3,6 @@
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:id="@+id/playback_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -16,7 +15,7 @@
app:title="@string/lbl_playback"
tools:subtitle="@string/lbl_all_songs" />
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full"
android:layout_margin="@dimen/spacing_medium"
@ -95,7 +94,6 @@
app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView
android:id="@+id/playback_position"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
@ -107,7 +105,6 @@
tools:text="11:38" />
<TextView
android:id="@+id/playback_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small_inv"

View file

@ -6,7 +6,7 @@
android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Small"
android:layout_margin="@dimen/spacing_small"

View file

@ -2,7 +2,6 @@
<androidx.recyclerview.widget.RecyclerView 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"
android:id="@+id/accent_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"

View file

@ -9,7 +9,6 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/excluded_recycler"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center"
@ -20,7 +19,6 @@
tools:listitem="@layout/item_excluded_dir" />
<TextView
android:id="@+id/excluded_empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/spacing_medium"

View file

@ -2,7 +2,6 @@
<androidx.recyclerview.widget.RecyclerView 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"
android:id="@+id/tab_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"

View file

@ -8,19 +8,16 @@
tools:context=".settings.AboutFragment">
<org.oxycblt.auxio.ui.EdgeAppBarLayout
android:id="@+id/about_appbar"
style="@style/Widget.Auxio.AppBarLayout"
app:liftOnScroll="true">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/about_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon"
app:title="@string/lbl_about" />
</org.oxycblt.auxio.ui.EdgeAppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/about_contents"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
@ -162,7 +159,6 @@
tools:text="Songs Loaded: 1616" />
<TextView
android:id="@+id/about_author"
style="@style/Widget.Auxio.TextView.Icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View file

@ -2,7 +2,6 @@
<FrameLayout 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"
android:id="@+id/bar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -11,7 +10,6 @@
android:layout_height="match_parent">
<org.oxycblt.auxio.detail.DetailAppBarLayout
android:id="@+id/detail_appbar"
style="@style/Widget.Auxio.AppBarLayout"
app:liftOnScroll="true"
app:liftOnScrollTargetViewId="@id/detail_recycler">

View file

@ -2,23 +2,19 @@
<org.oxycblt.auxio.ui.EdgeCoordinatorLayout 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"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<org.oxycblt.auxio.ui.EdgeAppBarLayout
android:id="@+id/home_appbar"
style="@style/Widget.Auxio.AppBarLayout"
app:liftOnScroll="true">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/home_toolbar"
style="@style/Widget.Auxio.Toolbar"
app:menu="@menu/menu_home"
app:title="@string/info_app_name" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/home_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
@ -38,14 +34,12 @@
tools:layout="@layout/fragment_home_list" />
<org.oxycblt.auxio.home.EdgeFabContainer
android:id="@+id/home_fab_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_anchor="@id/home_pager"
app:layout_anchorGravity="bottom|end">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/home_fab"
style="@style/Widget.Auxio.FloatingActionButton.Adaptive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View file

@ -3,7 +3,6 @@
<org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView 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"
android:id="@+id/home_recycler"
style="@style/Widget.Auxio.RecyclerView.WithAdaptiveFab"
android:layout_width="match_parent"
android:layout_height="match_parent"

View file

@ -6,7 +6,6 @@
android:layout_height="match_parent">
<org.oxycblt.auxio.ui.BottomSheetLayout
android:id="@+id/bottom_sheet_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -33,7 +32,6 @@
</org.oxycblt.auxio.ui.BottomSheetLayout>
<FrameLayout
android:id="@+id/layout_too_small"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorSurface"

View file

@ -6,7 +6,7 @@
android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Small"
android:layout_margin="@dimen/spacing_small"

View file

@ -2,7 +2,6 @@
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:id="@+id/playback_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -15,7 +14,7 @@
app:title="@string/lbl_playback"
tools:subtitle="@string/lbl_all_songs" />
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/playback_cover"
style="@style/Widget.Auxio.Image.Full"
android:layout_margin="@dimen/spacing_medium"
@ -79,7 +78,6 @@
app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView
android:id="@+id/playback_position"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
@ -91,7 +89,6 @@
tools:text="11:38" />
<TextView
android:id="@+id/playback_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small_inv"

View file

@ -2,19 +2,16 @@
<org.oxycblt.auxio.ui.EdgeCoordinatorLayout 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"
android:id="@+id/queue_coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<org.oxycblt.auxio.ui.EdgeAppBarLayout
android:id="@+id/queue_appbar"
style="@style/Widget.Auxio.AppBarLayout"
app:liftOnScroll="true"
app:liftOnScrollTargetViewId="@id/queue_recycler">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/queue_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon.Down"
android:elevation="0dp"
app:navigationIcon="@drawable/ic_down"

View file

@ -6,18 +6,15 @@
android:layout_height="match_parent">
<org.oxycblt.auxio.ui.EdgeAppBarLayout
android:id="@+id/search_appbar"
style="@style/Widget.Auxio.AppBarLayout"
app:liftOnScroll="true"
app:liftOnScrollTargetViewId="@id/search_recycler">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/search_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon"
app:menu="@menu/menu_search">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/search_text_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:endIconContentDescription="@string/desc_clear_search"
@ -28,7 +25,6 @@
app:hintEnabled="false">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/search_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"

View file

@ -2,20 +2,17 @@
<org.oxycblt.auxio.ui.EdgeCoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/settings_coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<org.oxycblt.auxio.ui.EdgeAppBarLayout
android:id="@+id/settings_appbar"
style="@style/Widget.Auxio.AppBarLayout"
android:clickable="true"
android:focusable="true"
app:liftOnScroll="true">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/settings_toolbar"
style="@style/Widget.Auxio.Toolbar.Icon"
app:title="@string/set_title" />

View file

@ -8,7 +8,6 @@
android:theme="@style/ThemeOverlay.Accent">
<ImageButton
android:id="@+id/accent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"

View file

@ -10,30 +10,15 @@
to be alike to other songs. So, add a pastel-ish background to each track number
view. The way we do this is odd, but it's designed this way-->
<org.oxycblt.auxio.coil.RoundableImageView
android:id="@+id/song_track_bg"
<org.oxycblt.auxio.coil.StyledImageView
style="@style/Widget.Auxio.Image.Small"
android:src="@drawable/ui_track_bg"
android:src="@drawable/ic_song"
android:scaleType="matrix"
app:layout_constraintBottom_toBottomOf="@+id/song_track"
app:layout_constraintEnd_toEndOf="@+id/song_track"
app:layout_constraintStart_toStartOf="@+id/song_track"
app:layout_constraintTop_toTopOf="@+id/song_track" />
<ImageView
android:id="@+id/song_track_placeholder"
style="@style/Widget.Auxio.Image.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/def_track"
android:src="@drawable/ic_song"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/song_track"
app:layout_constraintEnd_toEndOf="@+id/song_track"
app:layout_constraintStart_toStartOf="@+id/song_track"
app:layout_constraintTop_toTopOf="@+id/song_track"
app:tint="@color/sel_on_track_bg"
tools:text="1" />
<TextView
android:id="@+id/song_track"
android:layout_width="@dimen/size_btn_small"
@ -46,7 +31,7 @@
app:autoSizeStepGranularity="@dimen/text_size_track_number_step"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge"
android:textColor="@color/sel_on_track_bg"
android:textColor="@color/sel_on_cover_bg"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/song_name"
app:layout_constraintHorizontal_bias="0.5"

View file

@ -5,7 +5,7 @@
xmlns:tools="http://schemas.android.com/tools"
style="@style/Widget.Auxio.ItemLayout">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/artist_image"
style="@style/Widget.Auxio.Image.Medium"
app:layout_constraintBottom_toBottomOf="parent"

View file

@ -7,7 +7,7 @@
android:layout_height="match_parent"
android:padding="@dimen/spacing_medium">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/detail_cover"
style="@style/Widget.Auxio.Image.MidHuge"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -11,7 +11,6 @@
android:padding="0dp">
<TextView
android:id="@+id/excluded_path"
style="@style/Widget.Auxio.TextView.Item.Primary"
android:layout_width="0dp"
android:layout_height="wrap_content"

View file

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
style="@style/Widget.Auxio.ItemLayout">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/parent_image"
style="@style/Widget.Auxio.Image.Medium"
app:layout_constraintBottom_toBottomOf="parent"

View file

@ -6,7 +6,6 @@
android:layout_height="wrap_content">
<View
android:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorPrimary"
@ -22,12 +21,11 @@
app:tint="?attr/colorSurface" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorSurface">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/song_album_cover"
style="@style/Widget.Auxio.Image.Small"
android:layout_margin="@dimen/spacing_medium"

View file

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
style="@style/Widget.Auxio.ItemLayout">
<org.oxycblt.auxio.coil.RoundableImageView
<org.oxycblt.auxio.coil.StyledImageView
android:id="@+id/song_album_cover"
style="@style/Widget.Auxio.Image.Small"
app:layout_constraintBottom_toBottomOf="parent"

View file

@ -7,7 +7,6 @@
android:layout_height="wrap_content">
<TextView
android:id="@+id/header_title"
style="@style/Widget.Auxio.TextView.Header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -17,7 +16,6 @@
tools:text="Songs" />
<ImageButton
android:id="@+id/header_button"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"

View file

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merge 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:layout_height="wrap_content"
tools:layout_width="match_parent"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<com.google.android.material.slider.Slider
android:id="@+id/seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/spacing_medium"
android:paddingStart="@dimen/spacing_small"
android:paddingEnd="@dimen/spacing_small"
android:valueFrom="0"
android:valueTo="1"
app:haloRadius="@dimen/slider_halo_radius"
app:labelBehavior="gone"
app:labelStyle="@style/TextAppearance.Auxio.BodySmall"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:thumbRadius="@dimen/slider_thumb_radius" />
<TextView
android:id="@+id/playback_position"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_medium"
android:layout_marginBottom="@dimen/spacing_small"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:textColor="@color/sel_accented_secondary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="11:38" />
<TextView
android:id="@+id/playback_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_medium"
android:layout_marginBottom="@dimen/spacing_small"
android:textAppearance="@style/TextAppearance.Auxio.BodyMedium"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:text="16:16" />
</merge>

View file

@ -24,7 +24,7 @@
<color name="red_surface_variant">#534341</color>
<color name="red_on_surface_variant">#D8C2BF</color>
<color name="red_surface_inverse">#EDE0DE</color>
<color name="red_on_surface_inverse">#211A19</color>
<color name="red_on_surface_inverse">#362F2E</color>
<color name="pink_primary">#FFB2C0</color>
<color name="pink_on_primary">#670024</color>
@ -48,7 +48,7 @@
<color name="pink_surface_variant">#524345</color>
<color name="pink_on_surface_variant">#D6C1C3</color>
<color name="pink_surface_inverse">#ECE0E0</color>
<color name="pink_on_surface_inverse">#201A1B</color>
<color name="pink_on_surface_inverse">#352F2F</color>
<color name="purple_primary">#FBAAFF</color>
<color name="purple_on_primary">#570068</color>
@ -72,7 +72,7 @@
<color name="purple_surface_variant">#4D444C</color>
<color name="purple_on_surface_variant">#D0C3CC</color>
<color name="purple_surface_inverse">#E9E0E5</color>
<color name="purple_on_surface_inverse">#1E1A1D</color>
<color name="purple_on_surface_inverse">#332F32</color>
<color name="deep_purple_primary">#D4BAFF</color>
<color name="deep_purple_on_primary">#3E008E</color>
@ -96,7 +96,7 @@
<color name="deep_purple_surface_variant">#49454E</color>
<color name="deep_purple_on_surface_variant">#CBC4CF</color>
<color name="deep_purple_surface_inverse">#E6E1E5</color>
<color name="deep_purple_on_surface_inverse">#1D1B1F</color>
<color name="deep_purple_on_surface_inverse">#323033</color>
<color name="indigo_primary">#B9C3FF</color>
<color name="indigo_on_primary">#08218A</color>
@ -120,7 +120,7 @@
<color name="indigo_surface_variant">#46464F</color>
<color name="indigo_on_surface_variant">#C6C5D0</color>
<color name="indigo_surface_inverse">#E4E1E6</color>
<color name="indigo_on_surface_inverse">#1B1B1F</color>
<color name="indigo_on_surface_inverse">#303034</color>
<color name="blue_primary">#9CCAFF</color>
<color name="blue_on_primary">#00325A</color>
@ -144,7 +144,7 @@
<color name="blue_surface_variant">#42474E</color>
<color name="blue_on_surface_variant">#C3C7D0</color>
<color name="blue_surface_inverse">#E2E2E6</color>
<color name="blue_on_surface_inverse">#1B1B1B</color>
<color name="blue_on_surface_inverse">#2F3033</color>
<color name="deep_blue_primary">#62D3FF</color>
<color name="deep_blue_on_primary">#003546</color>
@ -168,7 +168,7 @@
<color name="deep_blue_surface_variant">#40484C</color>
<color name="deep_blue_on_surface_variant">#C0C8CD</color>
<color name="deep_blue_surface_inverse">#E1E2E4</color>
<color name="deep_blue_on_surface_inverse">#191C1E</color>
<color name="deep_blue_on_surface_inverse">#2F3132</color>
<color name="cyan_primary">#44D8F1</color>
<color name="cyan_on_primary">#00363F</color>
@ -192,7 +192,7 @@
<color name="cyan_surface_variant">#3F484A</color>
<color name="cyan_on_surface_variant">#BFC8CA</color>
<color name="cyan_surface_inverse">#E1E3E3</color>
<color name="cyan_on_surface_inverse">#191C1D</color>
<color name="cyan_on_surface_inverse">#2D3132</color>
<color name="teal_primary">#53DBC9</color>
<color name="teal_on_primary">#003730</color>
@ -216,7 +216,7 @@
<color name="teal_surface_variant">#3F4947</color>
<color name="teal_on_surface_variant">#BFC9C6</color>
<color name="teal_surface_inverse">#E0E3E1</color>
<color name="teal_on_surface_inverse">#191C1B</color>
<color name="teal_on_surface_inverse">#2E3130</color>
<color name="green_primary">#78DC77</color>
<color name="green_on_primary">#003907</color>
@ -240,7 +240,7 @@
<color name="green_surface_variant">#424840</color>
<color name="green_on_surface_variant">#C2C8BD</color>
<color name="green_surface_inverse">#E2E3DD</color>
<color name="green_on_surface_inverse">#1A1C19</color>
<color name="green_on_surface_inverse">#2F312D</color>
<color name="deep_green_primary">#9ED75C</color>
<color name="deep_green_on_primary">#1C3700</color>
@ -264,7 +264,7 @@
<color name="deep_green_surface_variant">#44483D</color>
<color name="deep_green_on_surface_variant">#C4C8B9</color>
<color name="deep_green_surface_inverse">#E3E3DB</color>
<color name="deep_green_on_surface_inverse">#1A1C17</color>
<color name="deep_green_on_surface_inverse">#2F312C</color>
<color name="lime_primary">#C1D02C</color>
<color name="lime_on_primary">#2E3400</color>
@ -288,7 +288,7 @@
<color name="lime_surface_variant">#47473B</color>
<color name="lime_on_surface_variant">#C8C7B7</color>
<color name="lime_surface_inverse">#E5E2DA</color>
<color name="lime_on_surface_inverse">#1C1C17</color>
<color name="lime_on_surface_inverse">#31312B</color>
<color name="yellow_primary">#FABD00</color>
<color name="yellow_on_primary">#402D00</color>
@ -312,7 +312,7 @@
<color name="yellow_surface_variant">#4D4639</color>
<color name="yellow_on_surface_variant">#D0C5B4</color>
<color name="yellow_surface_inverse">#E9E1D8</color>
<color name="yellow_on_surface_inverse">#1E1B16</color>
<color name="yellow_on_surface_inverse">#3C2E16</color>
<color name="orange_primary">#FFB86D</color>
<color name="orange_on_primary">#4B2800</color>
@ -336,7 +336,7 @@
<color name="orange_surface_variant">#51453A</color>
<color name="orange_on_surface_variant">#D5C3B5</color>
<color name="orange_surface_inverse">#EBE0D9</color>
<color name="orange_on_surface_inverse">#1F1B17</color>
<color name="orange_on_surface_inverse">#352F2B</color>
<color name="brown_primary">#E7BEB0</color>
<color name="brown_on_primary">#442A20</color>
@ -360,7 +360,7 @@
<color name="brown_surface_variant">#52433E</color>
<color name="brown_on_surface_variant">#D8C2BB</color>
<color name="brown_surface_inverse">#EDE0DC</color>
<color name="brown_on_surface_inverse">#201A18</color>
<color name="brown_on_surface_inverse">#362F2D</color>
<color name="grey_primary">#EEEEEE</color>
<color name="grey_on_primary">#424242</color>
@ -384,7 +384,7 @@
<color name="grey_surface_variant">#484848</color>
<color name="grey_on_surface_variant">#C8C8C8</color>
<color name="grey_surface_inverse">#fafafa</color>
<color name="grey_on_surface_inverse">#191919</color>
<color name="grey_on_surface_inverse">#2D3132</color>
<color name="widget_surface">@color/material_dynamic_secondary20</color>
<color name="widget_surface_inverse">@color/material_dynamic_neutral90</color>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="RoundableImageView">
<declare-styleable name="StyledImageView">
<attr name="cornerRadius" format="dimension" />
</declare-styleable>

View file

@ -21,7 +21,6 @@
<dimen name="size_corners_small">8dp</dimen>
<dimen name="size_corners_large">16dp</dimen>
<dimen name="size_track_number">32dp</dimen>
<dimen name="size_playback_icon">32dp</dimen>
<dimen name="text_size_ext_label_larger">16sp</dimen>

View file

@ -99,11 +99,6 @@
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="Widget.Auxio.TextView.Item.Tertiary" parent="Widget.Auxio.TextView.Item.Base">
<item name="android:textAppearance">@style/TextAppearance.Auxio.BodyMedium</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="Widget.Auxio.TextView.Primary" parent="Widget.Auxio.TextView.Base">
<item name="android:ellipsize">marquee</item>
<item name="android:singleLine">true</item>