Add song count/Styling changes

Add a song count to the album item, along with updating the font once again to differentiate myself from Music Player GO.
This commit is contained in:
OxygenCobalt 2020-08-24 18:59:56 -06:00
parent 1e4f80b779
commit f511cfd161
15 changed files with 78 additions and 43 deletions

View file

@ -3,6 +3,7 @@ package org.oxycblt.auxio
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
class MainActivity : AppCompatActivity() {
@ -10,7 +11,7 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
Log.d(this::class.simpleName, "Activity Created.")
}

View file

@ -11,7 +11,7 @@ import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentLibraryBinding
import org.oxycblt.auxio.library.recycler.AlbumDataAdapter
import org.oxycblt.auxio.recycler.AlbumDataAdapter
class LibraryFragment : Fragment() {

View file

@ -1,21 +0,0 @@
package org.oxycblt.auxio.library.recycler
import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.databinding.AlbumItemBinding
import org.oxycblt.auxio.music.models.Album
class AlbumViewHolder(
private var binding: AlbumItemBinding
) : RecyclerView.ViewHolder(binding.root) {
// Bind the view w/new data
fun bind(album: Album) {
binding.album = album
// Set an album cover [If possible]
album.cover?.let { cover ->
binding.cover.setImageBitmap(cover)
}
binding.executePendingBindings()
}
}

View file

@ -1,9 +1,10 @@
package org.oxycblt.auxio.library.recycler
package org.oxycblt.auxio.recycler
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.databinding.AlbumItemBinding
import org.oxycblt.auxio.music.models.Album
@ -37,3 +38,23 @@ class AlbumDataAdapter : ListAdapter<Album, AlbumViewHolder>(DiffCallback) {
}
}
}
class AlbumViewHolder(
private var binding: AlbumItemBinding
) : RecyclerView.ViewHolder(binding.root) {
// Bind the view w/new data
fun bind(album: Album) {
binding.album = album
if (album.cover == null) {
// If there is no cover, clear the ImageView so that the previous
// View's cover doesnt stick around.
binding.cover.setImageResource(android.R.color.transparent)
} else {
binding.cover.setImageBitmap(album.cover)
}
binding.executePendingBindings()
}
}

View file

@ -0,0 +1,15 @@
package org.oxycblt.auxio.recycler
import android.widget.TextView
import androidx.databinding.BindingAdapter
import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.models.Album
@BindingAdapter("songCount")
fun TextView.numSongsToText(album: Album) {
text = if (album.numSongs < 2) {
context.getString(R.string.label_single_song)
} else {
context.getString(R.string.format_multi_song_count, album.numSongs.toString())
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -13,35 +13,49 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/margin_medium">
android:padding="@dimen/padding_small">
<ImageView
android:id="@+id/cover"
android:layout_width="@dimen/cover_size"
android:layout_height="@dimen/cover_size"
android:layout_width="42dp"
android:layout_height="45dp"
android:contentDescription="@{@string/description_cover_art + album.title}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@tools:sample/backgrounds/scenic" />
tools:src="@tools:sample/backgrounds/scenic"
tools:srcCompat="@tools:sample/backgrounds/scenic" />
<TextView
android:id="@+id/albumNameText"
android:id="@+id/album_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_medium"
android:fontFamily="@font/source_sans_pro"
android:layout_marginStart="@dimen/margin_small"
android:text="@{album.title}"
android:textAppearance="?android:attr/textAppearanceListItem"
android:textColor="?android:attr/textColorPrimary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.05"
android:fontFamily="@font/inter"
app:layout_constraintBottom_toTopOf="@+id/song_count"
app:layout_constraintStart_toEndOf="@+id/cover"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Album Name" />
<TextView
android:id="@+id/song_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_small"
android:fontFamily="@font/inter"
android:textAppearance="?android:attr/textAppearanceListItem"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/cover"
app:layout_constraintTop_toBottomOf="@+id/album_name"
app:songCount="@{album}"
tools:text="@string/tools_song_count" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View file

@ -20,7 +20,7 @@
android:layout_height="wrap_content"
android:indeterminateTint="?android:attr/colorAccent"
android:indeterminateTintMode="src_in"
android:paddingBottom="@dimen/padding_small"
android:paddingBottom="@dimen/padding_tiny"
app:layout_constraintBottom_toTopOf="@+id/error_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
@ -32,7 +32,7 @@
android:id="@+id/error_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/source_sans_pro"
android:fontFamily="@font/inter"
app:layout_constraintBottom_toTopOf="@+id/reset_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
@ -45,10 +45,10 @@
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/source_sans_pro"
android:onClick="@{() -> loadingModel.retry()}"
android:text="@string/label_retry"
android:visibility="gone"
android:fontFamily="@font/inter_semibold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="padding_small">4dp</dimen>
<dimen name="padding_medium">8dp</dimen>
<dimen name="padding_tiny">4dp</dimen>
<dimen name="padding_small">8dp</dimen>
<dimen name="margin_medium">8dp</dimen>
<dimen name="margin_small">8dp</dimen>
<dimen name="cover_size">64dp</dimen>
<dimen name="cover_size">44dp</dimen>
<dimen name="elevation_normal">6dp</dimen>
<dimen name="elevation_normal">4dp</dimen>
</resources>

View file

@ -6,8 +6,13 @@
<string name="error_music_load_failed">Music loading failed.</string>
<string name="label_retry">Retry</string>
<string name="label_single_song">1 Song</string>
<string name="format_multi_song_count">%s Songs</string>
<string name="title_library_fragment"><b>Library</b></string>
<string name="description_cover_art">Cover art for </string>
<string name="tools_song_count">10 Songs</string>
</resources>

View file

@ -7,7 +7,7 @@
</style>
<style name="ToolbarText" parent="TextAppearance.AppCompat.Title">
<item name="android:fontFamily">@font/source_sans_pro_black</item>
<item name="android:textColor">@color/blue</item>
<item name="android:fontFamily">@font/inter_black</item>
</style>
</resources>