Code refactor
1. Chaning Home Album sections from MetalAdapter to Normal 2. Adding animation icons 3. Removed cardElevation 0dp
This commit is contained in:
parent
768ab295b0
commit
76331eae7d
55 changed files with 490 additions and 815 deletions
|
@ -107,17 +107,15 @@ dependencies {
|
||||||
|
|
||||||
implementation "androidx.gridlayout:gridlayout:1.0.0"
|
implementation "androidx.gridlayout:gridlayout:1.0.0"
|
||||||
implementation "androidx.cardview:cardview:1.0.0"
|
implementation "androidx.cardview:cardview:1.0.0"
|
||||||
implementation "androidx.palette:palette:1.0.0"
|
|
||||||
implementation "androidx.viewpager2:viewpager2:1.1.0-alpha01"
|
implementation "androidx.viewpager2:viewpager2:1.1.0-alpha01"
|
||||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||||
implementation 'androidx.annotation:annotation:1.1.0'
|
implementation 'androidx.annotation:annotation:1.1.0'
|
||||||
implementation 'androidx.preference:preference:1.1.1'
|
implementation 'androidx.preference:preference-ktx:1.1.1'
|
||||||
|
|
||||||
implementation 'androidx.core:core-ktx:1.3.0'
|
implementation 'androidx.core:core-ktx:1.3.0'
|
||||||
implementation 'androidx.fragment:fragment-ktx:1.2.5'
|
implementation 'androidx.fragment:fragment-ktx:1.2.5'
|
||||||
implementation 'androidx.palette:palette-ktx:1.0.0'
|
implementation 'androidx.palette:palette-ktx:1.0.0'
|
||||||
|
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta8'
|
||||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
||||||
|
|
||||||
implementation 'com.google.android.material:material:1.3.0-alpha01'
|
implementation 'com.google.android.material:material:1.3.0-alpha01'
|
||||||
|
|
20
app/release/output.json
Normal file
20
app/release/output.json
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"artifactType": {
|
||||||
|
"type": "APK",
|
||||||
|
"kind": "Directory"
|
||||||
|
},
|
||||||
|
"applicationId": "code.name.monkey.retromusic",
|
||||||
|
"variantName": "release",
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"type": "SINGLE",
|
||||||
|
"filters": [],
|
||||||
|
"properties": [],
|
||||||
|
"versionCode": 10438,
|
||||||
|
"versionName": "10438",
|
||||||
|
"enabled": true,
|
||||||
|
"outputFile": "app-release.apk"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package code.name.monkey.retromusic
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
|
||||||
|
class PeekingLinearLayoutManager : LinearLayoutManager {
|
||||||
|
@JvmOverloads
|
||||||
|
constructor(
|
||||||
|
context: Context?,
|
||||||
|
@RecyclerView.Orientation orientation: Int = RecyclerView.VERTICAL,
|
||||||
|
reverseLayout: Boolean = false
|
||||||
|
) : super(context, orientation, reverseLayout)
|
||||||
|
|
||||||
|
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(
|
||||||
|
context,
|
||||||
|
attrs,
|
||||||
|
defStyleAttr,
|
||||||
|
defStyleRes
|
||||||
|
)
|
||||||
|
|
||||||
|
override fun generateDefaultLayoutParams() =
|
||||||
|
scaledLayoutParams(super.generateDefaultLayoutParams())
|
||||||
|
|
||||||
|
override fun generateLayoutParams(lp: ViewGroup.LayoutParams?) =
|
||||||
|
scaledLayoutParams(super.generateLayoutParams(lp))
|
||||||
|
|
||||||
|
override fun generateLayoutParams(c: Context?, attrs: AttributeSet?) =
|
||||||
|
scaledLayoutParams(super.generateLayoutParams(c, attrs))
|
||||||
|
|
||||||
|
private fun scaledLayoutParams(layoutParams: RecyclerView.LayoutParams) =
|
||||||
|
layoutParams.apply {
|
||||||
|
when (orientation) {
|
||||||
|
HORIZONTAL -> width = (horizontalSpace * ratio).toInt()
|
||||||
|
VERTICAL -> height = (verticalSpace * ratio).toInt()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val horizontalSpace get() = width - paddingStart - paddingEnd
|
||||||
|
|
||||||
|
private val verticalSpace get() = height - paddingTop - paddingBottom
|
||||||
|
|
||||||
|
private val ratio = 0.8f // change to 0.7f for 70%
|
||||||
|
}
|
|
@ -11,9 +11,12 @@ import androidx.appcompat.widget.AppCompatTextView
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import androidx.recyclerview.widget.RecyclerView.HORIZONTAL
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
|
import code.name.monkey.retromusic.PeekingLinearLayoutManager
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.adapter.album.AlbumFullWidthAdapter
|
import code.name.monkey.retromusic.adapter.album.AlbumAdapter
|
||||||
import code.name.monkey.retromusic.adapter.artist.ArtistAdapter
|
import code.name.monkey.retromusic.adapter.artist.ArtistAdapter
|
||||||
import code.name.monkey.retromusic.adapter.song.SongAdapter
|
import code.name.monkey.retromusic.adapter.song.SongAdapter
|
||||||
import code.name.monkey.retromusic.extensions.show
|
import code.name.monkey.retromusic.extensions.show
|
||||||
|
@ -23,6 +26,7 @@ import code.name.monkey.retromusic.loaders.PlaylistSongsLoader
|
||||||
import code.name.monkey.retromusic.model.*
|
import code.name.monkey.retromusic.model.*
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
|
import com.google.android.material.card.MaterialCardView
|
||||||
|
|
||||||
class HomeAdapter(
|
class HomeAdapter(
|
||||||
private val activity: AppCompatActivity,
|
private val activity: AppCompatActivity,
|
||||||
|
@ -40,8 +44,14 @@ class HomeAdapter(
|
||||||
.inflate(R.layout.section_recycler_view, parent, false)
|
.inflate(R.layout.section_recycler_view, parent, false)
|
||||||
return when (viewType) {
|
return when (viewType) {
|
||||||
RECENT_ARTISTS, TOP_ARTISTS -> ArtistViewHolder(layout)
|
RECENT_ARTISTS, TOP_ARTISTS -> ArtistViewHolder(layout)
|
||||||
|
TOP_ALBUMS, RECENT_ALBUMS -> {
|
||||||
|
AlbumViewHolder(
|
||||||
|
LayoutInflater.from(activity)
|
||||||
|
.inflate(R.layout.metal_section_recycler_view, parent, false)
|
||||||
|
)
|
||||||
|
}
|
||||||
FAVOURITES -> PlaylistViewHolder(layout)
|
FAVOURITES -> PlaylistViewHolder(layout)
|
||||||
SUGGESTIONS -> {
|
else -> {
|
||||||
SuggestionsViewHolder(
|
SuggestionsViewHolder(
|
||||||
LayoutInflater.from(activity).inflate(
|
LayoutInflater.from(activity).inflate(
|
||||||
R.layout.item_suggestions,
|
R.layout.item_suggestions,
|
||||||
|
@ -50,15 +60,6 @@ class HomeAdapter(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else -> {
|
|
||||||
AlbumViewHolder(
|
|
||||||
LayoutInflater.from(activity).inflate(
|
|
||||||
R.layout.metal_section_recycler_view,
|
|
||||||
parent,
|
|
||||||
false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +134,9 @@ class HomeAdapter(
|
||||||
if (list.isNotEmpty()) {
|
if (list.isNotEmpty()) {
|
||||||
recyclerView.apply {
|
recyclerView.apply {
|
||||||
show()
|
show()
|
||||||
adapter = AlbumFullWidthAdapter(activity, list, displayMetrics)
|
adapter = AlbumAdapter(activity, list, R.layout.pager_item, null)
|
||||||
|
layoutManager =
|
||||||
|
PeekingLinearLayoutManager(activity, HORIZONTAL, false)
|
||||||
}
|
}
|
||||||
title.text = activity.getString(titleRes)
|
title.text = activity.getString(titleRes)
|
||||||
}
|
}
|
||||||
|
@ -175,17 +178,20 @@ class HomeAdapter(
|
||||||
fun bindView(arrayList: List<Song>) {
|
fun bindView(arrayList: List<Song>) {
|
||||||
val color = ThemeStore.accentColor(activity)
|
val color = ThemeStore.accentColor(activity)
|
||||||
itemView.findViewById<TextView>(R.id.text).setTextColor(color)
|
itemView.findViewById<TextView>(R.id.text).setTextColor(color)
|
||||||
|
itemView.findViewById<MaterialCardView>(R.id.card6).apply {
|
||||||
images.forEachIndexed { index, i ->
|
setCardBackgroundColor(ColorUtil.withAlpha(color, 0.2f))
|
||||||
itemView.findViewById<View>(i).setOnClickListener {
|
|
||||||
MusicPlayerRemote.playNext(arrayList[index])
|
|
||||||
}
|
|
||||||
SongGlideRequest.Builder.from(Glide.with(activity), arrayList[index])
|
|
||||||
.asBitmap()
|
|
||||||
.build()
|
|
||||||
.into(itemView.findViewById(i))
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (arrayList.size > 9)
|
||||||
|
images.forEachIndexed { index, i ->
|
||||||
|
itemView.findViewById<View>(i).setOnClickListener {
|
||||||
|
MusicPlayerRemote.playNext(arrayList[index])
|
||||||
|
}
|
||||||
|
SongGlideRequest.Builder.from(Glide.with(activity), arrayList[index])
|
||||||
|
.asBitmap()
|
||||||
|
.build()
|
||||||
|
.into(itemView.findViewById(i))
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,108 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2017. Alexander Bilchuk <a.bilchuk@sandrlab.com>
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package code.name.monkey.retromusic.adapter.album
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.app.ActivityOptions
|
|
||||||
import android.util.DisplayMetrics
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import code.name.monkey.retromusic.R
|
|
||||||
import code.name.monkey.retromusic.glide.AlbumGlideRequest
|
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
|
||||||
import code.name.monkey.retromusic.model.Album
|
|
||||||
import code.name.monkey.retromusic.util.NavigationUtil
|
|
||||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
|
||||||
import code.name.monkey.retromusic.views.MetalRecyclerViewPager
|
|
||||||
import com.bumptech.glide.Glide
|
|
||||||
|
|
||||||
class AlbumFullWidthAdapter(
|
|
||||||
private val activity: Activity,
|
|
||||||
private val dataSet: List<Album>,
|
|
||||||
metrics: DisplayMetrics
|
|
||||||
) : MetalRecyclerViewPager.MetalAdapter<AlbumFullWidthAdapter.FullMetalViewHolder>(metrics) {
|
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FullMetalViewHolder {
|
|
||||||
return FullMetalViewHolder(
|
|
||||||
LayoutInflater.from(parent.context).inflate(
|
|
||||||
R.layout.pager_item,
|
|
||||||
parent,
|
|
||||||
false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: FullMetalViewHolder, position: Int) {
|
|
||||||
// don't forget about calling supper.onBindViewHolder!
|
|
||||||
super.onBindViewHolder(holder, position)
|
|
||||||
val album = dataSet[position]
|
|
||||||
holder.title?.text = getAlbumTitle(album)
|
|
||||||
holder.text?.text = getAlbumText(album)
|
|
||||||
holder.playSongs?.setOnClickListener {
|
|
||||||
album.songs?.let { songs ->
|
|
||||||
MusicPlayerRemote.openQueue(
|
|
||||||
songs,
|
|
||||||
0,
|
|
||||||
true
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
loadAlbumCover(album, holder)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getAlbumTitle(album: Album): String? {
|
|
||||||
return album.title
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getAlbumText(album: Album): String? {
|
|
||||||
return album.artistName
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun loadAlbumCover(album: Album, holder: FullMetalViewHolder) {
|
|
||||||
if (holder.image == null) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
AlbumGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong())
|
|
||||||
.checkIgnoreMediaStore(activity)
|
|
||||||
.generatePalette(activity)
|
|
||||||
.build()
|
|
||||||
.into(object : RetroMusicColoredTarget(holder.image!!) {
|
|
||||||
override fun onColorReady(colors: MediaNotificationProcessor) {
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getItemCount(): Int {
|
|
||||||
return dataSet.size
|
|
||||||
}
|
|
||||||
|
|
||||||
inner class FullMetalViewHolder(itemView: View) :
|
|
||||||
MetalRecyclerViewPager.MetalViewHolder(itemView) {
|
|
||||||
|
|
||||||
override fun onClick(v: View?) {
|
|
||||||
val activityOptions = ActivityOptions.makeSceneTransitionAnimation(
|
|
||||||
activity,
|
|
||||||
imageContainerCard ?: image,
|
|
||||||
activity.getString(R.string.transition_album_art)
|
|
||||||
)
|
|
||||||
NavigationUtil.goToAlbumOptions(activity, dataSet[layoutPosition].id, activityOptions)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -61,8 +61,7 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda
|
||||||
actionPrevious?.show()
|
actionPrevious?.show()
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
actionNext.visibility =
|
actionNext.visibility = if (PreferenceUtil.isExtraControls) View.VISIBLE else View.GONE
|
||||||
if (PreferenceUtil.isExtraControls) View.VISIBLE else View.GONE
|
|
||||||
actionPrevious.visibility =
|
actionPrevious.visibility =
|
||||||
if (PreferenceUtil.isExtraControls) View.VISIBLE else View.GONE
|
if (PreferenceUtil.isExtraControls) View.VISIBLE else View.GONE
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,9 +59,9 @@ public class CategoryInfo implements Parcelable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum Category {
|
public enum Category {
|
||||||
Home(R.id.action_home, R.string.home, R.drawable.ic_home_white_24dp),
|
Home(R.id.action_home, R.string.home, R.drawable.asld_home),
|
||||||
Songs(R.id.action_song, R.string.songs, R.drawable.ic_audiotrack_white_24dp),
|
Songs(R.id.action_song, R.string.songs, R.drawable.asld_music_note),
|
||||||
Albums(R.id.action_album, R.string.albums, R.drawable.ic_album_white_24dp),
|
Albums(R.id.action_album, R.string.albums, R.drawable.asld_album),
|
||||||
Artists(R.id.action_artist, R.string.artists, R.drawable.ic_artist_white_24dp),
|
Artists(R.id.action_artist, R.string.artists, R.drawable.ic_artist_white_24dp),
|
||||||
Playlists(R.id.action_playlist, R.string.playlists, R.drawable.ic_playlist_play_white_24dp),
|
Playlists(R.id.action_playlist, R.string.playlists, R.drawable.ic_playlist_play_white_24dp),
|
||||||
Genres(R.id.action_genre, R.string.genres, R.drawable.ic_guitar_white_24dp),
|
Genres(R.id.action_genre, R.string.genres, R.drawable.ic_guitar_white_24dp),
|
||||||
|
|
|
@ -43,7 +43,9 @@ class RepositoryImpl constructor(private val context: Context) : Repository {
|
||||||
ArtistLoader.getArtist(context, artistId)
|
ArtistLoader.getArtist(context, artistId)
|
||||||
|
|
||||||
override suspend fun suggestions(): Home? {
|
override suspend fun suggestions(): Home? {
|
||||||
val songs = NotRecentlyPlayedPlaylist(context).getSongs(context).shuffled().subList(0, 9)
|
val songs = NotRecentlyPlayedPlaylist(context).getSongs(context).shuffled().apply {
|
||||||
|
if (size > 9) subList(0, 9)
|
||||||
|
}
|
||||||
if (songs.isNotEmpty()) {
|
if (songs.isNotEmpty()) {
|
||||||
return Home(
|
return Home(
|
||||||
songs,
|
songs,
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 Hemanth Savarala.
|
|
||||||
*
|
|
||||||
* Licensed under the GNU General Public License v3
|
|
||||||
*
|
|
||||||
* This 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 software 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package code.name.monkey.retromusic.util;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.util.DisplayMetrics;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by hefuyi on 16/7/30.
|
|
||||||
*/
|
|
||||||
public class DensityUtil {
|
|
||||||
|
|
||||||
public static int getScreenHeight(@NonNull Context context) {
|
|
||||||
DisplayMetrics displayMetrics = new DisplayMetrics();
|
|
||||||
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
|
|
||||||
return displayMetrics.heightPixels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int dip2px(@NonNull Context context, float dpVale) {
|
|
||||||
final float scale = context.getResources().getDisplayMetrics().density;
|
|
||||||
return (int) (dpVale * scale + 0.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019 Hemanth Savarala.
|
||||||
|
*
|
||||||
|
* Licensed under the GNU General Public License v3
|
||||||
|
*
|
||||||
|
* This 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 software 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.
|
||||||
|
*/
|
||||||
|
package code.name.monkey.retromusic.util
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.content.Context
|
||||||
|
import android.util.DisplayMetrics
|
||||||
|
import android.util.TypedValue
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by hefuyi on 16/7/30.
|
||||||
|
*/
|
||||||
|
object DensityUtil {
|
||||||
|
fun getScreenHeight(context: Context): Int {
|
||||||
|
val displayMetrics = DisplayMetrics()
|
||||||
|
(context as Activity).windowManager.defaultDisplay.getMetrics(displayMetrics)
|
||||||
|
return displayMetrics.heightPixels
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getScreenWidth(context: Context): Int {
|
||||||
|
val displayMetrics = DisplayMetrics()
|
||||||
|
(context as Activity).windowManager.defaultDisplay.getMetrics(displayMetrics)
|
||||||
|
return displayMetrics.widthPixels
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun toDP(context: Context, value: Int): Int {
|
||||||
|
return TypedValue.applyDimension(
|
||||||
|
TypedValue.COMPLEX_UNIT_DIP,
|
||||||
|
value.toFloat(), context.resources.displayMetrics
|
||||||
|
).toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun dip2px(context: Context, dpVale: Float): Int {
|
||||||
|
val scale = context.resources.displayMetrics.density
|
||||||
|
return (dpVale * scale + 0.5f).toInt()
|
||||||
|
}
|
||||||
|
}
|
|
@ -78,7 +78,8 @@ object ViewUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setProgressDrawable(progressIndicator: ProgressIndicator, newColor: Int) {
|
fun setProgressDrawable(progressIndicator: ProgressIndicator, newColor: Int) {
|
||||||
progressIndicator.progressTintList = ColorStateList.valueOf(newColor)
|
progressIndicator.indicatorColors = intArrayOf(newColor)
|
||||||
|
progressIndicator.trackColor = ColorUtil.withAlpha(newColor, 0.2f)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hitTest(v: View, x: Int, y: Int): Boolean {
|
fun hitTest(v: View, x: Int, y: Int): Boolean {
|
||||||
|
|
|
@ -1,108 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 Hemanth Savarala.
|
|
||||||
*
|
|
||||||
* Licensed under the GNU General Public License v3
|
|
||||||
*
|
|
||||||
* This 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 software 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package code.name.monkey.retromusic.views
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.util.AttributeSet
|
|
||||||
import android.util.DisplayMetrics
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.annotation.NonNull
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
|
||||||
import androidx.recyclerview.widget.PagerSnapHelper
|
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
import code.name.monkey.retromusic.R
|
|
||||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
|
||||||
|
|
||||||
class MetalRecyclerViewPager : RecyclerView {
|
|
||||||
constructor(context: Context) : super(context) {
|
|
||||||
init(context, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
|
||||||
init(context, attrs)
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
|
|
||||||
context,
|
|
||||||
attrs,
|
|
||||||
defStyleAttr
|
|
||||||
) {
|
|
||||||
init(context, attrs)
|
|
||||||
}
|
|
||||||
|
|
||||||
private var itemMargin: Int = 0
|
|
||||||
|
|
||||||
fun init(context: Context, attrs: AttributeSet?) {
|
|
||||||
val typedArray =
|
|
||||||
context.obtainStyledAttributes(attrs, R.styleable.MetalRecyclerViewPager, 0, 0)
|
|
||||||
itemMargin =
|
|
||||||
typedArray.getDimension(R.styleable.MetalRecyclerViewPager_itemMargin, 0f).toInt()
|
|
||||||
typedArray.recycle()
|
|
||||||
|
|
||||||
layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
|
|
||||||
val snapHelper = PagerSnapHelper()
|
|
||||||
snapHelper.attachToRecyclerView(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun setAdapter(adapter: Adapter<*>?) {
|
|
||||||
if (adapter is MetalAdapter) {
|
|
||||||
adapter.setItemMargin(itemMargin)
|
|
||||||
adapter.updateDisplayMetrics()
|
|
||||||
} else {
|
|
||||||
throw IllegalArgumentException("Only MetalAdapter is allowed here")
|
|
||||||
}
|
|
||||||
super.setAdapter(adapter)
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class MetalAdapter<VH : MetalViewHolder>(@NonNull val displayMetrics: DisplayMetrics) :
|
|
||||||
RecyclerView.Adapter<VH>() {
|
|
||||||
private var itemMargin: Int = 0
|
|
||||||
private var itemWidth: Int = 0
|
|
||||||
|
|
||||||
fun setItemMargin(itemMargin: Int) {
|
|
||||||
this.itemMargin = itemMargin
|
|
||||||
}
|
|
||||||
|
|
||||||
fun updateDisplayMetrics() {
|
|
||||||
itemWidth = if (RetroUtil.isTablet()) {
|
|
||||||
displayMetrics.widthPixels / 2 - itemMargin * 3
|
|
||||||
} else if (RetroUtil.isLandscape()) {
|
|
||||||
((displayMetrics.widthPixels / 2.5f) - itemMargin).toInt()
|
|
||||||
} else {
|
|
||||||
displayMetrics.widthPixels - itemMargin
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: VH, position: Int) {
|
|
||||||
val currentItemWidth = itemWidth
|
|
||||||
if (position == 0) {
|
|
||||||
//currentItemWidth += itemMargin;
|
|
||||||
holder.rootLayout.setPadding(0, 0, 0, 0);
|
|
||||||
} else if (position == itemCount - 1) {
|
|
||||||
//currentItemWidth += itemMargin;
|
|
||||||
holder.rootLayout.setPadding(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
val height = holder.rootLayout.layoutParams.height
|
|
||||||
holder.rootLayout.layoutParams = ViewGroup.LayoutParams(currentItemWidth, height)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class MetalViewHolder(itemView: View) : MediaEntryViewHolder(itemView) {
|
|
||||||
var rootLayout: ViewGroup = itemView.findViewById(R.id.root_layout)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -405,7 +405,7 @@ public class SeekArc extends View {
|
||||||
thumbHalfheight);
|
thumbHalfheight);
|
||||||
|
|
||||||
mMax = a.getInteger(R.styleable.SeekArc_max, mMax);
|
mMax = a.getInteger(R.styleable.SeekArc_max, mMax);
|
||||||
mProgress = a.getInteger(R.styleable.SeekArc_progress, mProgress);
|
mProgress = a.getInteger(R.styleable.SeekArc_seekProgress, mProgress);
|
||||||
mProgressWidth = (int) a.getDimension(
|
mProgressWidth = (int) a.getDimension(
|
||||||
R.styleable.SeekArc_progressWidth, mProgressWidth);
|
R.styleable.SeekArc_progressWidth, mProgressWidth);
|
||||||
mArcWidth = (int) a.getDimension(R.styleable.SeekArc_arcWidth,
|
mArcWidth = (int) a.getDimension(R.styleable.SeekArc_arcWidth,
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:color="@color/ripple_material_light" />
|
|
|
@ -1,3 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:color="@color/ripple_material_dark" />
|
|
|
@ -1,3 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:color="@color/ripple_material_light" />
|
|
15
app/src/main/res/drawable/asld_album.xml
Normal file
15
app/src/main/res/drawable/asld_album.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<animated-selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
tools:ignore="NewApi">
|
||||||
|
<item
|
||||||
|
android:id="@+id/state_on"
|
||||||
|
android:drawable="@drawable/ic_album_white_24dp"
|
||||||
|
android:state_checked="true" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/state_off"
|
||||||
|
android:drawable="@drawable/ic_album_white_24dp" />
|
||||||
|
<transition
|
||||||
|
android:drawable="@drawable/avd_album"
|
||||||
|
android:fromId="@id/state_off"
|
||||||
|
android:toId="@id/state_on" />
|
||||||
|
</animated-selector>
|
15
app/src/main/res/drawable/asld_home.xml
Normal file
15
app/src/main/res/drawable/asld_home.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<animated-selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
tools:ignore="NewApi">
|
||||||
|
<item
|
||||||
|
android:id="@+id/state_on"
|
||||||
|
android:drawable="@drawable/ic_home_white_24dp"
|
||||||
|
android:state_checked="true" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/state_off"
|
||||||
|
android:drawable="@drawable/ic_home_white_24dp" />
|
||||||
|
<transition
|
||||||
|
android:drawable="@drawable/avd_home"
|
||||||
|
android:fromId="@id/state_off"
|
||||||
|
android:toId="@id/state_on" />
|
||||||
|
</animated-selector>
|
15
app/src/main/res/drawable/asld_music_note.xml
Normal file
15
app/src/main/res/drawable/asld_music_note.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<animated-selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
tools:ignore="NewApi">
|
||||||
|
<item
|
||||||
|
android:id="@+id/state_on"
|
||||||
|
android:drawable="@drawable/ic_audiotrack_white_24dp"
|
||||||
|
android:state_checked="true" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/state_off"
|
||||||
|
android:drawable="@drawable/ic_audiotrack_white_24dp" />
|
||||||
|
<transition
|
||||||
|
android:drawable="@drawable/avd_music_note"
|
||||||
|
android:fromId="@id/state_off"
|
||||||
|
android:toId="@id/state_on" />
|
||||||
|
</animated-selector>
|
39
app/src/main/res/drawable/avd_album.xml
Normal file
39
app/src/main/res/drawable/avd_album.xml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<animated-vector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:aapt="http://schemas.android.com/aapt">
|
||||||
|
<aapt:attr name="android:drawable">
|
||||||
|
<vector
|
||||||
|
android:name="vector"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:name="path"
|
||||||
|
android:pathData="M 12 2 C 6.48 2 2 6.48 2 12 C 2 17.52 6.48 22 12 22 C 17.52 22 22 17.52 22 12 C 22 6.48 17.52 2 12 2 Z M 12 16.5 C 9.51 16.5 7.5 14.49 7.5 12 C 7.5 9.51 9.51 7.5 12 7.5 C 14.49 7.5 16.5 9.51 16.5 12 C 16.5 14.49 14.49 16.5 12 16.5 Z M 12 11 C 11.45 11 11 11.45 11 12 C 11 12.55 11.45 13 12 13 C 12.55 13 13 12.55 13 12 C 13 11.45 12.55 11 12 11 Z"
|
||||||
|
android:fillColor="#000"
|
||||||
|
android:strokeWidth="1"/>
|
||||||
|
</vector>
|
||||||
|
</aapt:attr>
|
||||||
|
<target android:name="path">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set>
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="pathData"
|
||||||
|
android:duration="200"
|
||||||
|
android:valueFrom="M 12 2 C 6.48 2 2 6.48 2 12 C 2 17.52 6.48 22 12 22 C 17.52 22 22 17.52 22 12 C 22 6.48 17.52 2 12 2 Z M 12 16.5 C 9.51 16.5 7.5 14.49 7.5 12 C 7.5 9.51 9.51 7.5 12 7.5 C 14.49 7.5 16.5 9.51 16.5 12 C 16.5 14.49 14.49 16.5 12 16.5 Z M 12 11 C 11.45 11 11 11.45 11 12 C 11 12.55 11.45 13 12 13 C 12.55 13 13 12.55 13 12 C 13 11.45 12.55 11 12 11 Z M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12"
|
||||||
|
android:valueTo="M 12 2 C 6.48 2 2 6.48 2 12 C 2 17.52 6.48 22 12 22 C 17.52 22 22 17.52 22 12 C 22 6.48 17.52 2 12 2 Z M 12 20 C 7.59 20 4 16.41 4 12 C 4 7.59 7.59 4 12 4 C 16.41 4 20 7.59 20 12 C 20 16.41 16.41 20 12 20 Z M 12 7.5 C 9.51 7.5 7.5 9.51 7.5 12 C 7.5 14.49 9.51 16.5 12 16.5 C 14.49 16.5 16.5 14.49 16.5 12 C 16.5 9.51 14.49 7.5 12 7.5 Z M 12 13 C 11.45 13 11 12.55 11 12 C 11 11.45 11.45 11 12 11 C 12.55 11 13 11.45 13 12 C 13 12.55 12.55 13 12 13 L 12 13"
|
||||||
|
android:valueType="pathType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="pathData"
|
||||||
|
android:startOffset="200"
|
||||||
|
android:duration="200"
|
||||||
|
android:valueFrom="M 12 2 C 6.48 2 2 6.48 2 12 C 2 17.52 6.48 22 12 22 C 17.52 22 22 17.52 22 12 C 22 6.48 17.52 2 12 2 Z M 12 20 C 7.59 20 4 16.41 4 12 C 4 7.59 7.59 4 12 4 C 16.41 4 20 7.59 20 12 C 20 16.41 16.41 20 12 20 Z M 12 7.5 C 9.51 7.5 7.5 9.51 7.5 12 C 7.5 14.49 9.51 16.5 12 16.5 C 14.49 16.5 16.5 14.49 16.5 12 C 16.5 9.51 14.49 7.5 12 7.5 Z M 12 13 C 12.55 13 13 12.55 13 12 C 13 11.45 12.55 11 12 11 C 11.45 11 11 11.45 11 12 C 11 12.55 11.45 13 12 13 L 12 13"
|
||||||
|
android:valueTo="M 12 2 C 6.48 2 2 6.48 2 12 C 2 17.52 6.48 22 12 22 C 17.52 22 22 17.52 22 12 C 22 6.48 17.52 2 12 2 Z M 12 16.5 C 9.51 16.5 7.5 14.49 7.5 12 C 7.5 9.51 9.51 7.5 12 7.5 C 14.49 7.5 16.5 9.51 16.5 12 C 16.5 14.49 14.49 16.5 12 16.5 Z M 12 11 C 11.45 11 11 11.45 11 12 C 11 12.55 11.45 13 12 13 C 12.55 13 13 12.55 13 12 C 13 11.45 12.55 11 12 11 Z M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12"
|
||||||
|
android:valueType="pathType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
</animated-vector>
|
96
app/src/main/res/drawable/avd_home.xml
Normal file
96
app/src/main/res/drawable/avd_home.xml
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
<animated-vector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:aapt="http://schemas.android.com/aapt">
|
||||||
|
<aapt:attr name="android:drawable">
|
||||||
|
<vector
|
||||||
|
android:name="home"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<group android:name="home_icon">
|
||||||
|
<path
|
||||||
|
android:name="home_data"
|
||||||
|
android:pathData="M 10 19 L 10 14 L 14 14 L 14 19 C 14 19.55 14.45 20 15 20 L 18 20 C 18.55 20 19 19.55 19 19 L 19 12 L 20.7 12 C 21.16 12 21.38 11.43 21.03 11.13 L 12.67 3.6 C 12.29 3.26 11.71 3.26 11.33 3.6 L 2.97 11.13 C 2.63 11.43 2.84 12 3.3 12 L 5 12 L 5 19 C 5 19.55 5.45 20 6 20 L 9 20 C 9.55 20 10 19.55 10 19 Z"
|
||||||
|
android:fillColor="#000"
|
||||||
|
android:strokeWidth="1"/>
|
||||||
|
</group>
|
||||||
|
<group
|
||||||
|
android:name="sun"
|
||||||
|
android:translateX="-5"
|
||||||
|
android:translateY="4"
|
||||||
|
android:scaleX="0.2"
|
||||||
|
android:scaleY="0.2">
|
||||||
|
<path
|
||||||
|
android:name="sun_data"
|
||||||
|
android:pathData="M 12 2 C 6.48 2 2 6.48 2 12 C 2 17.52 6.48 22 12 22 C 17.52 22 22 17.52 22 12 C 22 6.48 17.52 2 12 2 Z"
|
||||||
|
android:fillColor="#000"
|
||||||
|
android:strokeWidth="1"/>
|
||||||
|
</group>
|
||||||
|
<group
|
||||||
|
android:name="cloud"
|
||||||
|
android:translateX="2"
|
||||||
|
android:scaleX="0.2"
|
||||||
|
android:scaleY="0.2">
|
||||||
|
<path
|
||||||
|
android:name="path"
|
||||||
|
android:pathData="M 19.37 10.04 C 18.68 6.59 15.65 4 12.01 4 C 9.12 4 6.61 5.64 5.36 8.04 C 2.35 8.36 0.01 10.91 0.01 14 C 0.01 17.31 2.7 20 6.01 20 L 19.01 20 C 21.77 20 24.01 17.76 24.01 15 C 24.01 12.36 21.96 10.22 19.37 10.04 Z"
|
||||||
|
android:fillColor="#000"
|
||||||
|
android:strokeWidth="1"/>
|
||||||
|
</group>
|
||||||
|
<group
|
||||||
|
android:name="cloud_1"
|
||||||
|
android:translateX="1"
|
||||||
|
android:translateY="4"
|
||||||
|
android:scaleX="0.1"
|
||||||
|
android:scaleY="0.1">
|
||||||
|
<path
|
||||||
|
android:name="cloud_2"
|
||||||
|
android:pathData="M 19.37 10.04 C 18.68 6.59 15.65 4 12.01 4 C 9.12 4 6.61 5.64 5.36 8.04 C 2.35 8.36 0.01 10.91 0.01 14 C 0.01 17.31 2.7 20 6.01 20 L 19.01 20 C 21.77 20 24.01 17.76 24.01 15 C 24.01 12.36 21.96 10.22 19.37 10.04 Z"
|
||||||
|
android:fillColor="#000000"/>
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
|
</aapt:attr>
|
||||||
|
<target android:name="sun">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set>
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="translateX"
|
||||||
|
android:duration="400"
|
||||||
|
android:valueFrom="-5"
|
||||||
|
android:valueTo="16"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="translateY"
|
||||||
|
android:duration="400"
|
||||||
|
android:valueFrom="10"
|
||||||
|
android:valueTo="1"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="cloud">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="translateX"
|
||||||
|
android:duration="400"
|
||||||
|
android:valueFrom="1"
|
||||||
|
android:valueTo="24"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="cloud_1">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="translateX"
|
||||||
|
android:duration="400"
|
||||||
|
android:valueFrom="0"
|
||||||
|
android:valueTo="12"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
</animated-vector>
|
115
app/src/main/res/drawable/avd_music_note.xml
Normal file
115
app/src/main/res/drawable/avd_music_note.xml
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
<animated-vector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:aapt="http://schemas.android.com/aapt">
|
||||||
|
<aapt:attr name="android:drawable">
|
||||||
|
<vector
|
||||||
|
android:name="vector"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<group android:name="group_1">
|
||||||
|
<path
|
||||||
|
android:name="note_1"
|
||||||
|
android:pathData="M 12 5 L 12 13.55 C 11.06 13.01 9.9 12.8 8.67 13.23 C 7.33 13.71 6.3 14.9 6.06 16.3 C 5.6 19.04 7.92 21.38 10.65 20.95 C 12.61 20.64 14 18.84 14 16.85 L 14 7 L 16 7 C 17.1 7 18 6.1 18 5 C 18 3.9 17.1 3 16 3 L 14 3 C 12.9 3 12 3.9 12 5 Z"
|
||||||
|
android:fillColor="#000"
|
||||||
|
android:strokeWidth="1"/>
|
||||||
|
</group>
|
||||||
|
<group
|
||||||
|
android:name="group_2"
|
||||||
|
android:translateX="-2"
|
||||||
|
android:translateY="13"
|
||||||
|
android:scaleX="0.4"
|
||||||
|
android:scaleY="0.4">
|
||||||
|
<path
|
||||||
|
android:name="note_2"
|
||||||
|
android:pathData="M 12 5 L 12 13.55 C 11.06 13.01 9.9 12.8 8.67 13.23 C 7.33 13.71 6.3 14.9 6.06 16.3 C 5.6 19.04 7.92 21.38 10.65 20.95 C 12.61 20.64 14 18.84 14 16.85 L 14 7 L 16 7 C 17.1 7 18 6.1 18 5 C 18 3.9 17.1 3 16 3 L 14 3 C 12.9 3 12 3.9 12 5 Z"
|
||||||
|
android:fillColor="#000000"/>
|
||||||
|
</group>
|
||||||
|
<group
|
||||||
|
android:name="group_3"
|
||||||
|
android:translateX="16"
|
||||||
|
android:translateY="-1"
|
||||||
|
android:scaleX="0.4"
|
||||||
|
android:scaleY="0.4">
|
||||||
|
<path
|
||||||
|
android:name="path"
|
||||||
|
android:pathData="M 12 5 L 12 13.55 C 11.06 13.01 9.9 12.8 8.67 13.23 C 7.33 13.71 6.3 14.9 6.06 16.3 C 5.6 19.04 7.92 21.38 10.65 20.95 C 12.61 20.64 14 18.84 14 16.85 L 14 7 L 16 7 C 17.1 7 18 6.1 18 5 C 18 3.9 17.1 3 16 3 L 14 3 C 12.9 3 12 3.9 12 5 Z"
|
||||||
|
android:fillColor="#000000"/>
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
|
</aapt:attr>
|
||||||
|
<target android:name="group_1">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<set>
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="translateY"
|
||||||
|
android:duration="100"
|
||||||
|
android:valueFrom="-3"
|
||||||
|
android:valueTo="3"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="translateY"
|
||||||
|
android:startOffset="125"
|
||||||
|
android:duration="76"
|
||||||
|
android:valueFrom="-1"
|
||||||
|
android:valueTo="-2"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="translateY"
|
||||||
|
android:startOffset="225"
|
||||||
|
android:duration="175"
|
||||||
|
android:valueFrom="-1"
|
||||||
|
android:valueTo="0"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
</set>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="group_2">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="translateY"
|
||||||
|
android:duration="400"
|
||||||
|
android:valueFrom="13"
|
||||||
|
android:valueTo="-11"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="group_3">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="translateY"
|
||||||
|
android:duration="400"
|
||||||
|
android:valueFrom="-1"
|
||||||
|
android:valueTo="15"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="note_2">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="fillAlpha"
|
||||||
|
android:duration="400"
|
||||||
|
android:valueFrom="1"
|
||||||
|
android:valueTo="0"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
<target android:name="path">
|
||||||
|
<aapt:attr name="android:animation">
|
||||||
|
<objectAnimator
|
||||||
|
android:propertyName="fillAlpha"
|
||||||
|
android:duration="400"
|
||||||
|
android:valueFrom="1"
|
||||||
|
android:valueTo="0"
|
||||||
|
android:valueType="floatType"
|
||||||
|
android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||||
|
</aapt:attr>
|
||||||
|
</target>
|
||||||
|
</animated-vector>
|
|
@ -1,9 +1,3 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="@color/ripple_material_light" />
|
||||||
<item android:drawable="@color/ripple_material_dark" android:state_activated="true" android:state_pressed="true" />
|
|
||||||
<item android:drawable="@color/ripple_material_dark" android:state_activated="true" />
|
|
||||||
<item android:drawable="@color/ripple_material_dark" android:state_pressed="true" />
|
|
||||||
<item android:drawable="@android:color/transparent" />
|
|
||||||
|
|
||||||
</selector>
|
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
10
app/src/main/res/drawable/widget_selector.xml
Executable file → Normal file
10
app/src/main/res/drawable/widget_selector.xml
Executable file → Normal file
|
@ -1,9 +1,3 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="@color/ripple_material_dark" />
|
||||||
<item android:drawable="@color/ripple_material_dark" android:state_activated="true" android:state_pressed="true" />
|
|
||||||
<item android:drawable="@color/ripple_material_dark" android:state_activated="true" />
|
|
||||||
<item android:drawable="@color/ripple_material_dark" android:state_pressed="true" />
|
|
||||||
<item android:drawable="@android:color/transparent" />
|
|
||||||
|
|
||||||
</selector>
|
|
|
@ -1,9 +1,3 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="@color/ripple_material_light" />
|
||||||
<item android:drawable="@color/ripple_material_light" android:state_activated="true" android:state_pressed="true" />
|
|
||||||
<item android:drawable="@color/ripple_material_light" android:state_activated="true" />
|
|
||||||
<item android:drawable="@color/ripple_material_light" android:state_pressed="true" />
|
|
||||||
<item android:drawable="@android:color/transparent" />
|
|
||||||
|
|
||||||
</selector>
|
|
|
@ -48,7 +48,7 @@
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:transitionName="@string/transition_album_art"
|
android:transitionName="@string/transition_album_art"
|
||||||
app:cardCornerRadius="24dp"
|
app:cardCornerRadius="24dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/container"
|
app:layout_constraintEnd_toStartOf="@+id/container"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:transitionName="@string/transition_artist_image"
|
android:transitionName="@string/transition_artist_image"
|
||||||
app:cardCornerRadius="24dp"
|
app:cardCornerRadius="24dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/container"
|
app:layout_constraintEnd_toStartOf="@+id/container"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
android:layout_height="156dp"
|
android:layout_height="156dp"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
app:cardCornerRadius="16dp"
|
app:cardCornerRadius="16dp"
|
||||||
app:cardElevation="0dp">
|
>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/image"
|
android:id="@+id/image"
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<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:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?attr/colorSurface"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true">
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/colorGradientBackground"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<include layout="@layout/shadow_statusbar_toolbar" />
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/statusBarContainer"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
|
||||||
|
|
||||||
<include layout="@layout/status_bar" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
|
||||||
android:id="@+id/playerToolbar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/statusBarContainer"
|
|
||||||
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
|
||||||
android:id="@+id/playerAlbumCoverFragment"
|
|
||||||
android:name="code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
app:layout_constraintBottom_toTopOf="@id/playbackControlsFragment"
|
|
||||||
app:layout_constraintDimensionRatio="1:1"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/playerToolbar"
|
|
||||||
tools:layout="@layout/fragment_album_cover" />
|
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
|
||||||
android:id="@+id/playbackControlsFragment"
|
|
||||||
android:name="code.name.monkey.retromusic.fragments.player.normal.PlayerPlaybackControlsFragment"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
tools:layout="@layout/fragment_player_playback_controls" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
|
@ -1,216 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<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_controls"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="vertical"
|
|
||||||
tools:ignore="MissingPrefix">
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/title"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:ellipsize="marquee"
|
|
||||||
android:focusable="true"
|
|
||||||
android:focusableInTouchMode="true"
|
|
||||||
android:freezesText="true"
|
|
||||||
android:gravity="center"
|
|
||||||
android:marqueeRepeatLimit="marquee_forever"
|
|
||||||
android:paddingHorizontal="24dp"
|
|
||||||
android:paddingTop="12dp"
|
|
||||||
android:scrollHorizontally="true"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textAppearance="@style/TextViewHeadline4"
|
|
||||||
android:textColor="?android:attr/textColorPrimary"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="@tools:sample/lorem/random" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/text"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:gravity="center"
|
|
||||||
android:maxLines="2"
|
|
||||||
android:paddingHorizontal="24dp"
|
|
||||||
android:paddingVertical="12dp"
|
|
||||||
android:textAppearance="@style/TextViewHeadline5"
|
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
|
||||||
app:layout_constraintBottom_toTopOf="@+id/songInfo"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/title"
|
|
||||||
tools:text="@tools:sample/lorem/random" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/songInfo"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:gravity="center"
|
|
||||||
android:maxLines="2"
|
|
||||||
android:paddingHorizontal="24dp"
|
|
||||||
android:paddingBottom="12dp"
|
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
|
||||||
android:visibility="visible"
|
|
||||||
app:layout_constraintBottom_toTopOf="@+id/playPauseButton"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/text"
|
|
||||||
tools:text="@tools:sample/lorem/random"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
|
||||||
android:id="@+id/repeatButton"
|
|
||||||
android:layout_width="72dp"
|
|
||||||
android:layout_height="72dp"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:background="?attr/roundSelector"
|
|
||||||
android:padding="16dp"
|
|
||||||
android:scaleType="fitCenter"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@id/previousButton"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/previousButton"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/previousButton"
|
|
||||||
app:srcCompat="@drawable/ic_repeat_white_24dp"
|
|
||||||
tools:ignore="MissingPrefix"
|
|
||||||
tools:tint="@color/md_black_1000" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
|
||||||
android:id="@+id/previousButton"
|
|
||||||
android:layout_width="72dp"
|
|
||||||
android:layout_height="72dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:background="?attr/roundSelector"
|
|
||||||
android:padding="16dp"
|
|
||||||
android:scaleType="fitCenter"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/playPauseButton"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/playPauseButton"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/playPauseButton"
|
|
||||||
app:srcCompat="@drawable/ic_skip_previous_white_24dp"
|
|
||||||
tools:ignore="MissingPrefix"
|
|
||||||
tools:tint="@color/md_black_1000" />
|
|
||||||
|
|
||||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
|
||||||
android:id="@+id/playPauseButton"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_margin="8dp"
|
|
||||||
android:background="@drawable/color_circle_gradient"
|
|
||||||
app:fabCustomSize="96dp"
|
|
||||||
app:layout_constraintBottom_toTopOf="@+id/volumeFragmentContainer"
|
|
||||||
app:layout_constraintEnd_toStartOf="parent"
|
|
||||||
app:layout_constraintStart_toEndOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/songInfo"
|
|
||||||
app:maxImageSize="52dp"
|
|
||||||
app:srcCompat="@drawable/ic_play_arrow_white_32dp"
|
|
||||||
tools:tint="@color/md_black_1000" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
|
||||||
android:id="@+id/nextButton"
|
|
||||||
android:layout_width="72dp"
|
|
||||||
android:layout_height="72dp"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:background="?attr/roundSelector"
|
|
||||||
android:padding="16dp"
|
|
||||||
android:scaleType="fitCenter"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/playPauseButton"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/shuffleButton"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/playPauseButton"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/playPauseButton"
|
|
||||||
app:srcCompat="@drawable/ic_skip_next_white_24dp"
|
|
||||||
tools:ignore="MissingPrefix"
|
|
||||||
tools:tint="@color/md_black_1000" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
|
||||||
android:id="@+id/shuffleButton"
|
|
||||||
android:layout_width="72dp"
|
|
||||||
android:layout_height="72dp"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:background="?attr/roundSelector"
|
|
||||||
android:padding="16dp"
|
|
||||||
android:scaleType="fitCenter"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/nextButton"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/nextButton"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/nextButton"
|
|
||||||
app:srcCompat="@drawable/ic_shuffle_white_24dp"
|
|
||||||
tools:ignore="MissingPrefix"
|
|
||||||
tools:tint="@color/md_black_1000" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/songCurrentProgress"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:gravity="center_vertical|left|end"
|
|
||||||
android:paddingLeft="8dp"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textAppearance="@style/TextViewHeadline6"
|
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
|
||||||
app:layout_constrainedWidth="true"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@id/progressSlider"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/progressSlider"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/progressSlider"
|
|
||||||
tools:ignore="RtlHardcoded,RtlSymmetry"
|
|
||||||
tools:text="@tools:sample/date/hhmmss" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatSeekBar
|
|
||||||
android:id="@+id/progressSlider"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:maxHeight="2dp"
|
|
||||||
android:progressDrawable="@drawable/color_progress_seek"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:layout_toLeftOf="@id/songTotalTime"
|
|
||||||
android:layout_toRightOf="@id/songCurrentProgress"
|
|
||||||
app:layout_constraintBottom_toTopOf="@id/playPauseButton"
|
|
||||||
app:layout_constraintEnd_toEndOf="@id/shuffleButton"
|
|
||||||
app:layout_constraintStart_toStartOf="@id/repeatButton"
|
|
||||||
app:layout_constraintTop_toBottomOf="@id/songInfo"
|
|
||||||
tools:ignore="RtlHardcoded,UnusedAttribute"
|
|
||||||
tools:progress="20" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/songTotalTime"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentRight="true"
|
|
||||||
android:gravity="center_vertical|right|end"
|
|
||||||
android:paddingRight="8dp"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textAppearance="@style/TextViewHeadline6"
|
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@id/progressSlider"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/progressSlider"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/progressSlider"
|
|
||||||
tools:ignore="RtlHardcoded,RtlSymmetry"
|
|
||||||
tools:text="@tools:sample/date/hhmmss" />
|
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/volumeFragmentContainer"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="0"
|
|
||||||
android:paddingStart="8dp"
|
|
||||||
android:paddingEnd="8dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="@id/shuffleButton"
|
|
||||||
app:layout_constraintStart_toStartOf="@id/repeatButton"
|
|
||||||
app:layout_constraintTop_toBottomOf="@id/playPauseButton"
|
|
||||||
tools:backgroundTint="@color/md_red_400"
|
|
||||||
tools:layout_height="52dp" />
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
|
@ -14,7 +14,7 @@
|
||||||
android:layout_height="256dp"
|
android:layout_height="256dp"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
app:cardCornerRadius="16dp"
|
app:cardCornerRadius="16dp"
|
||||||
app:cardElevation="0dp">
|
>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/image"
|
android:id="@+id/image"
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<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:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?attr/colorSurface"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
|
||||||
android:id="@+id/colorBackground"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?attr/colorSurface"
|
|
||||||
android:scaleType="centerCrop"
|
|
||||||
app:srcCompat="@color/black_color" />
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/mask"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="@color/md_black_1000"
|
|
||||||
android:visibility="gone" />
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="@drawable/shadow_up" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_gravity="center_horizontal"
|
|
||||||
android:layout_marginStart="64dp"
|
|
||||||
android:layout_marginEnd="64dp"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<include layout="@layout/status_bar" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center_horizontal">
|
|
||||||
|
|
||||||
<fragment
|
|
||||||
android:id="@+id/playerAlbumCoverFragment"
|
|
||||||
android:name="code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
tools:layout="@layout/fragment_album_cover" />
|
|
||||||
</code.name.monkey.retromusic.views.WidthFitSquareLayout>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="1"
|
|
||||||
tools:background="@color/md_white_1000">
|
|
||||||
|
|
||||||
<fragment
|
|
||||||
android:id="@+id/playbackControlsFragment"
|
|
||||||
android:name="code.name.monkey.retromusic.fragments.player.blur.BlurPlaybackControlsFragment"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
tools:layout="@layout/fragment_player_playback_controls" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="0">
|
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
|
||||||
android:id="@+id/playerToolbar"
|
|
||||||
style="@style/Toolbar"
|
|
||||||
android:layout_height="48dp"
|
|
||||||
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
|
||||||
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
|
||||||
</FrameLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</FrameLayout>
|
|
|
@ -1,75 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<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:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true">
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?attr/colorSurface" />
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/colorGradientBackground"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent" />
|
|
||||||
|
|
||||||
<include layout="@layout/shadow_statusbar_toolbar" />
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_gravity="center_horizontal"
|
|
||||||
android:gravity="center_horizontal"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<include layout="@layout/status_bar" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.WidthFitSquareLayout
|
|
||||||
android:id="@+id/album_cover_container"
|
|
||||||
android:layout_width="520dp"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<fragment
|
|
||||||
android:id="@+id/playerAlbumCoverFragment"
|
|
||||||
android:name="code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
tools:layout="@layout/fragment_album_cover" />
|
|
||||||
</code.name.monkey.retromusic.views.WidthFitSquareLayout>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="520dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1">
|
|
||||||
|
|
||||||
<fragment
|
|
||||||
android:id="@+id/playbackControlsFragment"
|
|
||||||
android:name="code.name.monkey.retromusic.fragments.player.normal.PlayerPlaybackControlsFragment"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
tools:layout="@layout/fragment_player_playback_controls" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="0">
|
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
|
||||||
android:id="@+id/playerToolbar"
|
|
||||||
style="@style/Toolbar"
|
|
||||||
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
|
|
||||||
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
|
|
||||||
</FrameLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</FrameLayout>
|
|
|
@ -64,7 +64,6 @@
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:transitionName="@string/transition_album_art"
|
android:transitionName="@string/transition_album_art"
|
||||||
app:cardCornerRadius="24dp"
|
app:cardCornerRadius="24dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:layout_constraintDimensionRatio="1:1"
|
app:layout_constraintDimensionRatio="1:1"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
|
|
@ -63,7 +63,6 @@
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:transitionName="@string/transition_artist_image"
|
android:transitionName="@string/transition_artist_image"
|
||||||
app:cardCornerRadius="24dp"
|
app:cardCornerRadius="24dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:layout_constraintDimensionRatio="1:1"
|
app:layout_constraintDimensionRatio="1:1"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
|
|
@ -67,6 +67,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:circularRadius="16dp"
|
app:circularRadius="16dp"
|
||||||
|
app:indicatorColor="@android:color/black"
|
||||||
app:indicatorType="circular"
|
app:indicatorType="circular"
|
||||||
app:indicatorWidth="2dp"
|
app:indicatorWidth="2dp"
|
||||||
app:linearSeamless="true"
|
app:linearSeamless="true"
|
||||||
|
|
|
@ -27,9 +27,9 @@
|
||||||
<androidx.appcompat.widget.AppCompatSeekBar
|
<androidx.appcompat.widget.AppCompatSeekBar
|
||||||
android:id="@+id/progressSlider"
|
android:id="@+id/progressSlider"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
android:maxHeight="2dp"
|
android:maxHeight="2dp"
|
||||||
android:progressDrawable="@drawable/color_progress_seek"
|
android:progressDrawable="@drawable/color_progress_seek"
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/songTotalTime"
|
app:layout_constraintEnd_toStartOf="@id/songTotalTime"
|
||||||
app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
|
app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
@ -83,11 +83,9 @@
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/text"
|
android:id="@+id/text"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="center"
|
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingHorizontal="16dp"
|
||||||
android:paddingVertical="8dp"
|
android:paddingVertical="8dp"
|
||||||
|
@ -95,24 +93,26 @@
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
app:layout_constrainedWidth="true"
|
app:layout_constrainedWidth="true"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/songInfo"
|
app:layout_constraintBottom_toTopOf="@+id/songInfo"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/titleContainer"
|
app:layout_constraintTop_toBottomOf="@+id/titleContainer"
|
||||||
tools:text="@tools:sample/lorem/random" />
|
tools:text="@tools:sample/full_names" />
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/songInfo"
|
android:id="@+id/songInfo"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="center"
|
|
||||||
android:maxLines="2"
|
android:maxLines="2"
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingHorizontal="16dp"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/playPauseButton"
|
app:layout_constraintBottom_toTopOf="@+id/playPauseButton"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/text"
|
app:layout_constraintTop_toBottomOf="@+id/text"
|
||||||
tools:text="@tools:sample/lorem/random" />
|
tools:text="@tools:sample/full_names" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
android:id="@+id/repeatButton"
|
android:id="@+id/repeatButton"
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
android:layout_height="156dp"
|
android:layout_height="156dp"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
app:cardCornerRadius="12dp"
|
app:cardCornerRadius="12dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
|
@ -17,8 +17,7 @@
|
||||||
android:layout_width="128dp"
|
android:layout_width="128dp"
|
||||||
android:layout_height="128dp"
|
android:layout_height="128dp"
|
||||||
android:layout_margin="4dp"
|
android:layout_margin="4dp"
|
||||||
app:cardCornerRadius="16dp"
|
app:cardCornerRadius="16dp">
|
||||||
app:cardElevation="0dp">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/paletteColorContainer"
|
android:id="@+id/paletteColorContainer"
|
||||||
|
|
|
@ -7,8 +7,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:background="?attr/rectSelector"
|
android:background="?attr/rectSelector"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp">
|
||||||
app:cardElevation="0dp">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="4dp"
|
android:layout_margin="4dp"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:contentPadding="12dp">
|
app:contentPadding="12dp">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:layout_constraintDimensionRatio="1:1"
|
app:layout_constraintDimensionRatio="1:1"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:cardPreventCornerOverlap="true"
|
app:cardPreventCornerOverlap="true"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
android:layout_margin="4dp"
|
android:layout_margin="4dp"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintDimensionRatio="1:1"
|
app:layout_constraintDimensionRatio="1:1"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|
|
@ -37,8 +37,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
app:cardCornerRadius="6dp"
|
app:cardCornerRadius="6dp">
|
||||||
app:cardElevation="0dp">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/image"
|
android:id="@+id/image"
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingHorizontal="16dp"
|
||||||
android:paddingVertical="12dp"
|
android:paddingVertical="14dp"
|
||||||
android:text="@string/suggestion_songs"
|
android:text="@string/suggestion_songs"
|
||||||
android:textAppearance="@style/TextViewHeadline6"
|
android:textAppearance="@style/TextViewHeadline6"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
|
@ -126,6 +126,7 @@
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
|
app:cardElevation="0dp"
|
||||||
app:cardBackgroundColor="?attr/colorSurface"
|
app:cardBackgroundColor="?attr/colorSurface"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textAppearance="@style/TextViewSubtitle1"
|
android:textAppearance="@style/TextViewSubtitle1"
|
||||||
app:layout_constrainedWidth="true"
|
app:layout_constrainedWidth="true"
|
||||||
app:layout_constraintEnd_toStartOf="@android:id/widget_frame"
|
app:layout_constraintEnd_toStartOf="@id/circle"
|
||||||
app:layout_constraintStart_toStartOf="@+id/guideline_front_margin"
|
app:layout_constraintStart_toStartOf="@+id/guideline_front_margin"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:maxLines="@string/grid_size_1"
|
tools:maxLines="@string/grid_size_1"
|
||||||
|
@ -53,12 +53,12 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="2dp"
|
android:layout_marginTop="2dp"
|
||||||
|
android:textAppearance="@style/TextViewNormal"
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
app:layout_constrainedWidth="true"
|
app:layout_constrainedWidth="true"
|
||||||
app:layout_constraintEnd_toStartOf="@android:id/widget_frame"
|
app:layout_constraintEnd_toStartOf="@id/circle"
|
||||||
app:layout_constraintStart_toStartOf="@+id/guideline_front_margin"
|
app:layout_constraintStart_toStartOf="@+id/guideline_front_margin"
|
||||||
app:layout_constraintTop_toBottomOf="@android:id/title"
|
app:layout_constraintTop_toBottomOf="@android:id/title"
|
||||||
android:textAppearance="@style/TextViewNormal"
|
|
||||||
tools:maxLines="2"
|
tools:maxLines="2"
|
||||||
tools:text="@tools:sample/lorem/random" />
|
tools:text="@tools:sample/lorem/random" />
|
||||||
|
|
||||||
|
@ -69,13 +69,11 @@
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_constraintGuide_begin="@dimen/list_pref_guideline_begin" />
|
app:layout_constraintGuide_begin="@dimen/list_pref_guideline_begin" />
|
||||||
|
|
||||||
<LinearLayout
|
<code.name.monkey.appthemehelper.common.prefs.BorderCircleView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:id="@android:id/widget_frame"
|
android:id="@+id/circle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="32dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="32dp"
|
||||||
android:layout_gravity="end|center_vertical"
|
android:layout_marginStart="8dp"
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingHorizontal="16dp"
|
||||||
android:paddingVertical="12dp"
|
android:paddingVertical="14dp"
|
||||||
android:textAppearance="@style/TextViewHeadline6"
|
android:textAppearance="@style/TextViewHeadline6"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:layout_constrainedWidth="true"
|
app:layout_constrainedWidth="true"
|
||||||
|
@ -21,14 +21,13 @@
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="@tools:sample/full_names" />
|
tools:text="@tools:sample/full_names" />
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.MetalRecyclerViewPager
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recyclerView"
|
android:id="@+id/recyclerView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:nestedScrollingEnabled="false"
|
android:nestedScrollingEnabled="false"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:itemMargin="28dp"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/title"
|
app:layout_constraintTop_toBottomOf="@+id/title"
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
app:cardCornerRadius="16dp"
|
app:cardCornerRadius="16dp"
|
||||||
app:cardElevation="0dp"
|
|
||||||
app:layout_constraintDimensionRatio="16:9"
|
app:layout_constraintDimensionRatio="16:9"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingHorizontal="16dp"
|
||||||
android:paddingVertical="12dp"
|
android:paddingVertical="14dp"
|
||||||
android:textAppearance="@style/TextViewHeadline6"
|
android:textAppearance="@style/TextViewHeadline6"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:layout_constrainedWidth="true"
|
app:layout_constrainedWidth="true"
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<declare-styleable name="MetalRecyclerViewPager">
|
|
||||||
<attr name="itemMargin" format="dimension" />
|
|
||||||
</declare-styleable>
|
|
||||||
</resources>
|
|
|
@ -29,7 +29,7 @@
|
||||||
<attr name="max" format="integer" />
|
<attr name="max" format="integer" />
|
||||||
<attr name="progressWidth" format="dimension" />
|
<attr name="progressWidth" format="dimension" />
|
||||||
<attr name="arcWidth" format="dimension" />
|
<attr name="arcWidth" format="dimension" />
|
||||||
<attr name="progress" format="integer" />
|
<attr name="seekProgress" format="integer" />
|
||||||
<attr name="rotation" format="integer" />
|
<attr name="rotation" format="integer" />
|
||||||
<attr name="startAngle" format="integer" />
|
<attr name="startAngle" format="integer" />
|
||||||
<attr name="sweepAngle" format="integer" />
|
<attr name="sweepAngle" format="integer" />
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
<declare-styleable name="SeekArcTheme">
|
<declare-styleable name="SeekArcTheme">
|
||||||
<attr name="seekArcStyle" format="reference"></attr>
|
<attr name="seekArcStyle" format="reference"/>
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
Loading…
Reference in a new issue