Skip to content

Instantly share code, notes, and snippets.

@kettsun0123
Created December 1, 2017 07:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kettsun0123/525dfd337ee26f0801a470449da682fa to your computer and use it in GitHub Desktop.
Save kettsun0123/525dfd337ee26f0801a470449da682fa to your computer and use it in GitHub Desktop.
RxBottomSheetBehavior

RxBottomSheetBehavior

If yout want to get BottomSheet state via rx, you should use this

package xyz.kettsun.sample.widget
import android.support.design.widget.BottomSheetBehavior
import android.view.View
import io.reactivex.subjects.BehaviorSubject
class RxBottomSheetBehavior<V: View>(behavior: BottomSheetBehavior<V>) {
companion object {
fun <V: View>from(view :V): RxBottomSheetBehavior<V> {
val original = BottomSheetBehavior.from(view)
return RxBottomSheetBehavior(original)
}
}
private val originalCallback = object : BottomSheetBehavior.BottomSheetCallback() {
override fun onSlide(bottomSheet: View, slideOffset: Float) {
//no-op
}
override fun onStateChanged(bottomSheet: View, newState: Int) {
state.onNext(newState)
}
}
val state: BehaviorSubject<Int> = BehaviorSubject.createDefault(BottomSheetBehavior.STATE_COLLAPSED)
init {
behavior.setBottomSheetCallback(originalCallback)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment