Начиная с Android 3.0, у нас есть возможность установить базовые 3D-преобразования в Views с помощью setRotationX и setRotationY, например.
В конкретном случае, я должен был бы достичь сложного преобразования, который вращается вокруг удаленной точки поворота, то масштабирования на другой точке поворота. Это невозможно с помощью setScaleX/Y и setRotationX/Y, поскольку они имеют одну и ту же точку поворота.
Существует ли какой-либо простой способ предоставить желаемую матрицу для представления для отображения?
В настоящее время я нашел два возможных решения:
-
Настройте матрицу вращения, затем используйте ее для сопоставления точки {0,0}; примените результирующую точку к представлению View, затем используйте View setScaleX/Y, чтобы установить масштабирование
-
Взломайте View onDraw и примените преобразование на холсте. Добавьте логику и к событиям переадресации карты.
Оба не очень удобны, так как я создаю AdapterView, который отображает его элементы с помощью настраиваемого эффекта; например, может быть возможно переключить эффект, чтобы элементы были помещены в круг или как "поток обложек".