diff --git a/mobile/src/main/java/com/github/shadowsocks/utils/Utils.kt b/mobile/src/main/java/com/github/shadowsocks/utils/Utils.kt index e328fcff..95b3b9b7 100644 --- a/mobile/src/main/java/com/github/shadowsocks/utils/Utils.kt +++ b/mobile/src/main/java/com/github/shadowsocks/utils/Utils.kt @@ -9,6 +9,7 @@ import android.support.annotation.AttrRes import android.support.v4.app.Fragment import android.support.v4.app.FragmentManager import android.support.v7.util.SortedList +import android.view.accessibility.AccessibilityManager import android.util.TypedValue import com.github.shadowsocks.App.Companion.app import com.github.shadowsocks.JniHelper @@ -21,6 +22,11 @@ private val fieldChildFragmentManager by lazy { field } +fun isAccessibilityEnabled(context: Context): Boolean { + val am = context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager + return am.isEnabled() +} + fun String.isNumericAddress() = JniHelper.parseNumericAddress(this) != null fun String.parseNumericAddress(): InetAddress? { val addr = JniHelper.parseNumericAddress(this) diff --git a/mobile/src/main/java/com/github/shadowsocks/widget/MoveUpwardBehavior.kt b/mobile/src/main/java/com/github/shadowsocks/widget/MoveUpwardBehavior.kt index c29759c4..1e5b14e0 100644 --- a/mobile/src/main/java/com/github/shadowsocks/widget/MoveUpwardBehavior.kt +++ b/mobile/src/main/java/com/github/shadowsocks/widget/MoveUpwardBehavior.kt @@ -32,6 +32,8 @@ import android.support.v4.view.ViewCompat import android.util.AttributeSet import android.view.View +import com.github.shadowsocks.utils.isAccessibilityEnabled + /** * Full credits go to: https://stackoverflow.com/a/35904421/2245107 */ @@ -40,7 +42,7 @@ class MoveUpwardBehavior : CoordinatorLayout.Behavior { constructor(context: Context, attrs: AttributeSet) : super(context, attrs) override fun layoutDependsOn(parent: CoordinatorLayout, child: View, dependency: View): Boolean = - dependency is Snackbar.SnackbarLayout + dependency is Snackbar.SnackbarLayout override fun onDependentViewChanged(parent: CoordinatorLayout, child: View, dependency: View): Boolean { child.translationY = Math.min(0f, dependency.translationY - dependency.height) @@ -51,21 +53,25 @@ class MoveUpwardBehavior : CoordinatorLayout.Behavior { * Based on BaseTransientBottomBar.animateViewOut (support lib 27.0.2). */ override fun onDependentViewRemoved(parent: CoordinatorLayout, child: View, dependency: View) { - val animator = ValueAnimator() - val start = child.translationY - animator.setFloatValues(start, 0f) - animator.interpolator = SnackbarAnimation.FAST_OUT_SLOW_IN_INTERPOLATOR - animator.duration = SnackbarAnimation.ANIMATION_DURATION - animator.addUpdateListener(object : ValueAnimator.AnimatorUpdateListener { - private var previousValue = start + if (!isAccessibilityEnabled(parent.getContext())) { + val animator = ValueAnimator() + val start = child.translationY + animator.setFloatValues(start, 0f) + animator.interpolator = SnackbarAnimation.FAST_OUT_SLOW_IN_INTERPOLATOR + animator.duration = SnackbarAnimation.ANIMATION_DURATION + animator.addUpdateListener(object : ValueAnimator.AnimatorUpdateListener { + private var previousValue = start - override fun onAnimationUpdate(animator: ValueAnimator) { - val currentValue = animator.animatedValue as Float - if (Build.VERSION.SDK_INT > 19) child.translationY = currentValue - else ViewCompat.offsetTopAndBottom(child, (currentValue - previousValue).toInt()) - previousValue = currentValue - } - }) - animator.start() + override fun onAnimationUpdate(animator: ValueAnimator) { + val currentValue = animator.animatedValue as Float + if (Build.VERSION.SDK_INT > 19) child.translationY = currentValue + else ViewCompat.offsetTopAndBottom(child, (currentValue - previousValue).toInt()) + previousValue = currentValue + } + }) + animator.start() + } else { + child.translationY = 0f + } } } diff --git a/mobile/src/main/res/layout/layout_main.xml b/mobile/src/main/res/layout/layout_main.xml index 6a19589c..47397e14 100644 --- a/mobile/src/main/res/layout/layout_main.xml +++ b/mobile/src/main/res/layout/layout_main.xml @@ -13,8 +13,7 @@ android:id="@+id/fragment_holder" android:background="?android:attr/windowBackground" android:layout_width="match_parent" - android:layout_height="match_parent" - app:layout_behavior="com.github.shadowsocks.widget.BottomMarginBehavior"/> + android:layout_height="match_parent" />