Merge pull request #2741 from nextcloud/feature/noid/optimzeScrollToBottom

Optimize scroll-to-bottom
This commit is contained in:
Marcel Hibbe 2023-02-08 15:58:50 +01:00 committed by GitHub
commit ee9407588f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 30 deletions

View file

@ -673,7 +673,8 @@ class ChatController(args: Bundle) :
}
}
binding?.scrollDownButton?.setOnClickListener { binding?.messagesListView?.smoothScrollToPosition(0) }
binding?.scrollDownButton?.setOnClickListener { binding?.messagesListView?.scrollToPosition(0) }
binding?.let { viewThemeUtils.material.colorMaterialButtonPrimaryTonal(it.scrollDownButton) }
binding?.let { viewThemeUtils.material.colorMaterialButtonPrimaryFilled(it.popupBubbleView) }
@ -688,7 +689,7 @@ class ChatController(args: Bundle) :
if (layoutManager!!.findFirstCompletelyVisibleItemPosition() > 0) {
binding?.scrollDownButton?.visibility = View.VISIBLE
} else {
binding?.scrollDownButton?.visibility = View.INVISIBLE
binding?.scrollDownButton?.visibility = View.GONE
}
if (newMessagesCount != 0 && layoutManager != null) {
@ -2445,6 +2446,7 @@ class ChatController(args: Bundle) :
if (!shouldAddNewMessagesNotice && !shouldScroll) {
if (!binding?.popupBubbleView?.isShown!!) {
newMessagesCount = 1
binding?.scrollDownButton?.visibility = View.GONE
binding?.popupBubbleView?.show()
} else if (binding?.popupBubbleView?.isShown!!) {
newMessagesCount++

View file

@ -1,21 +1,26 @@
<!--
@author Google LLC
Copyright (C) 2023 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector android:height="24dp" android:tint="#000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/black"
android:pathData="M18,6.41l-1.41,-1.41l-4.59,4.58l-4.59,-4.58l-1.41,1.41l6,6z"/>
<path android:fillColor="@android:color/black"
android:pathData="M18,13l-1.41,-1.41l-4.59,4.58l-4.59,-4.58l-1.41,1.41l6,6z"/>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M12,19.275 L5.8,13.1 7.4,11.5 12,16.075 16.6,11.5 18.2,13.1ZM12,13.1 L5.8,6.9 7.4,5.325 12,9.9 16.6,5.325 18.2,6.9Z" />
</vector>

View file

@ -76,8 +76,8 @@
app:incomingImageTimeTextSize="12sp"
app:incomingTextColor="@color/nc_incoming_text_default"
app:incomingTextLinkColor="@color/nc_incoming_text_default"
app:incomingTimeTextColor="@color/no_emphasis_text"
app:incomingTextSize="@dimen/chat_text_size"
app:incomingTimeTextColor="@color/no_emphasis_text"
app:incomingTimeTextSize="12sp"
app:outcomingBubblePaddingBottom="@dimen/message_bubble_corners_vertical_padding"
app:outcomingBubblePaddingLeft="@dimen/message_bubble_corners_horizontal_padding"
@ -100,30 +100,36 @@
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginStart="@dimen/dialog_padding"
android:layout_marginStart="64dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="@dimen/dialog_padding"
android:layout_marginEnd="64dp"
android:layout_marginBottom="16dp"
android:minHeight="@dimen/min_size_clickable_area"
android:layout_toStartOf="@+id/scrollDownButton"
android:text="@string/nc_new_messages"
app:background="@color/colorPrimary"
android:ellipsize="middle"
app:cornerRadius="@dimen/button_corner_radius"
app:icon="@drawable/ic_baseline_arrow_downward_24px" />
<ImageButton
<com.google.android.material.button.MaterialButton
android:id="@+id/scrollDownButton"
android:layout_width="44dp"
android:layout_height="44dp"
style="@style/Widget.AppTheme.Button.ElevatedButton"
android:layout_width="@dimen/min_size_clickable_area"
android:layout_height="@dimen/min_size_clickable_area"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="6dp"
android:layout_marginBottom="16dp"
android:background="@drawable/shape_oval"
android:backgroundTint="@color/scroll_down_chat_button"
android:layout_centerHorizontal="true"
android:layout_marginEnd="@dimen/standard_margin"
android:layout_marginBottom="@dimen/standard_margin"
android:contentDescription="@string/scroll_to_bottom"
android:src="@drawable/ic_baseline_keyboard_double_arrow_down_24"
android:visibility="invisible"
app:tint="@color/scroll_down_chat_button_icon" />
android:paddingStart="@dimen/standard_padding"
android:paddingEnd="@dimen/standard_padding"
android:visibility="gone"
app:cornerRadius="@dimen/button_corner_radius"
app:icon="@drawable/ic_keyboard_double_arrow_down"
app:iconPadding="0dp"
app:iconSize="24dp" />
</RelativeLayout>

View file

@ -76,8 +76,4 @@
<color name="dialog_background">#353535</color>
<!-- scroll down chat button -->
<color name="scroll_down_chat_button">#141F25</color>
<color name="scroll_down_chat_button_icon">#99C3DA</color>
</resources>

View file

@ -102,10 +102,6 @@
<color name="list_divider_background">#1F121212</color>
<color name="grey_200">#EEEEEE</color>
<!-- scroll down chat button -->
<color name="scroll_down_chat_button">#E5F0F5</color>
<color name="scroll_down_chat_button_icon">#002A41</color>
<!-- this is just a helper for status icon background because getting the background color of a dialog is not
possible?! don't use this to set the background of dialogs -->
<color name="dialog_background">#FFFFFF</color>

View file

@ -163,6 +163,16 @@
<item name="iconPadding">0dp</item>
</style>
<style name="Widget.AppTheme.Button.ElevatedButton" parent="Widget.Material3.Button.ElevatedButton">
<item name="android:minWidth">0dp</item>
<item name="android:insetLeft">0dp</item>
<item name="android:insetTop">0dp</item>
<item name="android:insetRight">0dp</item>
<item name="android:insetBottom">0dp</item>
<item name="iconGravity">textStart</item>
<item name="iconPadding">0dp</item>
</style>
<style name="Button.Borderless" parent="Widget.Material3.Button.TextButton">
<item name="android:textColor">@drawable/borderless_btn</item>
<item name="android:textAllCaps">false</item>