diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index 3ed9bbc1af..d28ca345fc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -248,7 +248,11 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe } override fun onMicrophoneButtonUp(event: MotionEvent) { - resetVoiceMessageUI() + if (isValidLockViewLocation(event.rawX.roundToInt(), event.rawY.roundToInt())) { + inputBarRecordingView.lock() + } else { + resetVoiceMessageUI() + } } private fun resetVoiceMessageUI() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/input_bar/InputBarRecordingView.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/input_bar/InputBarRecordingView.kt index 4293740d47..371bac3ae3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/input_bar/InputBarRecordingView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/input_bar/InputBarRecordingView.kt @@ -7,12 +7,12 @@ import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.widget.RelativeLayout +import androidx.core.content.res.ResourcesCompat import androidx.core.view.isVisible import kotlinx.android.synthetic.main.view_input_bar_recording.view.* import network.loki.messenger.R import org.thoughtcrime.securesms.loki.utilities.animateSizeChange import org.thoughtcrime.securesms.loki.utilities.disableClipping -import org.thoughtcrime.securesms.loki.utilities.toDp import org.thoughtcrime.securesms.loki.utilities.toPx class InputBarRecordingView : RelativeLayout { @@ -78,4 +78,21 @@ class InputBarRecordingView : RelativeLayout { } animation.start() } + + fun lock() { + val fadeOutAnimation = ValueAnimator.ofObject(FloatEvaluator(), 1.0f, 0.0f) + fadeOutAnimation.duration = 250L + fadeOutAnimation.addUpdateListener { animator -> + inputBarMiddleContentContainer.alpha = animator.animatedValue as Float + lockView.alpha = animator.animatedValue as Float + } + fadeOutAnimation.start() + val fadeInAnimation = ValueAnimator.ofObject(FloatEvaluator(), 0.0f, 1.0f) + fadeInAnimation.duration = 250L + fadeInAnimation.addUpdateListener { animator -> + inputBarCancelButton.alpha = animator.animatedValue as Float + } + fadeInAnimation.start() + recordButtonOverlayImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_arrow_up, context.theme)) + } } diff --git a/app/src/main/res/layout/view_input_bar_recording.xml b/app/src/main/res/layout/view_input_bar_recording.xml index d53bbdd48c..f36b6ab734 100644 --- a/app/src/main/res/layout/view_input_bar_recording.xml +++ b/app/src/main/res/layout/view_input_bar_recording.xml @@ -79,6 +79,19 @@ + + + +