Add Home theme and code refactor
This commit is contained in:
parent
1e85e7e943
commit
f32ef48e51
12 changed files with 302 additions and 68 deletions
|
@ -1,7 +1,6 @@
|
||||||
package code.name.monkey.retromusic.activities.base
|
package code.name.monkey.retromusic.activities.base
|
||||||
|
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
import android.content.Context
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
@ -30,6 +29,7 @@ import code.name.monkey.retromusic.fragments.player.color.ColorFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.fit.FitFragment
|
import code.name.monkey.retromusic.fragments.player.fit.FitFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.flat.FlatPlayerFragment
|
import code.name.monkey.retromusic.fragments.player.flat.FlatPlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.full.FullPlayerFragment
|
import code.name.monkey.retromusic.fragments.player.full.FullPlayerFragment
|
||||||
|
import code.name.monkey.retromusic.fragments.player.home.HomePlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.material.MaterialFragment
|
import code.name.monkey.retromusic.fragments.player.material.MaterialFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment
|
import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment
|
||||||
import code.name.monkey.retromusic.fragments.player.peak.PeakPlayerFragment
|
import code.name.monkey.retromusic.fragments.player.peak.PeakPlayerFragment
|
||||||
|
@ -190,7 +190,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
|
||||||
ViewTreeObserver.OnGlobalLayoutListener {
|
ViewTreeObserver.OnGlobalLayoutListener {
|
||||||
override fun onGlobalLayout() {
|
override fun onGlobalLayout() {
|
||||||
slidingPanel.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
slidingPanel.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||||
if (cps != PEAK) {
|
if (cps != Peak) {
|
||||||
val params = slidingPanel.layoutParams as ViewGroup.LayoutParams
|
val params = slidingPanel.layoutParams as ViewGroup.LayoutParams
|
||||||
params.height = ViewGroup.LayoutParams.MATCH_PARENT
|
params.height = ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
slidingPanel.layoutParams = params
|
slidingPanel.layoutParams = params
|
||||||
|
@ -242,22 +242,22 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
|
||||||
cps = PreferenceUtil.getInstance(this).nowPlayingScreen
|
cps = PreferenceUtil.getInstance(this).nowPlayingScreen
|
||||||
|
|
||||||
val fragment: Fragment = when (cps) {
|
val fragment: Fragment = when (cps) {
|
||||||
BLUR -> BlurPlayerFragment()
|
Blur -> BlurPlayerFragment()
|
||||||
ADAPTIVE -> AdaptiveFragment()
|
Adaptive -> AdaptiveFragment()
|
||||||
NORMAL -> PlayerFragment()
|
Normal -> PlayerFragment()
|
||||||
CARD -> CardFragment()
|
Card -> CardFragment()
|
||||||
BLUR_CARD -> CardBlurFragment()
|
BlurCard -> CardBlurFragment()
|
||||||
FIT -> FitFragment()
|
Fit -> FitFragment()
|
||||||
FLAT -> FlatPlayerFragment()
|
Flat -> FlatPlayerFragment()
|
||||||
FULL -> FullPlayerFragment()
|
Full -> FullPlayerFragment()
|
||||||
PLAIN -> PlainPlayerFragment()
|
Plain -> PlainPlayerFragment()
|
||||||
SIMPLE -> SimplePlayerFragment()
|
Simple -> SimplePlayerFragment()
|
||||||
MATERIAL -> MaterialFragment()
|
Material -> MaterialFragment()
|
||||||
COLOR -> ColorFragment()
|
Color -> ColorFragment()
|
||||||
TINY -> TinyPlayerFragment()
|
Tiny -> TinyPlayerFragment()
|
||||||
PEAK -> PeakPlayerFragment()
|
Peak -> PeakPlayerFragment()
|
||||||
CIRCLE -> CirclePlayerFragment()
|
Circle -> CirclePlayerFragment()
|
||||||
CLASSIC -> ClassicPlayerFragment()
|
Classic -> ClassicPlayerFragment()
|
||||||
else -> PlayerFragment()
|
else -> PlayerFragment()
|
||||||
} // must implement AbsPlayerFragment
|
} // must implement AbsPlayerFragment
|
||||||
supportFragmentManager.beginTransaction()
|
supportFragmentManager.beginTransaction()
|
||||||
|
@ -310,24 +310,24 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
|
||||||
|
|
||||||
val isColorLight = ColorUtil.isColorLight(paletteColor)
|
val isColorLight = ColorUtil.isColorLight(paletteColor)
|
||||||
|
|
||||||
if (PreferenceUtil.getInstance(this).adaptiveColor && (cps == NORMAL || cps == FLAT)) {
|
if (PreferenceUtil.getInstance(this).adaptiveColor && (cps == Normal || cps == Flat)) {
|
||||||
super.setLightNavigationBar(true)
|
super.setLightNavigationBar(true)
|
||||||
super.setLightStatusbar(isColorLight)
|
super.setLightStatusbar(isColorLight)
|
||||||
} else if (cps == CARD || cps == BLUR || cps == BLUR_CARD) {
|
} else if (cps == Card || cps == Blur || cps == BlurCard) {
|
||||||
super.setLightStatusbar(false)
|
super.setLightStatusbar(false)
|
||||||
super.setLightNavigationBar(true)
|
super.setLightNavigationBar(true)
|
||||||
super.setNavigationbarColor(Color.BLACK)
|
super.setNavigationbarColor(Color.BLACK)
|
||||||
} else if (cps == COLOR || cps == TINY) {
|
} else if (cps == Color || cps == Tiny) {
|
||||||
super.setNavigationbarColor(paletteColor)
|
super.setNavigationbarColor(paletteColor)
|
||||||
super.setLightNavigationBar(isColorLight)
|
super.setLightNavigationBar(isColorLight)
|
||||||
super.setLightStatusbar(isColorLight)
|
super.setLightStatusbar(isColorLight)
|
||||||
} else if (cps == FULL) {
|
} else if (cps == Full) {
|
||||||
super.setNavigationbarColor(paletteColor)
|
super.setNavigationbarColor(paletteColor)
|
||||||
super.setLightNavigationBar(isColorLight)
|
super.setLightNavigationBar(isColorLight)
|
||||||
super.setLightStatusbar(false)
|
super.setLightStatusbar(false)
|
||||||
} else if (cps == CLASSIC) {
|
} else if (cps == Classic ) {
|
||||||
super.setLightStatusbar(false)
|
super.setLightStatusbar(false)
|
||||||
} else if (cps == FIT) {
|
} else if (cps == Fit) {
|
||||||
super.setLightStatusbar(false)
|
super.setLightStatusbar(false)
|
||||||
} else {
|
} else {
|
||||||
super.setLightStatusbar(
|
super.setLightStatusbar(
|
||||||
|
@ -386,8 +386,4 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
|
||||||
bottomNavigationView.hide()
|
bottomNavigationView.hide()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
fun Context.dim(dimen: Int) {
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -9,7 +9,7 @@ import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.fragments.AlbumCoverStyle
|
import code.name.monkey.retromusic.fragments.AlbumCoverStyle
|
||||||
import code.name.monkey.retromusic.fragments.NowPlayingScreen
|
import code.name.monkey.retromusic.fragments.NowPlayingScreen.*
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.glide.SongGlideRequest
|
import code.name.monkey.retromusic.glide.SongGlideRequest
|
||||||
import code.name.monkey.retromusic.misc.CustomFragmentStatePagerAdapter
|
import code.name.monkey.retromusic.misc.CustomFragmentStatePagerAdapter
|
||||||
|
@ -83,19 +83,19 @@ class AlbumCoverPagerAdapter(
|
||||||
): View? {
|
): View? {
|
||||||
val view = inflater.inflate(getLayoutWithPlayerTheme(), container, false)
|
val view = inflater.inflate(getLayoutWithPlayerTheme(), container, false)
|
||||||
albumCover = view.findViewById(R.id.player_image)
|
albumCover = view.findViewById(R.id.player_image)
|
||||||
albumCover.setOnClickListener {
|
/*albumCover.setOnClickListener {
|
||||||
NavigationUtil.goToLyrics(requireActivity())
|
NavigationUtil.goToLyrics(requireActivity())
|
||||||
}
|
}*/
|
||||||
return view
|
return view
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getLayoutWithPlayerTheme(): Int {
|
private fun getLayoutWithPlayerTheme(): Int {
|
||||||
return when (PreferenceUtil.getInstance(requireContext()).nowPlayingScreen) {
|
return when (PreferenceUtil.getInstance(requireContext()).nowPlayingScreen) {
|
||||||
NowPlayingScreen.CARD,
|
Card,
|
||||||
NowPlayingScreen.FIT,
|
Fit,
|
||||||
NowPlayingScreen.TINY,
|
Tiny,
|
||||||
NowPlayingScreen.CLASSIC,
|
Classic,
|
||||||
NowPlayingScreen.FULL -> R.layout.fragment_album_full_cover
|
Full -> R.layout.fragment_album_full_cover
|
||||||
else -> {
|
else -> {
|
||||||
if (PreferenceUtil.getInstance(requireContext()).carouselEffect()
|
if (PreferenceUtil.getInstance(requireContext()).carouselEffect()
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -11,20 +11,20 @@ enum class NowPlayingScreen constructor(
|
||||||
val id: Int
|
val id: Int
|
||||||
) {
|
) {
|
||||||
|
|
||||||
ADAPTIVE(R.string.adaptive, R.drawable.np_adaptive, 10),
|
Adaptive(R.string.adaptive, R.drawable.np_adaptive, 10),
|
||||||
BLUR(R.string.blur, R.drawable.np_blur, 4),
|
Blur(R.string.blur, R.drawable.np_blur, 4),
|
||||||
BLUR_CARD(R.string.blur_card, R.drawable.np_blur_card, 9),
|
BlurCard(R.string.blur_card, R.drawable.np_blur_card, 9),
|
||||||
CARD(R.string.card, R.drawable.np_card, 6),
|
Card(R.string.card, R.drawable.np_card, 6),
|
||||||
CIRCLE(R.string.circle, R.drawable.np_minimalistic_circle, 15),
|
Circle(R.string.circle, R.drawable.np_minimalistic_circle, 15),
|
||||||
CLASSIC(R.string.classic, R.drawable.np_classic, 16),
|
Classic(R.string.classic, R.drawable.np_classic, 16),
|
||||||
COLOR(R.string.color, R.drawable.np_color, 5),
|
Color(R.string.color, R.drawable.np_color, 5),
|
||||||
FIT(R.string.fit, R.drawable.np_fit, 12),
|
Fit(R.string.fit, R.drawable.np_fit, 12),
|
||||||
FLAT(R.string.flat, R.drawable.np_flat, 1),
|
Flat(R.string.flat, R.drawable.np_flat, 1),
|
||||||
FULL(R.string.full, R.drawable.np_full, 2),
|
Full(R.string.full, R.drawable.np_full, 2),
|
||||||
MATERIAL(R.string.material, R.drawable.np_material, 11),
|
Material(R.string.material, R.drawable.np_material, 11),
|
||||||
NORMAL(R.string.normal, R.drawable.np_normal, 0),
|
Normal(R.string.normal, R.drawable.np_normal, 0),
|
||||||
PEAK(R.string.peak, R.drawable.np_peak, 14),
|
Peak(R.string.peak, R.drawable.np_peak, 14),
|
||||||
PLAIN(R.string.plain, R.drawable.np_plain, 3),
|
Plain(R.string.plain, R.drawable.np_plain, 3),
|
||||||
SIMPLE(R.string.simple, R.drawable.np_simple, 8),
|
Simple(R.string.simple, R.drawable.np_simple, 8),
|
||||||
TINY(R.string.tiny, R.drawable.np_tiny, 7),
|
Tiny(R.string.tiny, R.drawable.np_tiny, 7),
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan
|
||||||
val ratio = metrics.heightPixels.toFloat() / metrics.widthPixels.toFloat()
|
val ratio = metrics.heightPixels.toFloat() / metrics.widthPixels.toFloat()
|
||||||
|
|
||||||
|
|
||||||
if (nps == FULL || nps == CLASSIC || nps == FIT) {
|
if (nps == Full || nps == Classic || nps == Fit) {
|
||||||
viewPager.offscreenPageLimit = 2
|
viewPager.offscreenPageLimit = 2
|
||||||
} else if (PreferenceUtil.getInstance(requireContext()).carouselEffect()) {
|
} else if (PreferenceUtil.getInstance(requireContext()).carouselEffect()) {
|
||||||
viewPager.clipToPadding = false
|
viewPager.clipToPadding = false
|
||||||
|
|
|
@ -263,6 +263,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(), View.OnLayoutChangeListener,
|
||||||
|
|
||||||
override fun onColorChanged(color: MediaNotificationProcessor) {
|
override fun onColorChanged(color: MediaNotificationProcessor) {
|
||||||
lastColor = color.backgroundColor
|
lastColor = color.backgroundColor
|
||||||
|
callbacks?.onPaletteColorChanged()
|
||||||
lastPlaybackControlsColor = color.primaryTextColor
|
lastPlaybackControlsColor = color.primaryTextColor
|
||||||
lastDisabledPlaybackControlsColor = ColorUtil.withAlpha(color.primaryTextColor, 0.3f)
|
lastDisabledPlaybackControlsColor = ColorUtil.withAlpha(color.primaryTextColor, 0.3f)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,130 @@
|
||||||
|
package code.name.monkey.retromusic.fragments.player.home
|
||||||
|
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.widget.Toolbar
|
||||||
|
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||||
|
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||||
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
|
||||||
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
|
import code.name.monkey.retromusic.model.Song
|
||||||
|
import code.name.monkey.retromusic.util.MusicUtil
|
||||||
|
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||||
|
import kotlinx.android.synthetic.main.fragment_home_player.*
|
||||||
|
|
||||||
|
|
||||||
|
class HomePlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Callback {
|
||||||
|
private var lastColor: Int = 0
|
||||||
|
private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
progressViewUpdateHelper = MusicProgressViewUpdateHelper(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateView(
|
||||||
|
inflater: LayoutInflater,
|
||||||
|
container: ViewGroup?,
|
||||||
|
savedInstanceState: Bundle?
|
||||||
|
): View? {
|
||||||
|
return inflater.inflate(R.layout.fragment_home_player, container, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
setUpPlayerToolbar()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
progressViewUpdateHelper.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
super.onPause()
|
||||||
|
progressViewUpdateHelper.stop()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun playerToolbar(): Toolbar? {
|
||||||
|
return playerToolbar
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onShow() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onHide() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onServiceConnected() {
|
||||||
|
super.onServiceConnected()
|
||||||
|
updateSong()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPlayingMetaChanged() {
|
||||||
|
super.onPlayingMetaChanged()
|
||||||
|
updateSong()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateSong() {
|
||||||
|
val song = MusicPlayerRemote.currentSong
|
||||||
|
title.text = song.title
|
||||||
|
text.text = song.artistName
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBackPressed(): Boolean {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toolbarIconColor(): Int {
|
||||||
|
return Color.WHITE
|
||||||
|
}
|
||||||
|
|
||||||
|
override val paletteColor: Int
|
||||||
|
get() = lastColor
|
||||||
|
|
||||||
|
override fun onColorChanged(color: MediaNotificationProcessor) {
|
||||||
|
lastColor = color.backgroundColor
|
||||||
|
callbacks?.onPaletteColorChanged()
|
||||||
|
ToolbarContentTintHelper.colorizeToolbar(
|
||||||
|
playerToolbar,
|
||||||
|
Color.WHITE,
|
||||||
|
requireActivity()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toggleFavorite(song: Song) {
|
||||||
|
super.toggleFavorite(song)
|
||||||
|
if (song.id == MusicPlayerRemote.currentSong.id) {
|
||||||
|
updateIsFavorite()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFavoriteToggled() {
|
||||||
|
toggleFavorite(MusicPlayerRemote.currentSong)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onUpdateProgressViews(progress: Int, total: Int) {
|
||||||
|
songTotalTime.text = MusicUtil.getReadableDurationString(progress.toLong())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setUpPlayerToolbar() {
|
||||||
|
playerToolbar.inflateMenu(R.menu.menu_player)
|
||||||
|
playerToolbar.setNavigationOnClickListener { requireActivity().onBackPressed() }
|
||||||
|
playerToolbar.setOnMenuItemClickListener(this)
|
||||||
|
|
||||||
|
ToolbarContentTintHelper.colorizeToolbar(
|
||||||
|
playerToolbar,
|
||||||
|
ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal),
|
||||||
|
requireActivity()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
|
@ -171,14 +171,14 @@ private class NowPlayingScreenAdapter(private val context: Context) : PagerAdapt
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isNowPlayingThemes(screen: NowPlayingScreen): Boolean {
|
private fun isNowPlayingThemes(screen: NowPlayingScreen): Boolean {
|
||||||
return (screen == FULL ||
|
return (screen == Full ||
|
||||||
screen == CARD ||
|
screen == Card ||
|
||||||
screen == PLAIN ||
|
screen == Plain ||
|
||||||
screen == BLUR ||
|
screen == Blur ||
|
||||||
screen == COLOR ||
|
screen == Color ||
|
||||||
screen == SIMPLE ||
|
screen == Simple ||
|
||||||
screen == BLUR_CARD ||
|
screen == BlurCard ||
|
||||||
screen == CIRCLE ||
|
screen == Circle ||
|
||||||
screen == ADAPTIVE)
|
screen == Adaptive)
|
||||||
&& !App.isProVersion()
|
&& !App.isProVersion()
|
||||||
}
|
}
|
|
@ -294,11 +294,11 @@ public class MusicUtil {
|
||||||
long minutes = (songDurationMillis / 1000) / 60;
|
long minutes = (songDurationMillis / 1000) / 60;
|
||||||
long seconds = (songDurationMillis / 1000) % 60;
|
long seconds = (songDurationMillis / 1000) % 60;
|
||||||
if (minutes < 60) {
|
if (minutes < 60) {
|
||||||
return String.format(Locale.getDefault(), "%01d:%02d", minutes, seconds);
|
return String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds);
|
||||||
} else {
|
} else {
|
||||||
long hours = minutes / 60;
|
long hours = minutes / 60;
|
||||||
minutes = minutes % 60;
|
minutes = minutes % 60;
|
||||||
return String.format(Locale.getDefault(), "%d:%02d:%02d", hours, minutes, seconds);
|
return String.format(Locale.getDefault(), "%02d:%02d:%02d", hours, minutes, seconds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -641,7 +641,7 @@ public final class PreferenceUtil {
|
||||||
return nowPlayingScreen;
|
return nowPlayingScreen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NowPlayingScreen.ADAPTIVE;
|
return NowPlayingScreen.Adaptive;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("CommitPrefEdits")
|
@SuppressLint("CommitPrefEdits")
|
||||||
|
|
8
app/src/main/res/drawable/side_gradient.xml
Normal file
8
app/src/main/res/drawable/side_gradient.xml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<gradient
|
||||||
|
android:angle="135"
|
||||||
|
android:endColor="#00000000"
|
||||||
|
android:startColor="#11000000"
|
||||||
|
android:type="linear" />
|
||||||
|
</shape>
|
|
@ -27,13 +27,13 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:background="@drawable/shadow_down_strong"
|
android:background="@drawable/shadow_down_strong"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/dummy_statusbar_actionbar"
|
app:layout_constraintBottom_toBottomOf="@id/toolbarContainer"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="@id/dummy_statusbar_actionbar" />
|
app:layout_constraintTop_toTopOf="@id/toolbarContainer" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/dummy_statusbar_actionbar"
|
android:id="@+id/toolbarContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
|
99
app/src/main/res/layout/fragment_home_player.xml
Normal file
99
app/src/main/res/layout/fragment_home_player.xml
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
<?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">
|
||||||
|
|
||||||
|
<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_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
android:id="@+id/songTotalTime"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingHorizontal="16dp"
|
||||||
|
android:shadowColor="@color/md_black_1000"
|
||||||
|
android:shadowDx="1"
|
||||||
|
android:shadowDy="1"
|
||||||
|
android:shadowRadius="2"
|
||||||
|
android:textAppearance="@style/TextViewHeadline2"
|
||||||
|
android:textColor="@color/md_white_1000"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/title"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
tools:text="@tools:sample/date/hhmm"
|
||||||
|
tools:textColor="@color/md_black_1000" />
|
||||||
|
|
||||||
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
android:id="@+id/title"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="end"
|
||||||
|
android:paddingHorizontal="16dp"
|
||||||
|
android:shadowColor="@color/md_black_1000"
|
||||||
|
android:shadowDx="1"
|
||||||
|
android:shadowDy="1"
|
||||||
|
android:shadowRadius="2"
|
||||||
|
android:textAppearance="@style/TextViewHeadline5"
|
||||||
|
android:textColor="@color/md_white_1000"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/text"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
tools:text="@tools:sample/full_names"
|
||||||
|
tools:textColor="@color/md_black_1000" />
|
||||||
|
|
||||||
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
android:id="@+id/text"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:alpha="0.75"
|
||||||
|
android:gravity="end"
|
||||||
|
android:paddingHorizontal="16dp"
|
||||||
|
android:paddingBottom="16dp"
|
||||||
|
android:shadowColor="@color/md_black_1000"
|
||||||
|
android:shadowDx="1"
|
||||||
|
android:shadowDy="1"
|
||||||
|
android:shadowRadius="2"
|
||||||
|
android:textAppearance="@style/TextViewSubtitle1"
|
||||||
|
android:textColor="@color/md_white_1000"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
tools:text="@tools:sample/full_names"
|
||||||
|
tools:textColor="@color/md_black_1000" />
|
||||||
|
<View
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:background="@drawable/shadow_down_strong"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/toolbarContainer"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/toolbarContainer" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/toolbarContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<code.name.monkey.retromusic.views.StatusBarView
|
||||||
|
android:id="@+id/status_bar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/status_bar_padding" />
|
||||||
|
|
||||||
|
<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" />
|
||||||
|
</LinearLayout>
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
Reference in a new issue