From 23ad21dc85e236804344fcca9baf81a03d68a0a9 Mon Sep 17 00:00:00 2001 From: Naveen Date: Wed, 9 Nov 2022 11:58:02 +0530 Subject: [PATCH] Animate the dialpad --- .../dialer/activities/CallActivity.kt | 28 +++++++++++++++++-- app/src/main/res/layout/activity_call.xml | 2 +- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt index ce5b0ab4..ff21a4b7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt @@ -17,6 +17,7 @@ import android.telecom.CallAudioState import android.view.MotionEvent import android.view.View import android.view.WindowManager +import android.view.animation.AccelerateDecelerateInterpolator import android.view.animation.OvershootInterpolator import android.widget.ImageView import androidx.core.view.children @@ -55,6 +56,7 @@ class CallActivity : SimpleActivity() { private var dragDownX = 0f private var stopAnimation = false private var viewsUnderDialpad = arrayListOf>() + private var dialpadHeight = 0f override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -213,6 +215,10 @@ class CallActivity : SimpleActivity() { call_sim_id.setTextColor(getProperTextColor().getContrastColor()) dialpad_input.disableKeyboard() + + dialpad_wrapper.onGlobalLayout { + dialpadHeight = dialpad_wrapper.height.toFloat() + } } @SuppressLint("ClickableViewAccessibility") @@ -410,7 +416,18 @@ class CallActivity : SimpleActivity() { } private fun showDialpad() { - dialpad_wrapper.animate().withStartAction { dialpad_wrapper.beVisible() }.alpha(1f) + dialpad_wrapper.apply { + translationY = dialpadHeight + alpha = 0f + animate() + .withStartAction { beVisible() } + .setInterpolator(AccelerateDecelerateInterpolator()) + .setDuration(200L) + .alpha(1f) + .translationY(0f) + .start() + } + viewsUnderDialpad.clear() viewsUnderDialpad.addAll(findVisibleViewsUnderDialpad()) viewsUnderDialpad.forEach { (view, _) -> @@ -422,7 +439,14 @@ class CallActivity : SimpleActivity() { } private fun hideDialpad() { - dialpad_wrapper.animate().alpha(0f).withEndAction { dialpad_wrapper.beGone() }.duration = 150L + dialpad_wrapper.animate() + .withEndAction { dialpad_wrapper.beGone() } + .setInterpolator(AccelerateDecelerateInterpolator()) + .setDuration(200L) + .alpha(0f) + .translationY(dialpadHeight) + .start() + viewsUnderDialpad.forEach { (view, alpha) -> view.run { animate().withStartAction { beVisible() }.setInterpolator(OvershootInterpolator()).scaleX(1f).alpha(alpha).duration = 250L diff --git a/app/src/main/res/layout/activity_call.xml b/app/src/main/res/layout/activity_call.xml index 1e825e09..ad65c6da 100644 --- a/app/src/main/res/layout/activity_call.xml +++ b/app/src/main/res/layout/activity_call.xml @@ -429,7 +429,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:visibility="gone" + android:visibility="invisible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent">