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 @@
+
+
+
+