Пользовательская анимация на Swipable элемент в переработке - PullRequest
0 голосов
/ 25 апреля 2020

Здравствуйте, я пытаюсь создать настраиваемую анимированную смахиваемую анимацию в программе повторного просмотра. Эталонное изображение эталонное изображение

Мой фрагмент с возможностью сканирования внутри фрагмента

new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {

            private boolean swipeBack;

            private int ACTION_STATE_SWIPE;
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder  target) {
                return false;
            }
            @Override
            public int convertToAbsoluteDirection(int flags, int layoutDirection) {
                if (swipeBack) {
                    swipeBack = false;
                    return 0;
                }
                return super.convertToAbsoluteDirection(flags, layoutDirection);
            }
            @Override
            public void onChildDraw(Canvas c, 
                                    RecyclerView recyclerView, 
                                    RecyclerView.ViewHolder viewHolder, 
                                    float dX, float dY, 
                                    int actionState, boolean isCurrentlyActive) {

                if (actionState == ACTION_STATE_SWIPE) {
                    setTouchListener(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
                }
                super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
            }

            private void setTouchListener(Canvas c, 
                                          RecyclerView recyclerView, 
                                          RecyclerView.ViewHolder viewHolder, 
                                          float dX, float dY, 
                                          int actionState, boolean isCurrentlyActive) {

                recyclerView.setOnTouchListener(new View.OnTouchListener() {
                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                            swipeBack = event.getAction() == MotionEvent.ACTION_CANCEL || event.getAction() == MotionEvent.ACTION_UP;
                            return false;
                        }
                    });
            }
            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {

                // when user swipe thr recyclerview item to right remove item from avorite list
                if (direction == ItemTouchHelper.RIGHT) {
                    mAdapter.addToFav(viewHolder.getAdapterPosition(), false);

                } 
                // when user swipe thr recyclerview item to left remove item from avorite list
                else if (direction == ItemTouchHelper.LEFT) {
                    mAdapter.deleteFromFav(viewHolder.getAdapterPosition(), true);
                }

            }
            }).attachToRecyclerView(recyclerView);

И внутри адаптера

public void addToFav(int position, boolean p1) {

    //code here
}

Я уже прикрепил изображение, что я ищу. В настоящее время с этим кодом я только что достиг, чтобы провести элемент, и действие успешно выполнено. Thankx

...