Added hint animation

This commit is contained in:
Agnieszka C
2021-12-01 19:25:13 +01:00
parent f8d4cb387e
commit 0bbe2b054b
3 changed files with 80 additions and 0 deletions

View File

@ -13,6 +13,7 @@ import android.telecom.Call
import android.telecom.CallAudioState
import android.view.MotionEvent
import android.view.WindowManager
import android.widget.ImageView
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.MINUTE_SECONDS
import com.simplemobiletools.commons.helpers.isOreoMr1Plus
@ -47,6 +48,7 @@ class CallActivity : SimpleActivity() {
private val callContactAvatarHelper by lazy { CallContactAvatarHelper(this) }
private val callDurationHelper by lazy { (application as App).callDurationHelper }
private var dragDownX = 0f
private var stopAnimation = false
override fun onCreate(savedInstanceState: Bundle?) {
supportActionBar?.hide()
@ -159,11 +161,30 @@ class CallActivity : SimpleActivity() {
var minDragX = 0f
var maxDragX = 0f
var initialDraggableX = 0f
var initialLeftArrowX = 0f
var initialRightArrowX = 0f
var initialLeftArrowScaleX = 0f
var initialLeftArrowScaleY = 0f
var initialRightArrowScaleX = 0f
var initialRightArrowScaleY = 0f
var leftArrowTranslation = 0f
var rightArrowTranslation = 0f
call_accept.onGlobalLayout {
minDragX = call_decline.left.toFloat()
maxDragX = call_accept.left.toFloat()
initialDraggableX = call_draggable.left.toFloat()
initialLeftArrowX = call_left_arrow.x
initialRightArrowX = call_right_arrow.x
initialLeftArrowScaleX = call_left_arrow.scaleX
initialLeftArrowScaleY = call_left_arrow.scaleY
initialRightArrowScaleX = call_right_arrow.scaleX
initialRightArrowScaleY = call_right_arrow.scaleY
leftArrowTranslation = -call_decline.x
rightArrowTranslation = call_decline.x
startArrowAnimation(call_left_arrow, initialLeftArrowX, initialLeftArrowScaleX, initialLeftArrowScaleY, leftArrowTranslation)
startArrowAnimation(call_right_arrow, initialRightArrowX, initialRightArrowScaleX, initialRightArrowScaleY, rightArrowTranslation)
}
call_draggable.setOnTouchListener { v, event ->
@ -171,6 +192,9 @@ class CallActivity : SimpleActivity() {
MotionEvent.ACTION_DOWN -> {
dragDownX = event.x
call_draggable_background.animate().alpha(0f)
stopAnimation = true
call_left_arrow.animate().alpha(0f)
call_right_arrow.animate().alpha(0f)
}
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
dragDownX = 0f
@ -178,6 +202,11 @@ class CallActivity : SimpleActivity() {
call_draggable_background.animate().alpha(0.2f)
}
call_draggable.setImageDrawable(getDrawable(R.drawable.ic_phone_down_vector))
call_left_arrow.animate().alpha(1f)
call_right_arrow.animate().alpha(1f)
stopAnimation = false
startArrowAnimation(call_left_arrow, initialLeftArrowX, initialLeftArrowScaleX, initialLeftArrowScaleY, leftArrowTranslation)
startArrowAnimation(call_right_arrow, initialRightArrowX, initialRightArrowScaleX, initialRightArrowScaleY, rightArrowTranslation)
}
MotionEvent.ACTION_MOVE -> {
call_draggable.x = Math.min(maxDragX, Math.max(minDragX, event.rawX - dragDownX))
@ -203,6 +232,26 @@ class CallActivity : SimpleActivity() {
}
}
private fun startArrowAnimation(arrow: ImageView, initialX: Float, initialScaleX: Float, initialScaleY: Float, translation: Float) {
arrow.apply {
alpha = 1f
x = initialX
scaleX = initialScaleX
scaleY = initialScaleY
animate()
.alpha(0f)
.translationX(translation)
.scaleXBy(-0.5f)
.scaleYBy(-0.5f)
.setDuration(1000)
.withEndAction {
if (!stopAnimation) {
startArrowAnimation(this, initialX, initialScaleX, initialScaleY, translation)
}
}
}
}
private fun dialpadPressed(char: Char) {
CallManager.keypad(char)
dialpad_input.addCharacter(char)