программное вращение vector drawable

168
30 января 2018, 09:44

Использую SurfaceView, рисую на Canvas в отдельном потоке. Необходимо получить из ресурса VectorDrawable, задать поворот и нарисовать на Canvas, потом изменить угол поворота и снова нарисовать на Canvas. Ресурс получаю, но методов для вращения у VectorDravable нет. Пробовал привести к RotateDrawable:

RotateDrawable rd = (RotateDrawable) context.getResources().getDrawable(R.drawable.ic_arrow);

Приложение падает. Как быть?

Answer 1

Можно вращать не изображение, а канвас, с помощью метода .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);
READ ALSO
Что за концепт friend class?

Что за концепт friend class?

Добрый деньПерешел на новую работу, работа заключается в интеграции с системой SAP ERP

211
Почему не работает ajax-запрос в laravel?

Почему не работает ajax-запрос в laravel?

Вот есть обычная форма:

190
Несколько AJAX запросов в 1 input`е

Несколько AJAX запросов в 1 input`е

Реально ли написать, чтобы при поиске выводилось несколько запросов с разных таблиц, ибо таблицы соединить нечем, а результаты поиска должны...

187