diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-08-18 09:39:37 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-08-18 09:39:37 -0300 |
| commit | bd942f2319d9b231201b8ad4756f5e71b2c30a79 (patch) | |
| tree | f6b6357b49d56022ff0b38035d2ff382e5de9fc5 /android/src | |
| parent | 158bcf32c330474d313715746550ab2469f02a8f (diff) | |
| parent | 52e9c26e21e8b82db19d029b3c1ae9c157ddf34d (diff) | |
| download | mullvadvpn-bd942f2319d9b231201b8ad4756f5e71b2c30a79.tar.xz mullvadvpn-bd942f2319d9b231201b8ad4756f5e71b2c30a79.zip | |
Merge branch 'fix-cell-switch'
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CellSwitch.kt | 24 | ||||
| -rw-r--r-- | android/src/main/res/values/dimensions.xml | 8 |
2 files changed, 19 insertions, 13 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CellSwitch.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CellSwitch.kt index dee5c59e49..e3dfc81314 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CellSwitch.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CellSwitch.kt @@ -12,6 +12,7 @@ import android.view.Gravity import android.view.MotionEvent import android.widget.ImageView import android.widget.LinearLayout +import kotlin.properties.Delegates.observable import net.mullvad.mullvadvpn.R class CellSwitch : LinearLayout { @@ -20,14 +21,13 @@ class CellSwitch : LinearLayout { OFF } - var state = State.OFF - set(value) { - if (field != value) { - field = value - animateToState() - listener?.invoke(value) - } + var state by observable(State.OFF) { _, oldState, newState -> + animateToState() + + if (oldState != newState) { + listener?.invoke(newState) } + } var listener: ((State) -> Unit)? = null @@ -56,6 +56,8 @@ class CellSwitch : LinearLayout { private val knobPosition: Float get() = knobView.translationX / knobMaxTranslation + private var animationIsReversed = false + private val positionAnimation = ValueAnimator.ofFloat(0f, knobMaxTranslation).apply { addUpdateListener { animation -> knobView.translationX = animation.animatedValue as Float @@ -213,12 +215,16 @@ class CellSwitch : LinearLayout { when (state) { State.ON -> { + animationIsReversed = false colorAnimation.start() positionAnimation.start() } State.OFF -> { - colorAnimation.reverse() - positionAnimation.reverse() + if (!animationIsReversed || !colorAnimation.isRunning()) { + animationIsReversed = true + colorAnimation.reverse() + positionAnimation.reverse() + } playTime = knobAnimationDuration - playTime } diff --git a/android/src/main/res/values/dimensions.xml b/android/src/main/res/values/dimensions.xml index edf6716d50..57957c94e6 100644 --- a/android/src/main/res/values/dimensions.xml +++ b/android/src/main/res/values/dimensions.xml @@ -9,11 +9,11 @@ <dimen name="normal_button_height">44dp</dimen> <dimen name="tall_button_height">64dp</dimen> <dimen name="cell_switch_border_radius">16dp</dimen> - <dimen name="cell_switch_width">52dp</dimen> - <dimen name="cell_switch_height">32dp</dimen> + <dimen name="cell_switch_width">48dp</dimen> + <dimen name="cell_switch_height">30dp</dimen> <dimen name="cell_switch_knob_margin">4dp</dimen> - <dimen name="cell_switch_knob_max_translation">20dp</dimen> - <dimen name="cell_switch_knob_size">24dp</dimen> + <dimen name="cell_switch_knob_max_translation">18dp</dimen> + <dimen name="cell_switch_knob_size">22dp</dimen> <dimen name="settings_back_button_padding">12dp</dimen> <dimen name="cell_horizontal_padding">@dimen/side_margin</dimen> <dimen name="cell_inner_spacing">8dp</dimen> |
