У меня есть: RecyclerView, где я могу проводить карты вправо.
Я хочу: Добавить рамку для выбранной карты, пока пользователь удерживает ее палец, чтобы провести пальцем. Однако, как только пользователь пропустит go своего пальца и прервет пролистывание, я хочу, чтобы граница была на расстоянии go.
Я справился до сих пор: Мне удалось реализовать onItemTouchHelper, который позволяет мне менять дизайн во время прикосновения. Во время пролистывания цвет вокруг карты меняется на синий. Но граница только остается, даже если свайп прерван.
Проблема, с которой я столкнулся: Граница не go исчезает, когда пользователь отдает go карты (отмена пролистывания)
Вот мой код:
@Override
public void onChildDraw(@NotNull Canvas c, @NotNull RecyclerView recyclerView, @NotNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
View itemView = viewHolder.itemView;
itemView.setRotation(
swipeLayoutManager.getAngle() * (dX / recyclerView.getMeasuredWidth()));
itemView.setBackgroundColor(Color.BLUE);
}
ПРИМЕЧАНИЕ 1: itemView.setBackgroundColor создает синюю рамку вокруг карты. Но это не go, когда пользователь прерывает свайп, и карта возвращается на место.
ПРИМЕЧАНИЕ 2: Метод itemView.setRotation, который я реализовал здесь, работает только при изменении угла во время пролистывания, но возвращает угол к нормальному значению, как только свипирование прервано. Я не могу реализовать то же самое с границей. Когда я пытаюсь, он применяет цвет только во время удара, но цвета постоянно меняются, создавая какой-то сумасшедший эффект мерцания.