Made Navigation Bar transparent and added some MD3 themes

This commit is contained in:
Prathamesh More 2021-09-12 19:50:33 +05:30
parent 9f17bf6378
commit 3722347305
29 changed files with 76 additions and 127 deletions

View file

@ -27,6 +27,7 @@ import code.name.monkey.retromusic.activities.base.AbsCastActivity
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
import code.name.monkey.retromusic.extensions.extra
import code.name.monkey.retromusic.extensions.findNavController
import code.name.monkey.retromusic.extensions.surfaceColor
import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewFragment
import code.name.monkey.retromusic.fragments.home.HomeFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
@ -55,7 +56,6 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
override fun onCreate(savedInstanceState: Bundle?) {
setDrawUnderStatusBar()
super.onCreate(savedInstanceState)
setStatusbarColorAuto()
setTaskDescriptionColorAuto()
hideStatusBar()
updateTabs()

View file

@ -14,6 +14,7 @@
*/
package code.name.monkey.retromusic.activities.base
import android.content.res.ColorStateList
import android.graphics.Color
import android.os.Bundle
import android.view.View
@ -26,10 +27,10 @@ import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.RetroBottomSheetBehavior
import code.name.monkey.retromusic.databinding.ActivityMainContentBinding
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
import code.name.monkey.retromusic.extensions.*
import code.name.monkey.retromusic.fragments.LibraryViewModel
@ -109,6 +110,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
println("Do something")
}
}
println(bottomSheetBehavior.peekHeight)
}
}
@ -158,12 +160,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
}
protected fun wrapSlidingMusicPanel(): SlidingMusicPanelLayoutBinding {
val slidingMusicPanelLayoutBinding =
SlidingMusicPanelLayoutBinding.inflate(layoutInflater)
val contentContainer: ViewGroup =
slidingMusicPanelLayoutBinding.mainContentFrame
ActivityMainContentBinding.inflate(layoutInflater, contentContainer, true)
return slidingMusicPanelLayoutBinding
return SlidingMusicPanelLayoutBinding.inflate(layoutInflater)
}
fun collapsePanel() {
@ -187,11 +184,16 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
open fun onPanelCollapsed() {
// restore values
super.setLightStatusbar(lightStatusBar)
super.setLightStatusbarAuto(surfaceColor())
super.setTaskDescriptionColor(taskColor)
}
open fun onPanelExpanded() {
if (nowPlayingScreen == Blur ) {
super.setLightStatusbar(false)
} else {
super.setLightStatusbarAuto(surfaceColor())
}
}
private fun setupSlidingUpPanel() {
@ -286,7 +288,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
}
private fun hideBottomBar(hide: Boolean) {
val heightOfBar = RetroUtil.getNavigationBarHeight() +
val heightOfBar =
if (MusicPlayerRemote.isCasting) dip(R.dimen.cast_mini_player_height) else dip(R.dimen.mini_player_height)
val heightOfBarWithTabs = RetroUtil.getNavigationBarHeight() +
if (MusicPlayerRemote.isCasting) dip(R.dimen.mini_cast_player_height_expanded) else dip(

View file

@ -33,6 +33,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.LanguageContextWrapper
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.surfaceColor
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.util.theme.ThemeManager

View file

@ -29,6 +29,7 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.navigation.fragment.NavHostFragment
import code.name.monkey.retromusic.util.PreferenceUtil
import com.google.android.material.appbar.MaterialToolbar
fun Fragment.getIntRes(@IntegerRes int: Int): Int {
return resources.getInteger(int)
@ -97,3 +98,7 @@ fun Context.getDrawableCompat(@DrawableRes drawableRes: Int): Drawable {
fun Fragment.getDrawableCompat(@DrawableRes drawableRes: Int): Drawable {
return AppCompatResources.getDrawable(requireContext(), drawableRes)!!
}
fun Fragment.applyToolbar(toolbar: MaterialToolbar) {
(requireActivity() as AppCompatActivity).applyToolbar(toolbar)
}

View file

@ -1,66 +0,0 @@
/*
* Copyright (c) 2020 Hemanth Savarla.
*
* 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.fragments.artists
import androidx.lifecycle.*
import code.name.monkey.retromusic.interfaces.IMusicServiceEventListener
import code.name.monkey.retromusic.model.Artist
import code.name.monkey.retromusic.network.Result
import code.name.monkey.retromusic.network.model.LastFmArtist
import code.name.monkey.retromusic.repository.RealRepository
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch
class AlbumArtistDetailsViewModel(
private val realRepository: RealRepository,
private val artistName: String
) : ViewModel(), IMusicServiceEventListener {
private val artistDetails = MutableLiveData<Artist>()
init {
fetchAlbumArtist()
}
private fun fetchAlbumArtist() {
viewModelScope.launch(IO) {
artistDetails.postValue(realRepository.albumArtistByName(artistName))
}
}
fun getArtist(): LiveData<Artist> = artistDetails
fun getArtistInfo(
name: String,
lang: String?,
cache: String?
): LiveData<Result<LastFmArtist>> = liveData(IO) {
emit(Result.Loading)
val info = realRepository.artistInfo(name, lang, cache)
emit(info)
}
override fun onMediaStoreChanged() {
fetchAlbumArtist()
}
override fun onServiceConnected() {}
override fun onServiceDisconnected() {}
override fun onQueueChanged() {}
override fun onFavoriteStateChanged() {}
override fun onPlayingMetaChanged() {}
override fun onPlayStateChanged() {}
override fun onRepeatModeChanged() {}
override fun onShuffleModeChanged() {}
}

View file

@ -33,7 +33,7 @@ import code.name.monkey.retromusic.dialogs.ImportPlaylistDialog
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.util.DensityUtil
import code.name.monkey.retromusic.util.ThemedFastScroller.create
import com.google.android.material.transition.MaterialFadeThrough
import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.transition.MaterialSharedAxis
import me.zhanghai.android.fastscroll.FastScroller
import me.zhanghai.android.fastscroll.FastScrollerBuilder
@ -58,6 +58,7 @@ abstract class AbsRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : Recycle
initAdapter()
setUpRecyclerView()
setupToolbar()
binding.appBarLayout.statusBarForeground = MaterialShapeDrawable.createWithElevationOverlay(requireContext());
}
fun toolbar(): Toolbar {

View file

@ -17,16 +17,13 @@ package code.name.monkey.retromusic.views
import android.content.Context
import android.content.res.ColorStateList
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.RippleDrawable
import android.util.AttributeSet
import androidx.core.content.ContextCompat
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.NavigationViewUtil
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RippleUtils
import com.google.android.material.bottomnavigation.BottomNavigationView
class BottomNavigationBarTinted @JvmOverloads constructor(
@ -50,17 +47,7 @@ class BottomNavigationBarTinted @JvmOverloads constructor(
ColorUtil.withAlpha(iconColor, 0.5f),
accentColor
)
itemBackground = RippleDrawable(
RippleUtils.convertToRippleDrawableColor(
ColorStateList.valueOf(
ThemeStore.accentColor(context).addAlpha()
)
),
ContextCompat.getDrawable(context, R.drawable.bottom_navigation_item_background),
ContextCompat.getDrawable(context, R.drawable.bottom_navigation_item_background_mask)
)
setOnApplyWindowInsetsListener(null)
//itemRippleColor = ColorStateList.valueOf(accentColor)
itemRippleColor = ColorStateList.valueOf(accentColor.addAlpha())
background = ColorDrawable(ATHUtil.resolveColor(context, R.attr.colorSurface))
}
}