From f769740d1725b1df16a4267376d40899b7b52df3 Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Fri, 14 Jan 2022 23:36:49 +0530 Subject: [PATCH] Code Cleanup --- .../base/AbsSlidingMusicPanelActivity.kt | 2 +- .../activities/base/AbsThemeActivity.kt | 3 +- .../retromusic/adapter/SearchAdapter.kt | 6 +- .../retromusic/adapter/SongFileAdapter.kt | 3 +- .../retromusic/adapter/album/AlbumAdapter.kt | 3 +- .../adapter/artist/ArtistAdapter.kt | 3 +- .../song/OrderablePlaylistSongAdapter.kt | 3 +- .../adapter/song/PlayingQueueAdapter.kt | 3 +- .../adapter/song/ShuffleButtonSongAdapter.kt | 3 +- .../extensions/ActivityThemeExtensions.kt | 8 ++ .../retromusic/extensions/ViewExtensions.kt | 131 ++++-------------- .../artists/AbsArtistDetailsFragment.kt | 29 ++-- .../base/AbsPlayerControlsFragment.kt | 3 +- .../fragments/base/AbsPlayerFragment.kt | 3 +- .../fragments/base/AbsRecyclerViewFragment.kt | 14 +- .../fragments/other/CoverLyricsFragment.kt | 2 +- .../fragments/other/LyricsFragment.kt | 6 +- .../blur/BlurPlaybackControlsFragment.kt | 3 +- .../player/fit/FitPlaybackControlsFragment.kt | 3 +- .../plain/PlainPlaybackControlsFragment.kt | 3 +- .../playlists/PlaylistDetailsFragment.kt | 5 +- .../settings/MainSettingsFragment.kt | 25 ++-- .../transform/HingeTransformation.kt | 9 +- .../transform/HorizontalFlipTransformation.kt | 6 +- .../transform/VerticalFlipTransformation.kt | 6 +- .../views/BottomNavigationBarTinted.kt | 8 +- .../views/insets/InsetsRecyclerView.kt | 4 + 27 files changed, 127 insertions(+), 170 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index 808b077ed..9cd5339d3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -140,7 +140,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { insets } if (RetroUtil.isLandscape()) { - binding.slidingPanel.drawAboveSystemBarsWithPadding(true) + binding.slidingPanel.drawAboveSystemBarsWithPadding() } chooseFragmentForTheme() setupSlidingUpPanel() diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt index 099ff1c70..333b0339e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt @@ -35,11 +35,10 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable { private val handler = Handler() override fun onCreate(savedInstanceState: Bundle?) { - setDrawBehindSystemBars() + setEdgeToEdgeOrImmersive() updateTheme() hideStatusBar() super.onCreate(savedInstanceState) - setImmersiveFullscreen() registerSystemUiVisibility() toggleScreenOn() setLightNavigationBarAuto() diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt index 55e1beb9f..7013ab681 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt @@ -150,13 +150,13 @@ class SearchAdapter( imageTextContainer?.isInvisible = true if (itemViewType == SONG) { imageTextContainer?.isGone = true - menu?.visibility = View.VISIBLE + menu?.isVisible = true menu?.setOnClickListener(object : SongMenuHelper.OnClickSongMenu(activity) { override val song: Song get() = dataSet[layoutPosition] as Song }) } else { - menu?.visibility = View.GONE + menu?.isVisible = false } when (itemViewType) { @@ -164,7 +164,7 @@ class SearchAdapter( ARTIST -> setImageTransitionName(activity.getString(R.string.transition_artist_image)) else -> { val container = itemView.findViewById(R.id.imageContainer) - container?.visibility = View.GONE + container?.isVisible = false } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt index 7160568d7..fc2c293cb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt @@ -20,6 +20,7 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.isVisible import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter @@ -78,7 +79,7 @@ class SongFileAdapter( if (holder.itemViewType == FILE) { holder.text?.text = getFileText(file) } else { - holder.text?.visibility = View.GONE + holder.text?.isVisible = false } } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt index 75fbd1a13..64c1b7bf9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt @@ -20,6 +20,7 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import androidx.core.view.ViewCompat +import androidx.core.view.isVisible import androidx.fragment.app.FragmentActivity import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter @@ -174,7 +175,7 @@ open class AlbumAdapter( inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) { init { - menu?.visibility = View.GONE + menu?.isVisible = false } override fun onClick(v: View?) { diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt index 7b3fe50dc..9a2403e39 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt @@ -21,6 +21,7 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import androidx.core.view.ViewCompat +import androidx.core.view.isVisible import androidx.fragment.app.FragmentActivity import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter @@ -158,7 +159,7 @@ class ArtistAdapter( inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) { init { - menu?.visibility = View.GONE + menu?.isVisible = false } override fun onClick(v: View?) { diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt index 0e52a5d73..827e3e90b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/OrderablePlaylistSongAdapter.kt @@ -16,6 +16,7 @@ package code.name.monkey.retromusic.adapter.song import android.view.MenuItem import android.view.View +import androidx.core.view.isVisible import androidx.fragment.app.FragmentActivity import androidx.lifecycle.lifecycleScope import code.name.monkey.appthemehelper.ThemeStore @@ -129,7 +130,7 @@ class OrderablePlaylistSongAdapter( } init { - dragView?.visibility = View.VISIBLE + dragView?.isVisible = true } override fun onClick(v: View?) { diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt index 6495e6742..398f479bf 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt @@ -16,6 +16,7 @@ package code.name.monkey.retromusic.adapter.song import android.view.MenuItem import android.view.View +import androidx.core.view.isVisible import androidx.fragment.app.FragmentActivity import code.name.monkey.retromusic.R import code.name.monkey.retromusic.glide.GlideApp @@ -154,7 +155,7 @@ class PlayingQueueAdapter( } init { - dragView?.visibility = View.VISIBLE + dragView?.isVisible = true } override fun onSongMenuItemClick(item: MenuItem): Boolean { diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/ShuffleButtonSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/ShuffleButtonSongAdapter.kt index 329c68749..29ccf448b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/ShuffleButtonSongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/ShuffleButtonSongAdapter.kt @@ -15,6 +15,7 @@ package code.name.monkey.retromusic.adapter.song import android.view.View +import androidx.core.view.isVisible import androidx.fragment.app.FragmentActivity import code.name.monkey.retromusic.R import code.name.monkey.retromusic.extensions.accentColor @@ -61,7 +62,7 @@ class ShuffleButtonSongAdapter( super.onBindViewHolder(holder, position - 1) val landscape = RetroUtil.isLandscape() if ((PreferenceUtil.songGridSize > 2 && !landscape) || (PreferenceUtil.songGridSizeLand > 5 && landscape)) { - holder.menu?.visibility = View.GONE + holder.menu?.isVisible = false } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt index c56f8d01c..b21a7f33f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt @@ -22,6 +22,14 @@ fun AppCompatActivity.toggleScreenOn() { } } +fun AppCompatActivity.setEdgeToEdgeOrImmersive() { + if (PreferenceUtil.isFullScreenMode) { + setImmersiveFullscreen() + } else { + setDrawBehindSystemBars() + } +} + fun AppCompatActivity.setImmersiveFullscreen() { if (PreferenceUtil.isFullScreenMode) { WindowInsetsControllerCompat(window, window.decorView).apply { diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt index 141540daa..5d32b173c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt @@ -20,11 +20,11 @@ import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.view.ViewGroup.MarginLayoutParams import android.view.ViewTreeObserver import android.view.inputmethod.InputMethodManager import android.widget.EditText import androidx.annotation.LayoutRes +import androidx.annotation.Px import androidx.core.animation.doOnEnd import androidx.core.animation.doOnStart import androidx.core.view.* @@ -32,11 +32,8 @@ import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.RetroUtil -import com.afollestad.materialdialogs.utils.MDUtil.updatePadding import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.imageview.ShapeableImageView -import com.google.android.material.shape.ShapeAppearanceModel - +import dev.chrisbanes.insetter.applyInsetter @Suppress("UNCHECKED_CAST") fun ViewGroup.inflate(@LayoutRes layout: Int): T { @@ -44,19 +41,17 @@ fun ViewGroup.inflate(@LayoutRes layout: Int): T { } fun View.show() { - visibility = View.VISIBLE + isVisible = true } fun View.hide() { - visibility = View.GONE + isVisible = false } fun View.hidden() { - visibility = View.INVISIBLE + isInvisible = true } -fun View.showOrHide(show: Boolean) = if (show) show() else hide() - fun EditText.appHandleColor(): EditText { if (PreferenceUtil.materialYou) return this TintHelper.colorHandles(this, ThemeStore.accentColor(context)) @@ -126,121 +121,45 @@ fun View.focusAndShowKeyboard() { } } -fun ShapeableImageView.setCircleShape(boolean: Boolean) { - addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ -> - val radius = width / 2f - shapeAppearanceModel = ShapeAppearanceModel().withCornerSize(radius) - } -} - - /** * This will draw our view above the navigation bar instead of behind it by adding margins. */ fun View.drawAboveSystemBars(onlyPortrait: Boolean = true) { if (PreferenceUtil.isFullScreenMode) return if (onlyPortrait && RetroUtil.isLandscape()) return - // Create a snapshot of the view's margin state - val initialMargin = recordInitialMarginForView(this) - ViewCompat.setOnApplyWindowInsetsListener( - (this) - ) { _: View, windowInsets: WindowInsetsCompat -> - val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) - // Apply the insets as a margin to the view. - updateLayoutParams { - leftMargin = initialMargin.left + insets.left - bottomMargin = initialMargin.bottom + insets.bottom - rightMargin = initialMargin.right + insets.right + applyInsetter { + type(navigationBars = true) { + margin() } - windowInsets } } /** * This will draw our view above the navigation bar instead of behind it by adding padding. */ -fun View.drawAboveSystemBarsWithPadding(consume: Boolean = false) { +fun View.drawAboveSystemBarsWithPadding() { if (PreferenceUtil.isFullScreenMode) return - val initialPadding = recordInitialPaddingForView(this) - - ViewCompat.setOnApplyWindowInsetsListener( - (this) - ) { v: View, windowInsets: WindowInsetsCompat -> - val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) - v.updatePadding( - left = initialPadding.left + insets.left, - bottom = initialPadding.bottom + insets.bottom, - right = initialPadding.right + insets.right - ) - if (consume) WindowInsetsCompat.CONSUMED else windowInsets - } - requestApplyInsetsWhenAttached() -} - -fun View.requestApplyInsetsWhenAttached() { - if (isAttachedToWindow) { - // We're already attached, just request as normal - requestApplyInsets() - } else { - // We're not attached to the hierarchy, add a listener to - // request when we are - addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener { - override fun onViewAttachedToWindow(v: View) { - v.removeOnAttachStateChangeListener(this) - v.requestApplyInsets() - } - - override fun onViewDetachedFromWindow(v: View) = Unit - }) + applyInsetter { + type(navigationBars = true) { + padding() + } } } fun View.drawNextToNavbar() { - val initialPadding = recordInitialPaddingForView(this) - - ViewCompat.setOnApplyWindowInsetsListener( - (this) - ) { v: View, windowInsets: WindowInsetsCompat -> - val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) - v.updatePadding( - left = initialPadding.left + insets.left, - right = initialPadding.right + insets.right - ) - windowInsets - } - requestApplyInsetsWhenAttached() -} - -fun View.addBottomInsets() { - // Create a snapshot of the view's margin state - val initialMargin = recordInitialMarginForView(this) - ViewCompat.setOnApplyWindowInsetsListener( - (this) - ) { _: View, windowInsets: WindowInsetsCompat -> - val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) - // Apply the insets as a margin to the view. - updateLayoutParams { - bottomMargin = initialMargin.bottom + insets.bottom + if (PreferenceUtil.isFullScreenMode) return + applyInsetter { + type(statusBars = true, navigationBars = true) { + padding(horizontal = true) } - windowInsets } } -data class InitialMargin( - val left: Int, val top: Int, - val right: Int, val bottom: Int -) - -fun recordInitialMarginForView(view: View) = InitialMargin( - view.marginLeft, view.marginTop, view.marginRight, view.marginBottom -) - - -data class InitialPadding( - val left: Int, val top: Int, - val right: Int, val bottom: Int -) - -fun recordInitialPaddingForView(view: View) = InitialPadding( - view.paddingLeft, view.paddingTop, view.paddingRight, view.paddingBottom -) +fun View.updateMargin( + @Px left: Int = marginLeft, + @Px top: Int = marginTop, + @Px right: Int = marginRight, + @Px bottom: Int = marginBottom +) { + (layoutParams as ViewGroup.MarginLayoutParams).updateMargins(left, top, right, bottom) +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt index be399aaf0..e4a3c36a4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt @@ -12,6 +12,7 @@ import androidx.core.os.bundleOf import androidx.core.text.HtmlCompat import androidx.core.view.ViewCompat import androidx.core.view.doOnPreDraw +import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.FragmentNavigatorExtras import androidx.navigation.fragment.findNavController @@ -192,19 +193,21 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm if (lastFmArtist != null && lastFmArtist.artist != null && lastFmArtist.artist.bio != null) { val bioContent = lastFmArtist.artist.bio.content if (bioContent != null && bioContent.trim { it <= ' ' }.isNotEmpty()) { - binding.fragmentArtistContent.biographyText.visibility = View.VISIBLE - binding.fragmentArtistContent.biographyTitle.visibility = View.VISIBLE - biography = HtmlCompat.fromHtml(bioContent, HtmlCompat.FROM_HTML_MODE_LEGACY) - binding.fragmentArtistContent.biographyText.text = biography - if (lastFmArtist.artist.stats.listeners.isNotEmpty()) { - binding.fragmentArtistContent.listeners.show() - binding.fragmentArtistContent.listenersLabel.show() - binding.fragmentArtistContent.scrobbles.show() - binding.fragmentArtistContent.scrobblesLabel.show() - binding.fragmentArtistContent.listeners.text = - RetroUtil.formatValue(lastFmArtist.artist.stats.listeners.toFloat()) - binding.fragmentArtistContent.scrobbles.text = - RetroUtil.formatValue(lastFmArtist.artist.stats.playcount.toFloat()) + binding.fragmentArtistContent.run { + biographyText.isVisible = true + biographyTitle.isVisible = true + biography = HtmlCompat.fromHtml(bioContent, HtmlCompat.FROM_HTML_MODE_LEGACY) + biographyText.text = biography + if (lastFmArtist.artist.stats.listeners.isNotEmpty()) { + listeners.show() + listenersLabel.show() + scrobbles.show() + scrobblesLabel.show() + listeners.text = + RetroUtil.formatValue(lastFmArtist.artist.stats.listeners.toFloat()) + scrobbles.text = + RetroUtil.formatValue(lastFmArtist.artist.stats.playcount.toFloat()) + } } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt index 3530d8f60..f0e0bbcc7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt @@ -19,6 +19,7 @@ import android.view.View import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator import androidx.annotation.LayoutRes +import androidx.core.view.isVisible import code.name.monkey.retromusic.R import code.name.monkey.retromusic.fragments.other.VolumeFragment import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper @@ -49,7 +50,7 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi clearAnimation() scaleX = 0.9f scaleY = 0.9f - visibility = View.VISIBLE + isVisible = true pivotX = (view.width / 2).toFloat() pivotY = (view.height / 2).toFloat() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index ee47f424e..109a14eff 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -35,6 +35,7 @@ import androidx.annotation.LayoutRes import androidx.appcompat.graphics.drawable.DrawableWrapper import androidx.appcompat.widget.Toolbar import androidx.core.os.bundleOf +import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import androidx.navigation.findNavController import androidx.navigation.navOptions @@ -275,7 +276,7 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMainActivityFragme if (PreferenceUtil.isFullScreenMode && view.findViewById(R.id.status_bar) != null ) { - view.findViewById(R.id.status_bar).visibility = View.GONE + view.findViewById(R.id.status_bar).isVisible = false } playerAlbumCoverFragment = whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment?.setCallbacks(this) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt index 979e3646a..489aebc21 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt @@ -155,17 +155,19 @@ abstract class AbsRecyclerViewFragment, LM : Recycle private fun checkIsEmpty() { binding.emptyText.setText(emptyMessage) - binding.empty.visibility = if (adapter!!.itemCount == 0) View.VISIBLE else View.GONE + binding.empty.isVisible = adapter!!.itemCount == 0 } private fun checkForPadding() { val itemCount: Int = adapter?.itemCount ?: 0 - if (itemCount > 0 && MusicPlayerRemote.playingQueue.isNotEmpty()) { - binding.recyclerView.updatePadding(bottom = dip(R.dimen.mini_player_height_expanded)) - } else { - binding.recyclerView.updatePadding(bottom = dip(R.dimen.bottom_nav_height)) - } + binding.recyclerView.updatePadding( + bottom = if (itemCount > 0 && MusicPlayerRemote.playingQueue.isNotEmpty()) { + dip(R.dimen.mini_player_height_expanded) + } else { + dip(R.dimen.bottom_nav_height) + } + ) } private fun initLayoutManager() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/CoverLyricsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/CoverLyricsFragment.kt index b45b68d9d..c41c3c1bd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/CoverLyricsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/CoverLyricsFragment.kt @@ -120,7 +120,7 @@ class CoverLyricsFragment : AbsMusicServiceFragment(R.layout.fragment_cover_lyri if (lyrics !is AbsSynchronizedLyrics) return val synchronizedLyrics = lyrics as AbsSynchronizedLyrics - lyricsLayout.visibility = View.VISIBLE + lyricsLayout.isVisible = true lyricsLayout.alpha = 1f val oldLine = lyricsLine2.text.toString() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt index 3f4b7f9ca..d67e208f8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt @@ -285,11 +285,7 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { } catch (e: Exception) { e.printStackTrace() } - if (lyrics.isNullOrEmpty()) { - binding.noLyricsFound.visibility = View.VISIBLE - } else { - binding.noLyricsFound.visibility = View.GONE - } + binding.noLyricsFound.isVisible = lyrics.isNullOrEmpty() binding.normalLyrics.text = lyrics } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt index 8906eada8..06cccfc4b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt @@ -25,6 +25,7 @@ import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator import android.widget.SeekBar import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper @@ -261,7 +262,7 @@ class BlurPlaybackControlsFragment : clearAnimation() scaleX = 0.9f scaleY = 0.9f - visibility = View.VISIBLE + isVisible = true pivotX = (width / 2).toFloat() pivotY = (height / 2).toFloat() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt index 5cac1e50e..d02c3ad68 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt @@ -23,6 +23,7 @@ import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator import android.widget.SeekBar +import androidx.core.view.isVisible import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper @@ -265,7 +266,7 @@ class FitPlaybackControlsFragment : clearAnimation() scaleX = 0.9f scaleY = 0.9f - visibility = View.VISIBLE + isVisible = true pivotX = (width / 2).toFloat() pivotY = (height / 2).toFloat() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt index 55eddc1f2..5c5dee0b4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt @@ -23,6 +23,7 @@ import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator import android.widget.SeekBar +import androidx.core.view.isVisible import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil @@ -251,7 +252,7 @@ class PlainPlaybackControlsFragment : clearAnimation() scaleX = 0.9f scaleY = 0.9f - visibility = View.VISIBLE + isVisible = true pivotX = (width / 2).toFloat() pivotY = (height / 2).toFloat() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt index f66054cad..c76d3c2dd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt @@ -20,6 +20,7 @@ import code.name.monkey.retromusic.db.PlaylistWithSongs import code.name.monkey.retromusic.db.toSongs import code.name.monkey.retromusic.extensions.dip import code.name.monkey.retromusic.extensions.surfaceColor +import code.name.monkey.retromusic.extensions.updateMargin import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.menu.PlaylistMenuHelper @@ -149,8 +150,8 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli } private fun showEmptyView() { - binding.empty.visibility = View.VISIBLE - binding.emptyText.visibility = View.VISIBLE + binding.empty.isVisible = true + binding.emptyText.isVisible = true } fun songs(songs: List) { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt index 5b2d85269..ac22d66cf 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt @@ -37,17 +37,20 @@ class MainSettingsFragment : Fragment(), View.OnClickListener { override fun onClick(view: View) { - when (view.id) { - R.id.generalSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_themeSettingsFragment) - R.id.audioSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_audioSettings) - R.id.personalizeSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_personalizeSettingsFragment) - R.id.imageSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_imageSettingFragment) - R.id.notificationSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_notificationSettingsFragment) - R.id.otherSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_otherSettingsFragment) - R.id.aboutSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_aboutActivity) - R.id.nowPlayingSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_nowPlayingSettingsFragment) - R.id.backup_restore_settings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_backupFragment) - } + findNavController().navigate( + when (view.id) { + R.id.generalSettings -> R.id.action_mainSettingsFragment_to_themeSettingsFragment + R.id.audioSettings -> R.id.action_mainSettingsFragment_to_audioSettings + R.id.personalizeSettings -> R.id.action_mainSettingsFragment_to_personalizeSettingsFragment + R.id.imageSettings -> R.id.action_mainSettingsFragment_to_imageSettingFragment + R.id.notificationSettings -> R.id.action_mainSettingsFragment_to_notificationSettingsFragment + R.id.otherSettings -> R.id.action_mainSettingsFragment_to_otherSettingsFragment + R.id.aboutSettings -> R.id.action_mainSettingsFragment_to_aboutActivity + R.id.nowPlayingSettings -> R.id.action_mainSettingsFragment_to_nowPlayingSettingsFragment + R.id.backup_restore_settings -> R.id.action_mainSettingsFragment_to_backupFragment + else -> R.id.action_mainSettingsFragment_to_themeSettingsFragment + } + ) } override fun onCreateView( diff --git a/app/src/main/java/code/name/monkey/retromusic/transform/HingeTransformation.kt b/app/src/main/java/code/name/monkey/retromusic/transform/HingeTransformation.kt index 9dc2fedcf..0006309e4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/transform/HingeTransformation.kt +++ b/app/src/main/java/code/name/monkey/retromusic/transform/HingeTransformation.kt @@ -15,6 +15,7 @@ package code.name.monkey.retromusic.transform import android.view.View +import androidx.core.view.isVisible import androidx.viewpager.widget.ViewPager import kotlin.math.abs @@ -33,22 +34,22 @@ class HingeTransformation : ViewPager.PageTransformer { // The Page is off-screen but it may still interfere with // click events of current page if // it's visibility is not set to Gone - page.visibility = View.GONE + page.isVisible = false } position <= 0 -> { // [-1,0] page.rotation = 90 * abs(position) page.alpha = 1 - abs(position) - page.visibility = View.VISIBLE + page.isVisible = true } position <= 1 -> { // (0,1] page.rotation = 0f page.alpha = 1f - page.visibility = View.VISIBLE + page.isVisible = true } else -> { // (1,+Infinity] // This page is way off-screen to the right. page.alpha = 0f - page.visibility = View.GONE + page.isVisible = false } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/transform/HorizontalFlipTransformation.kt b/app/src/main/java/code/name/monkey/retromusic/transform/HorizontalFlipTransformation.kt index f96a2109c..4752430cb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/transform/HorizontalFlipTransformation.kt +++ b/app/src/main/java/code/name/monkey/retromusic/transform/HorizontalFlipTransformation.kt @@ -15,6 +15,8 @@ package code.name.monkey.retromusic.transform import android.view.View +import androidx.core.view.isInvisible +import androidx.core.view.isVisible import androidx.viewpager.widget.ViewPager import kotlin.math.abs @@ -25,9 +27,9 @@ class HorizontalFlipTransformation : ViewPager.PageTransformer { page.cameraDistance = 20000f if (position < 0.5 && position > -0.5) { - page.visibility = View.VISIBLE + page.isVisible = true } else { - page.visibility = View.INVISIBLE + page.isInvisible = true } diff --git a/app/src/main/java/code/name/monkey/retromusic/transform/VerticalFlipTransformation.kt b/app/src/main/java/code/name/monkey/retromusic/transform/VerticalFlipTransformation.kt index dba0946b5..ee87d3ecc 100644 --- a/app/src/main/java/code/name/monkey/retromusic/transform/VerticalFlipTransformation.kt +++ b/app/src/main/java/code/name/monkey/retromusic/transform/VerticalFlipTransformation.kt @@ -15,6 +15,8 @@ package code.name.monkey.retromusic.transform import android.view.View +import androidx.core.view.isInvisible +import androidx.core.view.isVisible import androidx.viewpager.widget.ViewPager import kotlin.math.abs @@ -25,9 +27,9 @@ class VerticalFlipTransformation : ViewPager.PageTransformer { page.cameraDistance = 100000f if (position < 0.5 && position > -0.5) { - page.visibility = View.VISIBLE + page.isVisible = true } else { - page.visibility = View.INVISIBLE + page.isInvisible = true } diff --git a/app/src/main/java/code/name/monkey/retromusic/views/BottomNavigationBarTinted.kt b/app/src/main/java/code/name/monkey/retromusic/views/BottomNavigationBarTinted.kt index 03533bf13..78dcef3a0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/BottomNavigationBarTinted.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/BottomNavigationBarTinted.kt @@ -23,7 +23,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.NavigationViewUtil import code.name.monkey.retromusic.util.PreferenceUtil import com.google.android.material.bottomnavigation.BottomNavigationView -import java.lang.RuntimeException +import dev.chrisbanes.insetter.applyInsetter class BottomNavigationBarTinted @JvmOverloads constructor( context: Context, @@ -39,6 +39,12 @@ class BottomNavigationBarTinted @JvmOverloads constructor( setOnApplyWindowInsetsListener { _, insets -> insets } + } else { + applyInsetter { + type(navigationBars = true) { + padding() + } + } } labelVisibilityMode = PreferenceUtil.tabTitleMode diff --git a/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsRecyclerView.kt b/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsRecyclerView.kt index 3f56b8f80..ebb6bf055 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsRecyclerView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsRecyclerView.kt @@ -4,6 +4,7 @@ import android.content.Context import android.util.AttributeSet import androidx.annotation.Px import androidx.recyclerview.widget.RecyclerView +import code.name.monkey.retromusic.R import code.name.monkey.retromusic.extensions.drawAboveSystemBarsWithPadding import code.name.monkey.retromusic.util.RetroUtil @@ -24,6 +25,9 @@ class InsetsRecyclerView @JvmOverloads constructor( @Px bottom: Int = paddingBottom ) { setPadding(left, top, right, bottom) + // Insetter saves initial state i.e. initial padding/margin of the view, + // we just clear it for now + setTag(R.id.insetter_initial_state, null) if (!RetroUtil.isLandscape()) drawAboveSystemBarsWithPadding() }