summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-08-18 09:39:37 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-08-18 09:39:37 -0300
commitbd942f2319d9b231201b8ad4756f5e71b2c30a79 (patch)
treef6b6357b49d56022ff0b38035d2ff382e5de9fc5 /android/src
parent158bcf32c330474d313715746550ab2469f02a8f (diff)
parent52e9c26e21e8b82db19d029b3c1ae9c157ddf34d (diff)
downloadmullvadvpn-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.kt24
-rw-r--r--android/src/main/res/values/dimensions.xml8
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>