Improved UI when flip/fold device is half-opened

This commit is contained in:
Sylvain Berfini 2024-11-25 15:26:47 +01:00
parent 8bb6b61edc
commit 363ce834fa
8 changed files with 56 additions and 27 deletions

View file

@ -62,14 +62,13 @@
android:id="@+id/avatar"
android:layout_width="@dimen/avatar_in_call_size"
android:layout_height="@dimen/avatar_in_call_size"
android:layout_marginBottom="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/call_main_actions_menu_margin, default=@dimen/call_main_actions_menu_margin}"
android:layout_marginTop="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/call_remote_video_top_margin, default=@dimen/call_remote_video_top_margin}"
android:layout_marginBottom="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/call_main_actions_menu_height, default=@dimen/call_main_actions_menu_height}"
layout="@layout/contact_avatar_huge"
bind:model="@{viewModel.contact}"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/name_address"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/name"
app:layout_constraintBottom_toBottomOf="@id/hinge_bottom" />
<LinearLayout
@ -77,14 +76,13 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginBottom="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/call_main_actions_menu_margin, default=@dimen/call_main_actions_menu_margin}"
android:layout_marginTop="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/call_remote_video_top_margin, default=@dimen/call_remote_video_top_margin}"
android:layout_marginBottom="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/call_main_actions_menu_height, default=@dimen/call_main_actions_menu_height}"
android:orientation="vertical"
android:gravity="center"
android:visibility="@{viewModel.pipMode ? View.GONE : View.VISIBLE}"
app:layout_constraintStart_toEndOf="@id/avatar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/name"
app:layout_constraintBottom_toBottomOf="@id/hinge_bottom">
<androidx.appcompat.widget.AppCompatTextView

View file

@ -31,7 +31,7 @@
style="@style/call_header_style"
android:id="@+id/call_direction_label"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/call_ended"
app:layout_constraintStart_toEndOf="@id/back"
@ -42,7 +42,7 @@
style="@style/call_header_style"
android:id="@+id/separator"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="@string/vertical_separator"
app:layout_constraintStart_toEndOf="@id/call_direction_label"
@ -53,7 +53,7 @@
style="@style/call_header_style"
android:id="@+id/chronometer"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:visibility="@{viewModel.isPaused || viewModel.isPausedByRemote ? View.GONE : View.VISIBLE}"
app:layout_constraintStart_toEndOf="@id/separator"
@ -80,7 +80,7 @@
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/name_address"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/call_media_encryption_info"
app:layout_constraintTop_toBottomOf="@id/call_direction_label"
app:layout_constraintBottom_toTopOf="@id/bottom_bar" />
<LinearLayout
@ -92,7 +92,7 @@
android:gravity="center"
app:layout_constraintStart_toEndOf="@id/avatar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/call_media_encryption_info"
app:layout_constraintTop_toBottomOf="@id/call_direction_label"
app:layout_constraintBottom_toTopOf="@id/bottom_bar">
<androidx.appcompat.widget.AppCompatTextView

View file

@ -15,6 +15,19 @@
android:layout_height="match_parent"
android:background="@color/gray_900">
<ImageView
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="@dimen/top_bar_height"
android:adjustViewBounds="true"
android:padding="15dp"
android:src="@drawable/caret_left"
android:contentDescription="@string/content_description_go_back_icon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:visibility="invisible"
app:tint="@color/white" />
<ImageView
android:id="@+id/call_direction_icon"
android:layout_width="12dp"
@ -31,37 +44,40 @@
style="@style/call_header_style"
android:id="@+id/call_direction_label"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@{viewModel.incomingCallTitle, default=@string/call_video_incoming}"
app:layout_constraintStart_toEndOf="@id/call_direction_icon"
app:layout_constraintTop_toTopOf="parent"/>
app:layout_constraintTop_toTopOf="@id/back"
app:layout_constraintBottom_toBottomOf="@id/back"/>
<include
android:id="@+id/avatar"
android:layout_width="@dimen/avatar_in_call_size"
android:layout_height="@dimen/avatar_in_call_size"
android:layout_marginBottom="@dimen/call_main_actions_menu_height"
layout="@layout/contact_avatar_huge"
bind:model="@{viewModel.contact}"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/name_address"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/call_direction_label"
app:layout_constraintBottom_toTopOf="@id/bottom_bar" />
app:layout_constraintBottom_toBottomOf="parent" />
<LinearLayout
android:id="@+id/name_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/call_main_actions_menu_height"
android:layout_marginStart="30dp"
android:orientation="vertical"
android:gravity="center"
app:layout_constraintStart_toEndOf="@id/avatar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/call_direction_label"
app:layout_constraintBottom_toTopOf="@id/bottom_bar">
app:layout_constraintBottom_toBottomOf="parent">
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_300"

