Hide call actions when dialpad is shown

This commit is contained in:
Naveen 2022-06-04 15:06:12 +05:30
parent ebfb981e8d
commit f8b20ad046
1 changed files with 31 additions and 5 deletions

View File

@ -15,8 +15,10 @@ import android.os.PowerManager
import android.telecom.Call import android.telecom.Call
import android.telecom.CallAudioState import android.telecom.CallAudioState
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.widget.ImageView import android.widget.ImageView
import androidx.core.view.children
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.LOWER_ALPHA import com.simplemobiletools.commons.helpers.LOWER_ALPHA
import com.simplemobiletools.commons.helpers.MINUTE_SECONDS import com.simplemobiletools.commons.helpers.MINUTE_SECONDS
@ -31,6 +33,7 @@ import kotlinx.android.synthetic.main.dialpad.*
class CallActivity : SimpleActivity() { class CallActivity : SimpleActivity() {
companion object { companion object {
private const val ANIMATION_DURATION = 250L
fun getStartIntent(context: Context): Intent { fun getStartIntent(context: Context): Intent {
val openAppIntent = Intent(context, CallActivity::class.java) val openAppIntent = Intent(context, CallActivity::class.java)
openAppIntent.flags = Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_REORDER_TO_FRONT openAppIntent.flags = Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
@ -48,6 +51,7 @@ class CallActivity : SimpleActivity() {
private val callDurationHandler = Handler(Looper.getMainLooper()) private val callDurationHandler = Handler(Looper.getMainLooper())
private var dragDownX = 0f private var dragDownX = 0f
private var stopAnimation = false private var stopAnimation = false
private var viewsUnderDialpad = arrayListOf<Pair<View, Float>>()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
supportActionBar?.hide() supportActionBar?.hide()
@ -132,7 +136,7 @@ class CallActivity : SimpleActivity() {
} }
dialpad_close.setOnClickListener { dialpad_close.setOnClickListener {
dialpad_wrapper.beGone() hideDialpad()
} }
call_toggle_hold.setOnClickListener { call_toggle_hold.setOnClickListener {
@ -341,10 +345,32 @@ class CallActivity : SimpleActivity() {
} }
private fun toggleDialpadVisibility() { private fun toggleDialpadVisibility() {
if (dialpad_wrapper.isVisible()) { if (dialpad_wrapper.isVisible()) hideDialpad() else showDialpad()
dialpad_wrapper.beGone() }
} else {
dialpad_wrapper.beVisible() private fun findVisibleViewsUnderDialpad(): Sequence<Pair<View, Float>> {
return ongoing_call_holder.children.filter { it.isVisible() }.map { view -> Pair(view, view.alpha) }
}
private fun showDialpad() {
dialpad_wrapper.animate().withStartAction { dialpad_wrapper.beVisible() }.alpha(1f)
viewsUnderDialpad.clear()
viewsUnderDialpad.addAll(findVisibleViewsUnderDialpad())
viewsUnderDialpad.forEach { (view, _) ->
view.run {
animate().scaleX(0f).alpha(0f).withEndAction { beGone() }.duration = ANIMATION_DURATION
animate().scaleY(0f).alpha(0f).withEndAction { beGone() }.duration = ANIMATION_DURATION
}
}
}
private fun hideDialpad() {
dialpad_wrapper.animate().alpha(0f).withEndAction { dialpad_wrapper.beGone() }
viewsUnderDialpad.forEach { (view, alpha) ->
view.run {
animate().withStartAction { beVisible() }.scaleX(1f).alpha(alpha).duration = ANIMATION_DURATION
animate().withStartAction { beVisible() }.scaleY(1f).alpha(alpha).duration = ANIMATION_DURATION
}
} }
} }