refactor(swipe): 迁移侧滑删除至 SwipeRecyclerView,移除 SwipeRevealLayout

- 新增 SwipeRecyclerView.aar 及使用说明文档
- 删除 SwipeRevealLayout.java / ViewBinderHelper.java
- DishListFragment、SamplingModeActivity、PrepareFoodActivity 改用 setSwipeMenuCreator API
- FoodListAdapter、DishPartAdapter 移除 ViewBinderHelper 侧滑状态管理代码
- 布局文件将 RecyclerView 替换为 SwipeRecyclerView,item 布局移除 SwipeRevealLayout 根节点
This commit is contained in:
2026-04-30 10:34:44 +08:00
parent 3842391555
commit dc55d3fde5
14 changed files with 643 additions and 1757 deletions
@@ -92,15 +92,15 @@
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
<com.yanzhenjie.recyclerview.SwipeRecyclerView
android:id="@+id/rvDishPartList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="20dp"
android:overScrollMode="never"
android:scrollbars="vertical"
tools:itemCount="3"
tools:listitem="@layout/list_item_dish_cook"
android:scrollbars="vertical" />
tools:listitem="@layout/list_item_dish_cook" />
</LinearLayout>
@@ -76,7 +76,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView
<com.yanzhenjie.recyclerview.SwipeRecyclerView
android:id="@+id/rvSamplingList"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -26,7 +26,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView
<com.yanzhenjie.recyclerview.SwipeRecyclerView
android:id="@+id/rvDishList"
android:layout_width="match_parent"
android:layout_height="match_parent"
+72 -95
View File
@@ -1,109 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<com.shuwei.dish.match.view.swipereveallayout.SwipeRevealLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipeRevealLayout"
android:id="@+id/clBlock"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginStart="30dp"
android:layout_marginEnd="30dp"
android:layout_marginBottom="15dp"
app:dragEdge="right">
android:background="@drawable/shape_white_fb_15_corners">
<FrameLayout
android:id="@+id/layoutDelete"
android:layout_width="160dp"
android:layout_height="120dp"
android:background="@drawable/bg_swipe_delete">
<TextView
android:id="@+id/tvDishName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginEnd="30dp"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/black"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/tvDishType"
app:layout_constraintEnd_toStartOf="@+id/tvDishWeight"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="雪菜" />
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center"
android:contentDescription="删除"
android:src="@drawable/ic_trash_white" />
<TextView
android:id="@+id/tvDishType"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/black999"
android:textSize="26sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/tvDishName"
app:layout_constraintStart_toStartOf="@id/tvDishName"
app:layout_constraintTop_toBottomOf="@id/tvDishName"
tools:text="主辅材:主材" />
</FrameLayout>
<ImageView
android:id="@+id/ivOperateIcon"
android:layout_width="80dp"
android:layout_height="60dp"
android:layout_marginEnd="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/ivClearIcon"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:src="@drawable/ic_dish_selected" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clBlock"
android:layout_width="match_parent"
android:layout_height="120dp"
android:background="@drawable/shape_white_fb_15_corners">
<ImageView
android:id="@+id/ivClearIcon"
android:layout_width="80dp"
android:layout_height="60dp"
android:layout_marginEnd="10dp"
android:src="@drawable/ic_delete"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tvDishName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginEnd="30dp"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/black"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/tvDishType"
app:layout_constraintEnd_toStartOf="@+id/tvDishWeight"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="雪菜" />
<TextView
android:id="@+id/tvDishWeight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="30dp"
android:hint="-"
android:textColor="@color/dish_green"
android:textColorHint="@color/gray_d6"
android:textSize="32sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/ivOperateIcon"
app:layout_constraintEnd_toStartOf="@id/ivOperateIcon"
app:layout_constraintTop_toTopOf="@id/ivOperateIcon"
tools:ignore="HardcodedText"
tools:text="375克" />
<TextView
android:id="@+id/tvDishType"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/black999"
android:textSize="26sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/tvDishName"
app:layout_constraintStart_toStartOf="@id/tvDishName"
app:layout_constraintTop_toBottomOf="@id/tvDishName"
tools:text="主辅材:主材" />
<ImageView
android:id="@+id/ivOperateIcon"
android:layout_width="80dp"
android:layout_height="60dp"
android:layout_marginEnd="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/ivClearIcon"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:src="@drawable/ic_dish_selected" />
<ImageView
android:id="@+id/ivClearIcon"
android:layout_width="80dp"
android:layout_height="60dp"
android:layout_marginEnd="10dp"
android:src="@drawable/ic_delete"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tvDishWeight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="30dp"
android:hint="-"
android:textColor="@color/dish_green"
android:textColorHint="@color/gray_d6"
android:textSize="32sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/ivOperateIcon"
app:layout_constraintEnd_toStartOf="@id/ivOperateIcon"
app:layout_constraintTop_toTopOf="@id/ivOperateIcon"
tools:ignore="HardcodedText"
tools:text="375克" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.shuwei.dish.match.view.swipereveallayout.SwipeRevealLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
+49 -75
View File
@@ -1,87 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<com.shuwei.dish.match.view.swipereveallayout.SwipeRevealLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipeRevealLayout"
android:id="@+id/clBlock"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="150dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="7dp"
android:layout_marginBottom="8dp"
app:dragEdge="right">
android:background="@drawable/shape_white_fb_15_corners"
android:foreground="?android:attr/selectableItemBackground"
android:paddingStart="30dp"
android:paddingEnd="30dp">
<!-- 后景层(secondaryView = getChildAt(0)):删除按钮,右对齐 -->
<FrameLayout
android:id="@+id/layoutDelete"
android:layout_width="160dp"
android:layout_height="150dp"
android:background="@drawable/bg_swipe_delete">
<TextView
android:id="@+id/tvShowState"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black999"
android:textSize="32sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="烹饪中" />
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center"
android:contentDescription="删除"
android:src="@drawable/ic_trash_white" />
<TextView
android:id="@+id/tvDishName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/dish_green"
android:textSize="32sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/tvDishCount"
app:layout_constraintEnd_toStartOf="@id/tvShowState"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="冬虫夏草炝拌芥兰苗" />
</FrameLayout>
<TextView
android:id="@+id/tvDishCount"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/black999"
android:textSize="26sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/tvDishName"
app:layout_constraintStart_toStartOf="@id/tvDishName"
app:layout_constraintTop_toBottomOf="@id/tvDishName"
tools:text="累计统计:2.3kg(2次)" />
<!-- 前景层(mainView = getChildAt(1)):item 主内容 -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clBlock"
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="@drawable/shape_white_fb_15_corners"
android:foreground="?android:attr/selectableItemBackground"
android:paddingStart="30dp"
android:paddingEnd="30dp">
<TextView
android:id="@+id/tvShowState"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black999"
android:textSize="32sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="烹饪中" />
<TextView
android:id="@+id/tvDishName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/dish_green"
android:textSize="32sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/tvDishCount"
app:layout_constraintEnd_toStartOf="@id/tvShowState"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="冬虫夏草炝拌芥兰苗" />
<TextView
android:id="@+id/tvDishCount"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/black999"
android:textSize="26sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/tvDishName"
app:layout_constraintStart_toStartOf="@id/tvDishName"
app:layout_constraintTop_toBottomOf="@id/tvDishName"
tools:text="累计统计:2.3kg(2次)" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.shuwei.dish.match.view.swipereveallayout.SwipeRevealLayout>
</androidx.constraintlayout.widget.ConstraintLayout>