作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
有人设法为 BottomSheet peekHeight 设置动画吗?
我目前正在做以下事情:
bottom_sheet?.let {
val behavior = BottomSheetBehavior.from(bottom_sheet)
behavior.peekHeight = 500
behavior.state = BottomSheetBehavior.STATE_COLLAPSED
}
Bottom Sheet 窥视高度已更改,但我想要一个动画,例如当您将状态从 STATE_COLLAPSED
更改为 STATE_EXPANDED
时。
最佳答案
我能够通过使用 RxJava 和 Interval 来完成这个任务。每 15 毫秒运行一次并在每次间隔发生时更改 peekHeight 的运算符。
val interpolator = AccelerateDecelerateInterpolator()
val refreshInterval = 20L
val refreshCount = 15L
val totalRefreshTime = (refreshInterval * refreshCount).toFloat()
val startingHeight = bottomSheetBehavior.peekHeight
animationDisposable = Observable.interval(refreshInterval, TimeUnit.MILLISECONDS)
.take(refreshCount)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ count: Long ->
if (show) {
val height = (startingHeight + (maxPeekHeight - minPeekHeight) *
interpolator.getInterpolation((count * refreshInterval) / totalRefreshTime)).toInt()
if (height > maxPeekHeight) {
bottomSheetBehavior.peekHeight = maxPeekHeight
} else {
bottomSheetBehavior.peekHeight = height
}
} else {
val height = (startingHeight - (maxPeekHeight - minPeekHeight) *
interpolator.getInterpolation((count * refreshInterval) / totalRefreshTime)).toInt()
if (height < minPeekHeight) {
bottomSheetBehavior.peekHeight = minPeekHeight
} else {
bottomSheetBehavior.peekHeight = height
}
}
}, { _: Throwable ->
//do something here to reset peek height to original
})
关于android - 动态地为 BottomSheet peekHeight 设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47080589/
在我的应用程序中,我有一个 Bottom Sheet 和一个使它折叠/展开的按钮。 如果未设置 peekHeight,则 Bottom Sheet 不可拖动且不会折叠,它始终可见。 代码如下:
有人设法为 BottomSheet peekHeight 设置动画吗? 我目前正在做以下事情: bottom_sheet?.let { val behavior
我的BottomSheetBehavior布局看起来像这样: 嵌入到Activity中的CoordinatorLayout中:
我是一名优秀的程序员,十分优秀!