17149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas/*
27149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Copyright (C) 2017 The Android Open Source Project
37149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas *
47149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Licensed under the Apache License, Version 2.0 (the "License");
57149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * you may not use this file except in compliance with the License.
67149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * You may obtain a copy of the License at
77149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas *
87149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas *      http://www.apache.org/licenses/LICENSE-2.0
97149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas *
107149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Unless required by applicable law or agreed to in writing, software
117149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * distributed under the License is distributed on an "AS IS" BASIS,
127149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * See the License for the specific language governing permissions and
147149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * limitations under the License.
157149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */
167149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
177149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikaspackage com.android.internal.widget.helper;
187149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
197149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikasimport android.graphics.Canvas;
207149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikasimport android.view.View;
217149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
227149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikasimport com.android.internal.widget.RecyclerView;
237149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
247149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas/**
257149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Utility class for {@link ItemTouchHelper} which handles item transformations for different
267149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * API versions.
277149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p/>
287149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * This class has methods that map to {@link ItemTouchHelper.Callback}'s drawing methods. Default
297149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * implementations in {@link ItemTouchHelper.Callback} call these methods with
307149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * {@link RecyclerView.ViewHolder#itemView} and {@link ItemTouchUIUtil} makes necessary changes
317149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * on the View depending on the API level. You can access the instance of {@link ItemTouchUIUtil}
327149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * via {@link ItemTouchHelper.Callback#getDefaultUIUtil()} and call its methods with the children
337149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * of ViewHolder that you want to apply default effects.
347149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas *
357149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see ItemTouchHelper.Callback#getDefaultUIUtil()
367149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */
377149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikaspublic interface ItemTouchUIUtil {
387149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
397149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
407149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * The default implementation for {@link ItemTouchHelper.Callback#onChildDraw(Canvas,
417149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * RecyclerView, RecyclerView.ViewHolder, float, float, int, boolean)}
427149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
437149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    void onDraw(Canvas c, RecyclerView recyclerView, View view,
447149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas            float dX, float dY, int actionState, boolean isCurrentlyActive);
457149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
467149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
477149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * The default implementation for {@link ItemTouchHelper.Callback#onChildDrawOver(Canvas,
487149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * RecyclerView, RecyclerView.ViewHolder, float, float, int, boolean)}
497149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
507149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    void onDrawOver(Canvas c, RecyclerView recyclerView, View view,
517149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas            float dX, float dY, int actionState, boolean isCurrentlyActive);
527149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
537149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
547149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * The default implementation for {@link ItemTouchHelper.Callback#clearView(RecyclerView,
557149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * RecyclerView.ViewHolder)}
567149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
577149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    void clearView(View view);
587149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
597149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
607149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * The default implementation for {@link ItemTouchHelper.Callback#onSelectedChanged(
617149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * RecyclerView.ViewHolder, int)}
627149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
637149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    void onSelected(View view);
647149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas}
657149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
66