Как сделать (матрицу?) Преобразование навсегда RecyclerView

В настоящее время я работаю с RecyclerView который имеет горизонтальный LinearLayout, RecyclerView занимает весь экран:

введите описание изображения здесь

и я нахожу способ сделать исправление преобразования RecyclerView как это:

введите описание изображения здесь

обратите внимание, что трансформация похожа на "погружение" или "падение" для создания "глубокого" эффекта. Поскольку размер предметов может меняться, мне нужно постоянное преобразование, поэтому я думаю сделать это в RecyclerView

Есть ли способ сделать это? возможно способ сделать это на onDraw??

Заранее большое спасибо.

С уважением.

Рафаэль.


ДОБАВИТЬ:

Я хотел бы заметить, что PageTransformer делает что-то подобное. На самом деле, то, что я хочу, очень похоже на то, что делает Samsung Galaxy S3, когда вы прокручиваете один из их Launchers (который использует ViewPager), но я бы хотел исправить это преобразование:

введите описание изображения здесь


Что я пытаюсь?

Я пытаюсь прокрутить большой горизонтальный адаптер RecyclerView, но я бы хотел немного "сложить" вид, чтобы создать впечатление "цилиндра".

1 ответ

Решение

Сделать класс, который расширяет RecyclerView и переопределить его dispatchDraw (или же draw) метод, использование Matrix#setPolyToPoly Чтобы выполнить преобразование перспективы, приведенный ниже код создает нечто вроде эффекта "Звездных войн", вам нужно вызвать setPolyToPoly дважды и применить Matrix на обеих половинах вашего пользовательского вида:

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        final float DELTAX = w * 0.15f;
        float[] src = {
                0, 0, w, 0, w, h, 0, h
        };
        float[] dst = {
                0, 0, w, 0, w - DELTAX, h, DELTAX, h
        };
        matrix.setPolyToPoly(src, 0, dst, 0, 4);
    }

    @Override
    protected void dispatchDraw(Canvas canvas) {
        canvas.save();
        canvas.concat(matrix);
        super.dispatchDraw(canvas);
        canvas.restore();
    }
Другие вопросы по тегам