Disable fling gesture for message list swipe actions

This commit is contained in:
Muhammad Hafizh Hasyim 2023-10-21 23:19:27 +11:00 committed by cketti
parent ab7d680111
commit 7af17d2c02
2 changed files with 11 additions and 2 deletions

View file

@ -44,6 +44,10 @@ class MessageListSwipeCallback(
swipeLeftLayout = layoutInflater.inflate(R.layout.swipe_left_action, null, false) swipeLeftLayout = layoutInflater.inflate(R.layout.swipe_left_action, null, false)
} }
override fun isFlingEnabled(): Boolean {
return false
}
override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: ViewHolder): Int { override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: ViewHolder): Int {
if (viewHolder !is MessageViewHolder) return 0 if (viewHolder !is MessageViewHolder) return 0

View file

@ -1299,7 +1299,7 @@ public class ItemTouchHelper extends RecyclerView.ItemDecoration
private int checkHorizontalSwipe(ViewHolder viewHolder, int flags) { private int checkHorizontalSwipe(ViewHolder viewHolder, int flags) {
if ((flags & (LEFT | RIGHT)) != 0) { if ((flags & (LEFT | RIGHT)) != 0) {
final int dirFlag = mDx > 0 ? RIGHT : LEFT; final int dirFlag = mDx > 0 ? RIGHT : LEFT;
if (mVelocityTracker != null && mActivePointerId > -1) { if (mCallback.isFlingEnabled() && mVelocityTracker != null && mActivePointerId > -1) {
mVelocityTracker.computeCurrentVelocity(PIXELS_PER_SECOND, mVelocityTracker.computeCurrentVelocity(PIXELS_PER_SECOND,
mCallback.getSwipeVelocityThreshold(mMaxSwipeVelocity)); mCallback.getSwipeVelocityThreshold(mMaxSwipeVelocity));
final float xVelocity = mVelocityTracker.getXVelocity(mActivePointerId); final float xVelocity = mVelocityTracker.getXVelocity(mActivePointerId);
@ -1326,7 +1326,7 @@ public class ItemTouchHelper extends RecyclerView.ItemDecoration
private int checkVerticalSwipe(ViewHolder viewHolder, int flags) { private int checkVerticalSwipe(ViewHolder viewHolder, int flags) {
if ((flags & (UP | DOWN)) != 0) { if ((flags & (UP | DOWN)) != 0) {
final int dirFlag = mDy > 0 ? DOWN : UP; final int dirFlag = mDy > 0 ? DOWN : UP;
if (mVelocityTracker != null && mActivePointerId > -1) { if (mCallback.isFlingEnabled() && mVelocityTracker != null && mActivePointerId > -1) {
mVelocityTracker.computeCurrentVelocity(PIXELS_PER_SECOND, mVelocityTracker.computeCurrentVelocity(PIXELS_PER_SECOND,
mCallback.getSwipeVelocityThreshold(mMaxSwipeVelocity)); mCallback.getSwipeVelocityThreshold(mMaxSwipeVelocity));
final float xVelocity = mVelocityTracker.getXVelocity(mActivePointerId); final float xVelocity = mVelocityTracker.getXVelocity(mActivePointerId);
@ -2280,6 +2280,11 @@ public class ItemTouchHelper extends RecyclerView.ItemDecoration
public void onSwipeEnded(@NonNull ViewHolder viewHolder) { public void onSwipeEnded(@NonNull ViewHolder viewHolder) {
} }
public boolean isFlingEnabled() {
return true;
}
} }
/** /**