Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ fun setValue(value: PanelState): ViewAction {

override fun perform(uiController: UiController?, view: View) {
val slidingUpPanelLayout = view as SlidingUpPanelLayout
slidingUpPanelLayout.setPanelState(value)
slidingUpPanelLayout.panelState = value
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class DemoActivity : AppCompatActivity() {
}
})
binding.slidingLayout.setFadeOnClickListener {
binding.slidingLayout.setPanelState(PanelState.COLLAPSED)
binding.slidingLayout.panelState = PanelState.COLLAPSED
Log.i(tag, "FadeOnClickListener ${binding.slidingLayout.panelState}")
}
binding.nameMain.text = Html.fromHtml(getString(R.string.hello))
Expand Down Expand Up @@ -116,10 +116,10 @@ class DemoActivity : AppCompatActivity() {
when (item.itemId) {
R.id.action_toggle -> {
if (binding.slidingLayout.panelState != PanelState.HIDDEN) {
binding.slidingLayout.setPanelState(PanelState.HIDDEN)
binding.slidingLayout.panelState = PanelState.HIDDEN
item.setTitle(R.string.action_show)
} else {
binding.slidingLayout.setPanelState(PanelState.COLLAPSED)
binding.slidingLayout.panelState = PanelState.COLLAPSED
item.setTitle(R.string.action_hide)
}
return true
Expand All @@ -128,11 +128,11 @@ class DemoActivity : AppCompatActivity() {
R.id.action_anchor -> {
if (binding.slidingLayout.anchorPoint == 1.0f) {
binding.slidingLayout.anchorPoint = 0.7f
binding.slidingLayout.setPanelState(PanelState.ANCHORED)
binding.slidingLayout.panelState = PanelState.ANCHORED
item.setTitle(R.string.action_anchor_disable)
} else {
binding.slidingLayout.anchorPoint = 1.0f
binding.slidingLayout.setPanelState(PanelState.COLLAPSED)
binding.slidingLayout.panelState = PanelState.COLLAPSED
item.setTitle(R.string.action_anchor_enable)
}
return true
Expand All @@ -144,7 +144,7 @@ class DemoActivity : AppCompatActivity() {
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
if ((binding.slidingLayout.panelState == PanelState.EXPANDED || binding.slidingLayout.panelState == PanelState.ANCHORED)) {
binding.slidingLayout.setPanelState(PanelState.COLLAPSED)
binding.slidingLayout.panelState = PanelState.COLLAPSED
} else {
super.onBackPressed()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,41 +184,40 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
*/
private var mainView: View? = null

private var slideState: PanelState = DEFAULT_SLIDE_STATE
// private var slideState: PanelState = DEFAULT_SLIDE_STATE

val panelState: PanelState
get() = slideState

fun setPanelState(value: PanelState) {
// Abort any running animation, to allow state change
if (dragHelper?.viewDragState == ViewDragHelper.STATE_SETTLING) {
dragHelper?.abort()
}
require(value !== PanelState.DRAGGING) { "Panel state can't be DRAGGING during state set" }
if (!isEnabled ||
(!firstLayout && (slideableView == null)) ||
(value === slideState) || (slideState === PanelState.DRAGGING)
) return
if (firstLayout) {
setPanelStateInternal(value)
} else {
if (slideState === PanelState.HIDDEN) {
slideableView!!.visibility = VISIBLE
requestLayout()
var panelState: PanelState = DEFAULT_SLIDE_STATE
set(value) {
// Abort any running animation, to allow state change
if (dragHelper?.viewDragState == ViewDragHelper.STATE_SETTLING) {
dragHelper?.abort()
}
when (value) {
PanelState.ANCHORED -> smoothSlideTo(anchorPoint, 0)
PanelState.COLLAPSED -> smoothSlideTo(0f, 0)
PanelState.EXPANDED -> smoothSlideTo(maxSlideOffset, 0)
PanelState.HIDDEN -> {
val newTop = computePanelTopPosition(0.0f) + if (isSlidingUp) +panelHeight else -panelHeight
smoothSlideTo(computeSlideOffset(newTop), 0)
require(value !== PanelState.DRAGGING) { "Panel state can't be DRAGGING during state set" }
if (!isEnabled ||
(!firstLayout && (slideableView == null)) ||
(value === panelState) || (panelState === PanelState.DRAGGING)
) return
if (firstLayout) {
setPanelStateInternal(value)
} else {
if (panelState === PanelState.HIDDEN) {
slideableView!!.visibility = VISIBLE
requestLayout()
}
when (value) {
PanelState.ANCHORED -> smoothSlideTo(anchorPoint, 0)
PanelState.COLLAPSED -> smoothSlideTo(0f, 0)
PanelState.EXPANDED -> smoothSlideTo(maxSlideOffset, 0)
PanelState.HIDDEN -> {
val newTop = computePanelTopPosition(0.0f) + if (isSlidingUp) +panelHeight else -panelHeight
smoothSlideTo(computeSlideOffset(newTop), 0)
}

PanelState.DRAGGING -> Unit
PanelState.DRAGGING -> Unit
}
field = value
}
}
}

/**
* If the current slide state is DRAGGING, this will store the last non dragging state
Expand Down Expand Up @@ -340,7 +339,7 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
clipPanel = ta.getBoolean(R.styleable.SlidingUpPanelLayout_umanoClipPanel, DEFAULT_CLIP_PANEL_FLAG)
anchorPoint = ta.getFloat(R.styleable.SlidingUpPanelLayout_umanoAnchorPoint, DEFAULT_ANCHOR_POINT)
maxSlideOffset = ta.getFloat(R.styleable.SlidingUpPanelLayout_umanoMaxSlidingOffset, DEFAULT_MAX_SLIDING_OFFSET)
slideState = PanelState.entries.toTypedArray()[ta.getInt(R.styleable.SlidingUpPanelLayout_umanoInitialState, DEFAULT_SLIDE_STATE.ordinal)]
panelState = PanelState.entries.toTypedArray()[ta.getInt(R.styleable.SlidingUpPanelLayout_umanoInitialState, DEFAULT_SLIDE_STATE.ordinal)]
val interpolatorResId = ta.getResourceId(R.styleable.SlidingUpPanelLayout_umanoScrollInterpolator, -1)
if (interpolatorResId != -1) {
scrollerInterpolator = AnimationUtils.loadInterpolator(context, interpolatorResId)
Expand Down Expand Up @@ -391,7 +390,7 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
* Set sliding enabled flag
*/
var isTouchEnabled: Boolean
get() = touchEnabled && slideableView != null && slideState !== PanelState.HIDDEN
get() = touchEnabled && slideableView != null && panelState !== PanelState.HIDDEN
set(enabled) {
touchEnabled = enabled
}
Expand Down Expand Up @@ -473,8 +472,8 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
it.isFocusableInTouchMode = false
it.setOnClickListener(OnClickListener {
if (!isEnabled || !isTouchEnabled) return@OnClickListener
slideState =
if (slideState !== PanelState.EXPANDED && slideState !== PanelState.ANCHORED) {
panelState =
if (panelState !== PanelState.EXPANDED && panelState !== PanelState.ANCHORED) {
if (anchorPoint < DEFAULT_ANCHOR_POINT) {
PanelState.ANCHORED
} else {
Expand Down Expand Up @@ -642,7 +641,7 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(

// If the sliding panel is not visible, then put the whole view in the hidden state
if (slideableView?.visibility != VISIBLE) {
slideState = PanelState.HIDDEN
panelState = PanelState.HIDDEN
}
val layoutHeight = heightSize - paddingTop - paddingBottom
val layoutWidth = widthSize - paddingLeft - paddingRight
Expand All @@ -659,7 +658,7 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
var height = layoutHeight
var width = layoutWidth
if (child === mainView) {
if (!overlayContent && slideState !== PanelState.HIDDEN) {
if (!overlayContent && panelState !== PanelState.HIDDEN) {
height -= panelHeight
}
width -= lp.leftMargin + lp.rightMargin
Expand Down Expand Up @@ -706,7 +705,7 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
val paddingTop = paddingTop
val childCount = childCount
if (firstLayout) {
slideOffset = when (slideState) {
slideOffset = when (panelState) {
PanelState.EXPANDED -> maxSlideOffset
PanelState.ANCHORED -> anchorPoint
PanelState.HIDDEN -> {
Expand Down Expand Up @@ -946,9 +945,9 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
}

private fun setPanelStateInternal(state: PanelState) {
if (slideState === state) return
val oldState = slideState
slideState = state
if (panelState === state) return
val oldState = panelState
panelState = state
dispatchOnPanelStateChanged(this, oldState, state)
}

Expand All @@ -964,8 +963,8 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
}

private fun onPanelDragged(newTop: Int) {
if (slideState !== PanelState.DRAGGING) {
lastNotDraggingSlideState = slideState
if (panelState !== PanelState.DRAGGING) {
lastNotDraggingSlideState = panelState
}
setPanelStateInternal(PanelState.DRAGGING)
// Recompute the slide offset based on the new top position
Expand Down Expand Up @@ -1133,7 +1132,7 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
bundle.putParcelable("superState", super.onSaveInstanceState())
bundle.putSerializable(
SLIDING_STATE,
if (slideState !== PanelState.DRAGGING) slideState else lastNotDraggingSlideState
if (panelState !== PanelState.DRAGGING) panelState else lastNotDraggingSlideState
)
return bundle
}
Expand All @@ -1142,7 +1141,7 @@ open class SlidingUpPanelLayout @JvmOverloads constructor(
var parcelable: Parcelable? = state
if (parcelable is Bundle) {
val bundle = parcelable
slideState = requireNotNull(bundle.getSerializable(SLIDING_STATE)) as PanelState
panelState = requireNotNull(bundle.getSerializable(SLIDING_STATE)) as PanelState
parcelable = bundle.getParcelable("superState")
}
super.onRestoreInstanceState(parcelable)
Expand Down
Loading