From 2b9eb789e8cd9417fc2a0c2e7984b6982a56c92f Mon Sep 17 00:00:00 2001 From: Antoine POPINEAU Date: Wed, 24 Jun 2020 16:04:36 +0200 Subject: [PATCH] Changed style for main shuffle button to be less conspicuous. --- .../apognu/otter/fragments/AlbumsFragment.kt | 20 ++++- .../apognu/otter/views/ExplodeReveal.kt | 79 ------------------- .../github/apognu/otter/views/LoaderViews.kt | 24 ------ .../main/res/layout-land/fragment_albums.xml | 9 ++- .../main/res/layout-land/fragment_tracks.xml | 11 ++- app/src/main/res/layout/fragment_albums.xml | 9 ++- .../main/res/layout/fragment_favorites.xml | 10 ++- app/src/main/res/layout/fragment_tracks.xml | 10 ++- 8 files changed, 49 insertions(+), 123 deletions(-) delete mode 100644 app/src/main/java/com/github/apognu/otter/views/ExplodeReveal.kt diff --git a/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt index d3eab79..750823b 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt @@ -1,13 +1,20 @@ package com.github.apognu.otter.fragments import android.content.Context +import android.graphics.Rect +import android.graphics.drawable.Drawable import android.os.Bundle +import android.text.SpannableString +import android.text.Spanned +import android.text.style.DynamicDrawableSpan import android.view.View import android.view.animation.AccelerateDecelerateInterpolator import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat import androidx.core.os.bundleOf import androidx.fragment.app.Fragment import androidx.recyclerview.widget.RecyclerView +import androidx.swiperefreshlayout.widget.CircularProgressDrawable import androidx.transition.Fade import androidx.transition.Slide import com.github.apognu.otter.R @@ -115,7 +122,15 @@ class AlbumsFragment : FunkwhaleFragment() { artist.text = artistName play.setOnClickListener { - val loaderAnimation = LoadingFlotingActionButton.start(play) + val loader = CircularProgressDrawable(requireContext()).apply { + setColorSchemeColors(ContextCompat.getColor(requireContext(), android.R.color.white)) + strokeWidth = 4f + } + + loader.start() + + play.icon = loader + play.isClickable = false GlobalScope.launch(IO) { artistTracksRepository.fetch(Repository.Origin.Network.origin) @@ -127,7 +142,8 @@ class AlbumsFragment : FunkwhaleFragment() { CommandBus.send(Command.ReplaceQueue(it)) withContext(Main) { - LoadingFlotingActionButton.stop(play, loaderAnimation) + play.icon = requireContext().getDrawable(R.drawable.play) + play.isClickable = true } } } diff --git a/app/src/main/java/com/github/apognu/otter/views/ExplodeReveal.kt b/app/src/main/java/com/github/apognu/otter/views/ExplodeReveal.kt deleted file mode 100644 index 33b553f..0000000 --- a/app/src/main/java/com/github/apognu/otter/views/ExplodeReveal.kt +++ /dev/null @@ -1,79 +0,0 @@ -package com.github.apognu.otter.views - -import android.animation.Animator -import android.animation.ObjectAnimator -import android.graphics.Rect -import android.view.View -import android.view.ViewGroup -import androidx.transition.TransitionValues -import androidx.transition.Visibility - -class ExplodeReveal : Visibility() { - private val SCREEN_BOUNDS = "screenBounds" - - private val locations = IntArray(2) - - override fun captureStartValues(transitionValues: TransitionValues) { - super.captureStartValues(transitionValues) - - capture(transitionValues) - } - - override fun captureEndValues(transitionValues: TransitionValues) { - super.captureEndValues(transitionValues) - - capture(transitionValues) - } - - override fun onAppear(sceneRoot: ViewGroup, view: View, startValues: TransitionValues?, endValues: TransitionValues?): Animator? { - if (endValues == null) return null - - val bounds = endValues.values[SCREEN_BOUNDS] as Rect - - val endY = view.translationY - val distance = calculateDistance(sceneRoot, bounds) - val startY = endY + distance - - return ObjectAnimator.ofFloat(view, View.TRANSLATION_Y, startY, endY) - } - - override fun onDisappear(sceneRoot: ViewGroup, view: View, startValues: TransitionValues?, endValues: TransitionValues?): Animator? { - if (startValues == null) return null - - val bounds = startValues.values[SCREEN_BOUNDS] as Rect - - val startY = view.translationY - val distance = calculateDistance(sceneRoot, bounds) - val endY = startY + distance - - return ObjectAnimator.ofFloat(view, View.TRANSLATION_Y, startY, endY) - } - - private fun capture(transitionValues: TransitionValues) { - transitionValues.view.also { - it.getLocationOnScreen(locations) - - val left = locations[0] - val top = locations[1] - val right = left + it.width - val bottom = top + it.height - - transitionValues.values[SCREEN_BOUNDS] = Rect(left, top, right, bottom) - } - } - - private fun calculateDistance(sceneRoot: View, viewBounds: Rect): Int { - sceneRoot.getLocationOnScreen(locations) - - val sceneRootY = locations[1] - - return when (epicenter) { - is Rect -> return when { - viewBounds.top <= (epicenter as Rect).top -> sceneRootY - (epicenter as Rect).top - else -> sceneRootY + sceneRoot.height - (epicenter as Rect).bottom - } - - else -> -sceneRoot.height - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/github/apognu/otter/views/LoaderViews.kt b/app/src/main/java/com/github/apognu/otter/views/LoaderViews.kt index 9cf27ea..dac349a 100644 --- a/app/src/main/java/com/github/apognu/otter/views/LoaderViews.kt +++ b/app/src/main/java/com/github/apognu/otter/views/LoaderViews.kt @@ -6,30 +6,6 @@ import android.graphics.drawable.Drawable import android.view.View import android.widget.ImageView import com.github.apognu.otter.R -import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton - -object LoadingFlotingActionButton { - fun start(button: ExtendedFloatingActionButton): ObjectAnimator { - button.isEnabled = false - button.setIconResource(R.drawable.fab_spinner) - button.shrink() - - return ObjectAnimator.ofFloat(button, View.ROTATION, 0f, 360f).apply { - duration = 500 - repeatCount = ObjectAnimator.INFINITE - start() - } - } - - fun stop(button: ExtendedFloatingActionButton, animator: ObjectAnimator) { - animator.cancel() - - button.isEnabled = true - button.setIconResource(R.drawable.play) - button.rotation = 0.0f - button.extend() - } -} object LoadingImageView { fun start(context: Context?, image: ImageView): ObjectAnimator? { diff --git a/app/src/main/res/layout-land/fragment_albums.xml b/app/src/main/res/layout-land/fragment_albums.xml index 47c2a1b..3c23543 100644 --- a/app/src/main/res/layout-land/fragment_albums.xml +++ b/app/src/main/res/layout-land/fragment_albums.xml @@ -56,20 +56,23 @@ app:layout_constraintVertical_bias="0" tools:src="@tools:sample/avatars" /> - + app:layout_constraintTop_toBottomOf="@id/cover" + app:rippleColor="@color/ripple" /> diff --git a/app/src/main/res/layout-land/fragment_tracks.xml b/app/src/main/res/layout-land/fragment_tracks.xml index 6ab0168..75daaa4 100644 --- a/app/src/main/res/layout-land/fragment_tracks.xml +++ b/app/src/main/res/layout-land/fragment_tracks.xml @@ -40,7 +40,7 @@ - + app:layout_constraintTop_toBottomOf="@id/cover" + app:rippleColor="@color/ripple" /> diff --git a/app/src/main/res/layout/fragment_albums.xml b/app/src/main/res/layout/fragment_albums.xml index 14a1ffe..298b5fc 100644 --- a/app/src/main/res/layout/fragment_albums.xml +++ b/app/src/main/res/layout/fragment_albums.xml @@ -54,20 +54,23 @@ app:layout_constraintVertical_bias="0" tools:src="@tools:sample/avatars" /> - + app:layout_constraintTop_toBottomOf="@id/cover" + app:rippleColor="@color/ripple" /> diff --git a/app/src/main/res/layout/fragment_favorites.xml b/app/src/main/res/layout/fragment_favorites.xml index 2ab0db0..ce07731 100644 --- a/app/src/main/res/layout/fragment_favorites.xml +++ b/app/src/main/res/layout/fragment_favorites.xml @@ -49,18 +49,20 @@ android:layout_marginBottom="16dp" android:text="@string/favorites" /> - + app:iconTint="@android:color/white" + app:rippleColor="@color/ripple" /> diff --git a/app/src/main/res/layout/fragment_tracks.xml b/app/src/main/res/layout/fragment_tracks.xml index 55f98d7..94b55c9 100644 --- a/app/src/main/res/layout/fragment_tracks.xml +++ b/app/src/main/res/layout/fragment_tracks.xml @@ -58,7 +58,7 @@ android:id="@+id/covers" android:layout_width="match_parent" android:layout_height="250dp" - android:padding="8dp" + android:layout_margin="8dp" android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -131,12 +131,13 @@ - + app:layout_constraintTop_toBottomOf="@id/cover" + app:rippleColor="@color/ripple" />