View file

@ -15,6 +15,19 @@
android:layout_height="match_parent"
android:background="@color/gray_900">
<ImageView
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="@dimen/top_bar_height"
android:adjustViewBounds="true"
android:padding="15dp"
android:src="@drawable/caret_left"
android:contentDescription="@string/content_description_go_back_icon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:visibility="invisible"
app:tint="@color/white" />
<ImageView
android:id="@+id/call_direction_icon"
android:layout_width="12dp"
@ -31,13 +44,14 @@
style="@style/call_header_style"
android:id="@+id/call_direction_label"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/call_outgoing"
app:layout_constraintStart_toEndOf="@id/call_direction_icon"
app:layout_constraintTop_toTopOf="parent"/>
app:layout_constraintTop_toTopOf="@id/back"
app:layout_constraintBottom_toBottomOf="@id/back"/>
<include
android:id="@+id/avatar"

View file

@ -62,6 +62,7 @@
android:id="@+id/avatar"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="@{(viewModel.isReceivingVideo &amp;&amp; viewModel.halfOpenedFolded) ? View.GONE : View.VISIBLE}"
layout="@layout/contact_avatar_huge"
bind:model="@{viewModel.contact}"
app:layout_constraintDimensionRatio="1:1"
@ -70,7 +71,7 @@
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/call_media_encryption_info"
app:layout_constraintTop_toBottomOf="@id/name"
app:layout_constraintBottom_toTopOf="@id/display_name" />
<androidx.appcompat.widget.AppCompatTextView
@ -82,7 +83,7 @@
android:text="@{viewModel.displayedName, default=`John Doe`}"
android:textSize="22sp"
android:textColor="@color/white"
android:visibility="@{viewModel.pipMode ? View.GONE : View.VISIBLE}"
android:visibility="@{viewModel.pipMode || (viewModel.isReceivingVideo &amp;&amp; viewModel.halfOpenedFolded) ? View.GONE : View.VISIBLE}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/avatar"
@ -97,9 +98,9 @@
android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}"
android:textColor="@color/white"
android:textSize="14sp"
android:visibility="@{viewModel.pipMode ? View.GONE : View.VISIBLE}"
android:visibility="@{viewModel.pipMode || (viewModel.isReceivingVideo &amp;&amp; viewModel.halfOpenedFolded) ? View.GONE : View.VISIBLE}"
app:layout_constraintTop_toBottomOf="@id/display_name"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toBottomOf="@id/hinge_bottom"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />

View file

@ -31,7 +31,7 @@
style="@style/call_header_style"
android:id="@+id/call_direction_label"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/call_ended"
app:layout_constraintStart_toEndOf="@id/back"
@ -42,7 +42,7 @@
style="@style/call_header_style"
android:id="@+id/separator"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="@string/vertical_separator"
app:layout_constraintStart_toEndOf="@id/call_direction_label"
@ -53,7 +53,7 @@
style="@style/call_header_style"
android:id="@+id/chronometer"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:visibility="@{viewModel.isPaused || viewModel.isPausedByRemote ? View.GONE : View.VISIBLE}"
app:layout_constraintStart_toEndOf="@id/separator"
@ -83,7 +83,7 @@
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/call_media_encryption_info"
app:layout_constraintTop_toBottomOf="@id/call_direction_label"
app:layout_constraintBottom_toTopOf="@id/name" />
<androidx.appcompat.widget.AppCompatTextView

View file

@ -31,7 +31,7 @@
style="@style/call_header_style"
android:id="@+id/call_direction_label"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"

View file

@ -31,7 +31,7 @@
style="@style/call_header_style"
android:id="@+id/call_direction_label"
android:layout_width="wrap_content"
android:layout_height="@dimen/call_top_bar_text_height"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"