mihon/app/src/main/java/eu/kanade/tachiyomi/widget/ElevationAppBarLayout.kt
arkon 78689e7443
Migrate to AndroidX (#2424)
* Migrate to AndroidX (automatic conversion by Android Studio)

* AndroidX dependency code updates

* Fix source preference reparenting

* fixes the androidx prefererences icon spacing issue

(cherry picked from commit b76a15d960ec2cdf771be16377db0348b66b3179)

* Fix source preference screen heading size/list padding

Co-authored-by: Carlos <cargo8005@gmail.com>
2020-01-05 11:29:27 -05:00

48 lines
1.4 KiB
Kotlin

package eu.kanade.tachiyomi.widget
import android.animation.ObjectAnimator
import android.animation.StateListAnimator
import android.content.Context
import android.os.Build
import com.google.android.material.R
import com.google.android.material.appbar.AppBarLayout
import android.util.AttributeSet
class ElevationAppBarLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null
) : AppBarLayout(context, attrs) {
private var origStateAnimator: StateListAnimator? = null
init {
if (Build.VERSION.SDK_INT >= 21) {
origStateAnimator = stateListAnimator
}
}
fun enableElevation() {
if (Build.VERSION.SDK_INT >= 21) {
stateListAnimator = origStateAnimator
}
}
fun disableElevation() {
if (Build.VERSION.SDK_INT >= 21) {
stateListAnimator = StateListAnimator().apply {
val objAnimator = ObjectAnimator.ofFloat(this, "elevation", 0f)
// Enabled and collapsible, but not collapsed means not elevated
addState(intArrayOf(android.R.attr.enabled, R.attr.state_collapsible, -R.attr.state_collapsed),
objAnimator)
// Default enabled state
addState(intArrayOf(android.R.attr.enabled), objAnimator)
// Disabled state
addState(IntArray(0), objAnimator)
}
}
}
}