diff --git a/app/src/main/java/org/linphone/activities/voip/fragments/SingleCallFragment.kt b/app/src/main/java/org/linphone/activities/voip/fragments/SingleCallFragment.kt index a84b3653f..58d9168ef 100644 --- a/app/src/main/java/org/linphone/activities/voip/fragments/SingleCallFragment.kt +++ b/app/src/main/java/org/linphone/activities/voip/fragments/SingleCallFragment.kt @@ -23,6 +23,7 @@ import android.app.Dialog import android.content.Intent import android.os.Bundle import android.os.SystemClock +import android.view.MotionEvent import android.view.View import android.widget.Chronometer import androidx.databinding.DataBindingUtil @@ -52,6 +53,39 @@ class SingleCallFragment : GenericFragment() { private var dialog: Dialog? = null + private var previewX: Float = 0f + private var previewY: Float = 0f + private var switchX: Float = 0f + private var switchY: Float = 0f + private val previewTouchListener = View.OnTouchListener { view, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + previewX = view.x - event.rawX + previewY = view.y - event.rawY + switchX = binding.switchCamera.x - event.rawX + switchY = binding.switchCamera.y - event.rawY + true + } + MotionEvent.ACTION_MOVE -> { + view.animate() + .x(event.rawX + previewX) + .y(event.rawY + previewY) + .setDuration(0) + .start() + binding.switchCamera.animate() + .x(event.rawX + switchX) + .y(event.rawY + switchY) + .setDuration(0) + .start() + true + } + else -> { + view.performClick() + false + } + } + } + override fun getLayoutId(): Int = R.layout.voip_single_call_fragment override fun onStart() { @@ -67,6 +101,8 @@ class SingleCallFragment : GenericFragment() { binding.lifecycleOwner = viewLifecycleOwner + binding.previewTouchListener = previewTouchListener + binding.controlsViewModel = controlsViewModel binding.callsViewModel = callsViewModel diff --git a/app/src/main/java/org/linphone/activities/voip/viewmodels/ControlsViewModel.kt b/app/src/main/java/org/linphone/activities/voip/viewmodels/ControlsViewModel.kt index 06cc2b784..4a438516e 100644 --- a/app/src/main/java/org/linphone/activities/voip/viewmodels/ControlsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/voip/viewmodels/ControlsViewModel.kt @@ -21,8 +21,6 @@ package org.linphone.activities.voip.viewmodels import android.Manifest import android.animation.ValueAnimator -import android.view.MotionEvent -import android.view.View import android.view.animation.LinearInterpolator import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.MutableLiveData @@ -107,30 +105,6 @@ class ControlsViewModel : ViewModel() { private val nonEarpieceOutputAudioDevice = MutableLiveData() - private var previewX: Float = 0f - private var previewY: Float = 0f - val previewTouchListener = View.OnTouchListener { view, event -> - when (event.action) { - MotionEvent.ACTION_DOWN -> { - previewX = view.x - event.rawX - previewY = view.y - event.rawY - true - } - MotionEvent.ACTION_MOVE -> { - view.animate() - .x(event.rawX + previewX) - .y(event.rawY + previewY) - .setDuration(0) - .start() - true - } - else -> { - view.performClick() - false - } - } - } - private val listener: CoreListenerStub = object : CoreListenerStub() { override fun onCallStateChanged( core: Core, diff --git a/app/src/main/res/layout/voip_single_call_fragment.xml b/app/src/main/res/layout/voip_single_call_fragment.xml index 65a7128ed..733a1521f 100644 --- a/app/src/main/res/layout/voip_single_call_fragment.xml +++ b/app/src/main/res/layout/voip_single_call_fragment.xml @@ -9,6 +9,10 @@ + + @@ -166,39 +170,39 @@ app:layout_constraintEnd_toEndOf="@id/background" app:layout_constraintTop_toTopOf="@id/background" /> - + + + app:layout_constraintEnd_toEndOf="@id/background" + app:layout_constraintHeight_max="200dp" + app:layout_constraintWidth_max="200dp" + bind:ignore="MissingConstraints" /> - - - - - +