add drop shadow to controller view when going back

adds some depth, as shadows do
This commit is contained in:
Jays2Kings 2023-10-18 14:56:14 -07:00
parent 8ae9b09d68
commit 3128bea6bc
6 changed files with 51 additions and 1 deletions

View file

@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.main
import android.Manifest
import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.app.Dialog
@ -526,6 +527,21 @@ open class MainActivity : BaseActivity<MainActivityBinding>() {
syncActivityViewWithController(to, from, isPush)
binding.appBar.isVisible = true
binding.appBar.alpha = 1f
if (binding.backShadow.isVisible && !isPush) {
val alpha = binding.backShadow.alpha
val bA = ObjectAnimator.ofFloat(binding.backShadow, View.ALPHA, alpha, 0f)
from?.view?.let { view ->
bA.addUpdateListener {
binding.backShadow.x = view.x - binding.backShadow.width
}
}
bA.doOnEnd {
binding.backShadow.alpha = 0.25f
binding.backShadow.isVisible = false
}
bA.duration = 150
bA.start()
}
if (!isPush || router.backstackSize == 1) {
nav.translationY = 0f
}

View file

@ -887,6 +887,21 @@ interface BackHandlerControllerInterface {
view?.let { view ->
view.alpha = 1f - progress
view.x = progress * view.width * 0.15f
activityBinding?.let { activityBinding ->
val container = activityBinding.controllerContainer
val backShadow = activityBinding.backShadow
if (container.indexOfChild(backShadow) != container.indexOfChild(view) - 1) {
container.removeView(backShadow)
container.addView(backShadow, container.indexOfChild(view))
}
if (!backShadow.isVisible) {
backShadow.isVisible = true
}
backShadow.x = view.x - backShadow.width
backShadow.alpha = 0.33f * view.alpha
}
router.backstack[router.backstackSize - 2].controller.view?.let { view2 ->
view2.alpha = progress
view2.x = view.x - view.width * 0.2f
@ -906,5 +921,7 @@ interface BackHandlerControllerInterface {
view.x = 0f
}
}
activityBinding?.backShadow?.isVisible = false
activityBinding?.backShadow?.alpha = 0.25f
}
}

View file

@ -17,7 +17,14 @@
app:layout_constraintStart_toEndOf="@id/side_nav"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0">
<ImageView
android:id="@+id/back_shadow"
android:layout_width="6dp"
android:alpha="0.25"
android:visibility="gone"
android:layout_height="match_parent"
android:src="@drawable/shape_gradient_start_shadow"
android:importantForAccessibility="no" />
</com.bluelinelabs.conductor.ChangeHandlerFrameLayout>
<eu.kanade.tachiyomi.ui.base.ExpandedAppBarLayout

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/coordinator"
android:background="?background"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<androidx.recyclerview.widget.RecyclerView

View file

@ -18,6 +18,14 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
<ImageView
android:id="@+id/back_shadow"
android:layout_width="6dp"
android:alpha="0.25"
android:visibility="gone"
android:layout_height="match_parent"
android:src="@drawable/shape_gradient_start_shadow"
android:importantForAccessibility="no" />
</com.bluelinelabs.conductor.ChangeHandlerFrameLayout>
<eu.kanade.tachiyomi.ui.base.ExpandedAppBarLayout

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:background="?background"
android:layout_width="match_parent"
android:layout_height="wrap_content">