From 2789d6a0014209f7bafa8a8cc15f88b1edfa3f61 Mon Sep 17 00:00:00 2001 From: wangqi Date: Thu, 29 Mar 2018 16:13:00 -0700 Subject: UI adjustment to RTT screen. 1. Don't close overflow menu after menu item is clicked. 2. Add correct shadow and animation to overflow menu. 3. Only scroll when remote message is updated if input box is empty. 4. Only hide keyboard if scrolling up is triggered by user. 5. Add paddingTop to recyclerView so that first message won't be covered by toolbar. Bug: 70177426 Test: manual PiperOrigin-RevId: 191002774 Change-Id: Ic69f80323e3d31d7853d4e8d0c6e4c100fe4a776 --- .../android/incallui/rtt/impl/AudioSelectMenu.java | 3 +- .../android/incallui/rtt/impl/RttChatAdapter.java | 8 ++-- .../android/incallui/rtt/impl/RttChatFragment.java | 53 +++++++++++++++++----- .../android/incallui/rtt/impl/RttChatMessage.java | 2 +- .../android/incallui/rtt/impl/RttOverflowMenu.java | 4 +- .../impl/res/drawable/overflow_menu_background.xml | 2 +- .../incallui/rtt/impl/res/layout/audio_route.xml | 1 - .../incallui/rtt/impl/res/layout/frag_rtt_chat.xml | 1 + .../incallui/rtt/impl/res/layout/overflow_menu.xml | 1 - .../incallui/rtt/impl/res/values/dimens.xml | 1 + .../incallui/rtt/impl/res/values/styles.xml | 6 +++ 11 files changed, 58 insertions(+), 24 deletions(-) (limited to 'java') diff --git a/java/com/android/incallui/rtt/impl/AudioSelectMenu.java b/java/com/android/incallui/rtt/impl/AudioSelectMenu.java index 2d4ab3989..01c3950e9 100644 --- a/java/com/android/incallui/rtt/impl/AudioSelectMenu.java +++ b/java/com/android/incallui/rtt/impl/AudioSelectMenu.java @@ -39,7 +39,7 @@ public class AudioSelectMenu extends PopupWindow { Context context, InCallButtonUiDelegate inCallButtonUiDelegate, OnButtonClickListener onButtonClickListener) { - super(context); + super(context, null, 0, R.style.OverflowMenu); this.context = context; this.inCallButtonUiDelegate = inCallButtonUiDelegate; this.onButtonClickListener = onButtonClickListener; @@ -76,7 +76,6 @@ public class AudioSelectMenu extends PopupWindow { } item.setOnClickListener( (v) -> { - dismiss(); inCallButtonUiDelegate.setAudioRoute(itemRoute); }); } diff --git a/java/com/android/incallui/rtt/impl/RttChatAdapter.java b/java/com/android/incallui/rtt/impl/RttChatAdapter.java index 8d924c9f8..955fc9fec 100644 --- a/java/com/android/incallui/rtt/impl/RttChatAdapter.java +++ b/java/com/android/incallui/rtt/impl/RttChatAdapter.java @@ -33,7 +33,9 @@ import java.util.List; public class RttChatAdapter extends RecyclerView.Adapter { interface MessageListener { - void newMessageAdded(); + void onUpdateRemoteMessage(int position); + + void onUpdateLocalMessage(int position); } private static final String KEY_MESSAGE_DATA = "key_message_data"; @@ -114,7 +116,7 @@ public class RttChatAdapter extends RecyclerView.Adapter { @@ -202,6 +215,9 @@ public class RttChatFragment extends Fragment editText.setText(""); isClearingInput = false; rttCallScreenDelegate.onLocalMessage(Constants.BUBBLE_BREAKER); + // Auto scrolling for new messages should be resumed since user has submit current + // message. + shouldAutoScrolling = true; }); submitButton.setEnabled(false); endCallButton = view.findViewById(R.id.rtt_end_call_button); @@ -276,8 +292,21 @@ public class RttChatFragment extends Fragment } @Override - public void newMessageAdded() { - recyclerView.smoothScrollToPosition(adapter.getItemCount()); + public void onUpdateLocalMessage(int position) { + if (position < 0) { + return; + } + recyclerView.smoothScrollToPosition(position); + } + + @Override + public void onUpdateRemoteMessage(int position) { + if (position < 0) { + return; + } + if (shouldAutoScrolling) { + recyclerView.smoothScrollToPosition(position); + } } @Override diff --git a/java/com/android/incallui/rtt/impl/RttChatMessage.java b/java/com/android/incallui/rtt/impl/RttChatMessage.java index cbc53ef15..0060b1bd1 100644 --- a/java/com/android/incallui/rtt/impl/RttChatMessage.java +++ b/java/com/android/incallui/rtt/impl/RttChatMessage.java @@ -162,7 +162,7 @@ final class RttChatMessage implements Parcelable { return i; } - private static int getLastIndexRemoteMessage(List messageList) { + static int getLastIndexRemoteMessage(List messageList) { int i = messageList.size() - 1; while (i >= 0 && !messageList.get(i).isRemote) { i--; diff --git a/java/com/android/incallui/rtt/impl/RttOverflowMenu.java b/java/com/android/incallui/rtt/impl/RttOverflowMenu.java index 6a7aeba96..deee8ee15 100644 --- a/java/com/android/incallui/rtt/impl/RttOverflowMenu.java +++ b/java/com/android/incallui/rtt/impl/RttOverflowMenu.java @@ -42,7 +42,7 @@ public class RttOverflowMenu extends PopupWindow implements OnCheckedChangeListe Context context, InCallButtonUiDelegate inCallButtonUiDelegate, InCallScreenDelegate inCallScreenDelegate) { - super(context); + super(context, null, 0, R.style.OverflowMenu); this.inCallButtonUiDelegate = inCallButtonUiDelegate; this.inCallScreenDelegate = inCallScreenDelegate; View view = View.inflate(context, R.layout.overflow_menu, null); @@ -67,7 +67,6 @@ public class RttOverflowMenu extends PopupWindow implements OnCheckedChangeListe if (isSwitchToSecondaryButtonEnabled) { this.inCallScreenDelegate.onSecondaryInfoClicked(); } - dismiss(); }); } @@ -80,7 +79,6 @@ public class RttOverflowMenu extends PopupWindow implements OnCheckedChangeListe } else if (button == dialpadButton) { inCallButtonUiDelegate.showDialpadClicked(isChecked); } - dismiss(); } void setMuteButtonChecked(boolean isChecked) { diff --git a/java/com/android/incallui/rtt/impl/res/drawable/overflow_menu_background.xml b/java/com/android/incallui/rtt/impl/res/drawable/overflow_menu_background.xml index 614298679..2af14fd8e 100644 --- a/java/com/android/incallui/rtt/impl/res/drawable/overflow_menu_background.xml +++ b/java/com/android/incallui/rtt/impl/res/drawable/overflow_menu_background.xml @@ -18,4 +18,4 @@ android:shape="rectangle"> - \ No newline at end of file + diff --git a/java/com/android/incallui/rtt/impl/res/layout/audio_route.xml b/java/com/android/incallui/rtt/impl/res/layout/audio_route.xml index 89b5c76f0..f098316a1 100644 --- a/java/com/android/incallui/rtt/impl/res/layout/audio_route.xml +++ b/java/com/android/incallui/rtt/impl/res/layout/audio_route.xml @@ -20,7 +20,6 @@ android:layout_height="wrap_content" android:paddingTop="8dp" android:paddingBottom="8dp" - android:background="@drawable/overflow_menu_background" android:orientation="vertical"> diff --git a/java/com/android/incallui/rtt/impl/res/layout/overflow_menu.xml b/java/com/android/incallui/rtt/impl/res/layout/overflow_menu.xml index eb7e38691..0ec36f33e 100644 --- a/java/com/android/incallui/rtt/impl/res/layout/overflow_menu.xml +++ b/java/com/android/incallui/rtt/impl/res/layout/overflow_menu.xml @@ -20,7 +20,6 @@ android:layout_height="wrap_content" android:paddingTop="8dp" android:paddingBottom="8dp" - android:background="@drawable/overflow_menu_background" android:orientation="vertical"> 16dp 2dp 180dp + 8dp \ No newline at end of file diff --git a/java/com/android/incallui/rtt/impl/res/values/styles.xml b/java/com/android/incallui/rtt/impl/res/values/styles.xml index bbacde813..667cd1241 100644 --- a/java/com/android/incallui/rtt/impl/res/values/styles.xml +++ b/java/com/android/incallui/rtt/impl/res/values/styles.xml @@ -40,4 +40,10 @@ @style/ButtonTheme ?attr/selectableItemBackground + + \ No newline at end of file -- cgit v1.2.3