Один простой и эффективный способ нарисовать сплошную сторону - использовать отсечение - прямое обрезание, по сути, бесплатное, и гораздо меньше кода для записи, чем пользовательский путь.
Если я хочу прямоугольник 300x300, с верхним левым и правым закругленными на 50 пикселей, вы можете сделать:
canvas.save();
canvas.clipRect(0, 0, 300, 300);
canvas.drawRoundRect(new RectF(0, 0, 300, 350), 50, 50, paint);
canvas.restore();
Этот подход будет работать только для округления на 2 или 3 смежных углах, поэтому он немного менее настраивается, чем подход на основе Path , но использование round rects более эффективно, поскольку drawRoundRect () полностью аппаратно ускорено (т. е. тесселлировано в треугольники), в то время как drawPath () всегда возвращается к рендерингу программного обеспечения (программное обеспечение - рисовать растровое изображение пути и загружать его для кэширования GPU).
Не большая проблема с производительностью для небольшого нечастого рисования, но если вы анимируете пути, стоимость рисования программного обеспечения может увеличить время вашего кадра и увеличить шанс сброса кадров. Маска пути также стоит памяти.
Если вы хотите перейти с помощью подхода на основе Path, я бы рекомендовал использовать GradientDrawable для упрощения строк кода (при условии, что вам не нужно настраивать пользовательские настройки shader, например, для рисования растрового изображения).
mGradient.setBounds(0, 0, 300, 300);
mGradient.setCornerRadii(new int[] {50,50, 50,50, 0,0, 0,0});
С помощью GradientDrawable # setCornerRadii () вы можете установить любой угол в любую округленность и разумно анимировать между состояниями.
Это может быть реализовано с помощью модуля pause
:
---
- hosts: server01
gather_facts: True
tasks:
- pause:
prompt: please enter the name for the target [{{ ansible_hostname }}]
register: prompt
- debug:
msg: "{{ prompt.user_input if prompt.user_input else ansible_hostname }}"