mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
improvements to expanded rounded sheets
This commit is contained in:
parent
3007210b85
commit
640347f941
3 changed files with 35 additions and 12 deletions
|
@ -118,7 +118,7 @@ class RecentsController(bundle: Bundle? = null) :
|
||||||
private var showingDownloads = false
|
private var showingDownloads = false
|
||||||
var headerHeight = 0
|
var headerHeight = 0
|
||||||
private var ogRadius = 0f
|
private var ogRadius = 0f
|
||||||
private var deviceRadius = 0f
|
private var deviceRadius = 0f to 0f
|
||||||
|
|
||||||
private var query = ""
|
private var query = ""
|
||||||
set(value) {
|
set(value) {
|
||||||
|
@ -198,9 +198,12 @@ class RecentsController(bundle: Bundle? = null) :
|
||||||
setBottomPadding()
|
setBottomPadding()
|
||||||
}
|
}
|
||||||
deviceRadius = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
deviceRadius = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
it.toWindowInsets()?.getRoundedCorner(RoundedCorner.POSITION_TOP_LEFT)?.radius?.toFloat() ?: ogRadius
|
val wInsets = it.toWindowInsets()
|
||||||
|
val lCorner = wInsets?.getRoundedCorner(RoundedCorner.POSITION_TOP_LEFT)
|
||||||
|
val rCorner = wInsets?.getRoundedCorner(RoundedCorner.POSITION_TOP_RIGHT)
|
||||||
|
(lCorner?.radius?.toFloat() ?: 0f) to (rCorner?.radius?.toFloat() ?: 0f)
|
||||||
} else {
|
} else {
|
||||||
ogRadius
|
ogRadius to ogRadius
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onBottomNavUpdate = {
|
onBottomNavUpdate = {
|
||||||
|
|
|
@ -103,7 +103,7 @@ class BrowseController :
|
||||||
var snackbar: Snackbar? = null
|
var snackbar: Snackbar? = null
|
||||||
|
|
||||||
private var ogRadius = 0f
|
private var ogRadius = 0f
|
||||||
private var deviceRadius = 0f
|
private var deviceRadius = 0f to 0f
|
||||||
|
|
||||||
override val mainRecycler: RecyclerView
|
override val mainRecycler: RecyclerView
|
||||||
get() = binding.sourceRecycler
|
get() = binding.sourceRecycler
|
||||||
|
@ -146,9 +146,12 @@ class BrowseController :
|
||||||
setBottomPadding()
|
setBottomPadding()
|
||||||
}
|
}
|
||||||
deviceRadius = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
deviceRadius = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
it.toWindowInsets()?.getRoundedCorner(RoundedCorner.POSITION_TOP_LEFT)?.radius?.toFloat() ?: ogRadius
|
val wInsets = it.toWindowInsets()
|
||||||
|
val lCorner = wInsets?.getRoundedCorner(RoundedCorner.POSITION_TOP_LEFT)
|
||||||
|
val rCorner = wInsets?.getRoundedCorner(RoundedCorner.POSITION_TOP_RIGHT)
|
||||||
|
(lCorner?.radius?.toFloat() ?: 0f) to (rCorner?.radius?.toFloat() ?: 0f)
|
||||||
} else {
|
} else {
|
||||||
ogRadius
|
ogRadius to ogRadius
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onBottomNavUpdate = {
|
onBottomNavUpdate = {
|
||||||
|
|
|
@ -61,6 +61,7 @@ import androidx.recyclerview.widget.RecyclerView.SmoothScroller
|
||||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.google.android.material.card.MaterialCardView
|
import com.google.android.material.card.MaterialCardView
|
||||||
|
import com.google.android.material.math.MathUtils
|
||||||
import com.google.android.material.navigation.NavigationBarItemView
|
import com.google.android.material.navigation.NavigationBarItemView
|
||||||
import com.google.android.material.navigation.NavigationBarMenuView
|
import com.google.android.material.navigation.NavigationBarMenuView
|
||||||
import com.google.android.material.navigation.NavigationBarView
|
import com.google.android.material.navigation.NavigationBarView
|
||||||
|
@ -79,7 +80,6 @@ import eu.kanade.tachiyomi.util.system.rootWindowInsetsCompat
|
||||||
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
|
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
|
||||||
import eu.kanade.tachiyomi.widget.StaggeredGridLayoutManagerAccurateOffset
|
import eu.kanade.tachiyomi.widget.StaggeredGridLayoutManagerAccurateOffset
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
@ -514,15 +514,32 @@ fun TextView.setTextColorAlpha(alpha: Int) {
|
||||||
setTextColor(ColorUtils.setAlphaComponent(currentTextColor, alpha))
|
setTextColor(ColorUtils.setAlphaComponent(currentTextColor, alpha))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun View.updateGradiantBGRadius(ogRadius: Float, deviceRadius: Float, progress: Float, vararg updateOtherViews: View) {
|
fun View.updateGradiantBGRadius(
|
||||||
|
ogRadius: Float,
|
||||||
|
deviceRadius: Pair<Float, Float>,
|
||||||
|
progress: Float,
|
||||||
|
vararg updateOtherViews: View,
|
||||||
|
) {
|
||||||
(background as? GradientDrawable)?.let { drawable ->
|
(background as? GradientDrawable)?.let { drawable ->
|
||||||
val lerp = min(ogRadius, deviceRadius) * (1 - progress) +
|
val hasRail = resources.configuration.screenWidthDp >= 720
|
||||||
max(ogRadius, deviceRadius) * progress
|
val lerpL = MathUtils.lerp(
|
||||||
|
ogRadius,
|
||||||
|
if (hasRail && resources.isLTR) 0f else deviceRadius.first,
|
||||||
|
max(0f, progress),
|
||||||
|
)
|
||||||
|
val lerpR = MathUtils.lerp(
|
||||||
|
ogRadius,
|
||||||
|
if (hasRail && !resources.isLTR) 0f else deviceRadius.second,
|
||||||
|
max(0f, progress),
|
||||||
|
)
|
||||||
drawable.shape = GradientDrawable.RECTANGLE
|
drawable.shape = GradientDrawable.RECTANGLE
|
||||||
drawable.cornerRadii = floatArrayOf(lerp, lerp, lerp, lerp, 0f, 0f, 0f, 0f)
|
drawable.cornerRadii = floatArrayOf(lerpL, lerpL, lerpR, lerpR, 0f, 0f, 0f, 0f)
|
||||||
background = drawable
|
background = drawable
|
||||||
updateOtherViews.forEach {
|
updateOtherViews.forEach {
|
||||||
it.background = drawable
|
(it.background as? GradientDrawable)?.let { tDrawable ->
|
||||||
|
tDrawable.shape = GradientDrawable.RECTANGLE
|
||||||
|
tDrawable.cornerRadii = floatArrayOf(lerpL, lerpL, lerpR, lerpR, 0f, 0f, 0f, 0f)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue