Использую SurfaceView, рисую на Canvas в отдельном потоке. Необходимо получить из ресурса VectorDrawable, задать поворот и нарисовать на Canvas, потом изменить угол поворота и снова нарисовать на Canvas.
Ресурс получаю, но методов для вращения у VectorDravable нет.
Пробовал привести к RotateDrawable:
RotateDrawable rd = (RotateDrawable) context.getResources().getDrawable(R.drawable.ic_arrow);
Приложение падает. Как быть?
Можно вращать не изображение, а канвас, с помощью метода .rotate(угол_в_градусах):
canvas.save(Canvas.MATRIX_SAVE_FLAG); // сохраняем состояние канваса, чтобы в конце восстановить его
canvas.rotate(-angle);
drawable.draw(canvas);
canvas.restore();
Вероятно, также потребуется задать центр вращения, вызвав .translate(delta_x, delta_y)
Для обычных Bitmap также можно использовать перегрузку метода drawBitmap, которая принимает матрицу преобразования:
Matrix matrix = new Matrix();
matrix.setRotate(угол, x_координата_центра_вращения, y_координата_центра_вращения);
canvas.drawBitmap(bitmap, matrix, null);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости