diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/recyclerview/ConversationListItemAnimator.java b/app/src/main/java/org/thoughtcrime/securesms/components/recyclerview/ConversationListItemAnimator.java new file mode 100644 index 000000000..1438d3e66 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/recyclerview/ConversationListItemAnimator.java @@ -0,0 +1,16 @@ +package org.thoughtcrime.securesms.components.recyclerview; + + +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.RecyclerView; + +public class ConversationListItemAnimator extends DefaultItemAnimator { + + public ConversationListItemAnimator() { + setSupportsChangeAnimations(false); + } + + @Override public boolean animateRemove(RecyclerView.ViewHolder holder) { + return super.animateRemove(holder); + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/recyclerview/DeleteItemAnimator.java b/app/src/main/java/org/thoughtcrime/securesms/components/recyclerview/DeleteItemAnimator.java deleted file mode 100644 index 4fc116565..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/recyclerview/DeleteItemAnimator.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.thoughtcrime.securesms.components.recyclerview; - - -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.RecyclerView; - -public class DeleteItemAnimator extends DefaultItemAnimator { - - public DeleteItemAnimator() { - setSupportsChangeAnimations(false); - } - - @Override - public boolean animateAdd(RecyclerView.ViewHolder viewHolder) { - dispatchAddFinished(viewHolder); - return false; - } - - @Override - public boolean animateMove(RecyclerView.ViewHolder viewHolder, int fromX, int fromY, int toX, int toY) { - dispatchMoveFinished(viewHolder); - return false; - } - - -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListAdapter.java index c1a626fb4..908833e2e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListAdapter.java @@ -57,8 +57,6 @@ class ConversationListAdapter extends ListAdapter conversations) { + LinearLayoutManager layoutManager = (LinearLayoutManager) list.getLayoutManager(); + int firstVisibleItem = layoutManager != null ? layoutManager.findFirstCompletelyVisibleItemPosition() : -1; + + defaultAdapter.submitList(conversations, () -> { + if (firstVisibleItem == 0) { + list.scrollToPosition(0); + } + }); + } + private void onUnreadPaymentsChanged(@NonNull Optional unreadPayments) { if (unreadPayments.isPresent()) { paymentNotificationView.get().setListener(new PaymentNotificationListener(unreadPayments.get())); @@ -1336,8 +1348,9 @@ public class ConversationListFragment extends MainFragment implements ActionMode private class ArchiveListenerCallback extends ItemTouchHelper.SimpleCallback { - private static final int ARCHIVE_SWIPE_START_COLOR = 0xFF28782A; - private static final int ARCHIVE_SWIPE_END_COLOR = 0xFF329635; + private static final int ARCHIVE_SWIPE_START_COLOR = 0xFF28782A; + private static final int ARCHIVE_SWIPE_END_COLOR = 0xFF329635; + private static final float MIN_ICON_SCALE = 0.75f; ArchiveListenerCallback() { super(0, ItemTouchHelper.RIGHT); @@ -1392,11 +1405,11 @@ public class ConversationListFragment extends MainFragment implements ActionMode float scale; if (dX < scaleStartPoint) { - scale = 0.5f; + scale = MIN_ICON_SCALE; } else if (dX > scaleEndPoint) { scale = 1f; } else { - scale = Math.min(1f, 0.5f + ((dX - scaleStartPoint) / (scaleEndPoint - scaleStartPoint)) * (1f - 0.5f)); + scale = Math.min(1f, MIN_ICON_SCALE + ((dX - scaleStartPoint) / (scaleEndPoint - scaleStartPoint)) * (1f - MIN_ICON_SCALE)); } if (dX > 0) {