Animate the dialpad

This commit is contained in:
Naveen
2022-11-09 11:58:02 +05:30
parent 5751789b86
commit 23ad21dc85
2 changed files with 27 additions and 3 deletions

View File

@@ -17,6 +17,7 @@ import android.telecom.CallAudioState
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.view.animation.AccelerateDecelerateInterpolator
import android.view.animation.OvershootInterpolator import android.view.animation.OvershootInterpolator
import android.widget.ImageView import android.widget.ImageView
import androidx.core.view.children import androidx.core.view.children
@@ -55,6 +56,7 @@ class CallActivity : SimpleActivity() {
private var dragDownX = 0f private var dragDownX = 0f
private var stopAnimation = false private var stopAnimation = false
private var viewsUnderDialpad = arrayListOf<Pair<View, Float>>() private var viewsUnderDialpad = arrayListOf<Pair<View, Float>>()
private var dialpadHeight = 0f
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@@ -213,6 +215,10 @@ class CallActivity : SimpleActivity() {
call_sim_id.setTextColor(getProperTextColor().getContrastColor()) call_sim_id.setTextColor(getProperTextColor().getContrastColor())
dialpad_input.disableKeyboard() dialpad_input.disableKeyboard()
dialpad_wrapper.onGlobalLayout {
dialpadHeight = dialpad_wrapper.height.toFloat()
}
} }
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
@@ -410,7 +416,18 @@ class CallActivity : SimpleActivity() {
} }
private fun showDialpad() { 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.clear()
viewsUnderDialpad.addAll(findVisibleViewsUnderDialpad()) viewsUnderDialpad.addAll(findVisibleViewsUnderDialpad())
viewsUnderDialpad.forEach { (view, _) -> viewsUnderDialpad.forEach { (view, _) ->
@@ -422,7 +439,14 @@ class CallActivity : SimpleActivity() {
} }
private fun hideDialpad() { 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) -> viewsUnderDialpad.forEach { (view, alpha) ->
view.run { view.run {
animate().withStartAction { beVisible() }.setInterpolator(OvershootInterpolator()).scaleX(1f).alpha(alpha).duration = 250L animate().withStartAction { beVisible() }.setInterpolator(OvershootInterpolator()).scaleX(1f).alpha(alpha).duration = 250L

View File

@@ -429,7 +429,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone" android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent">