Как нарисовать пунктирной линией?

234
18 апреля 2017, 07:49

Рисую линию так:

p.setStrokeWidth(1);
canvas.drawLine(crX, crY, ceX, ceY, p);

Как задать ей пунктир?

Answer 1

Для некоторых эффектов с линиями в Android есть класс PathEffect. В частности он позволяет скруглять углы ломаных, делать линию не идеально ровной, рисовать пунктиром и другое.

Для того, чтобы начертить пунктирную линию потребуется класс DashPathEffect:

class DrawView extends View {
  Path path;
  Paint p1;
  Paint p2;
  public DrawView(Context context) {
    super(context);
    path = new Path();
    path.rLineTo(100, 300);
    p1 = new Paint(Paint.ANTI_ALIAS_FLAG);
    p1.setStyle(Paint.Style.STROKE);
    p1.setStrokeWidth(7);
    p2 = new Paint(p1);
    p2.setColor(Color.GREEN);
    p2.setPathEffect(new DashPathEffect(new float[] { 30, 10}, 0));
  }
  @Override
  protected void onDraw(Canvas canvas) {
    canvas.drawARGB(80, 102, 204, 255);
    canvas.translate(250, 0);
    canvas.drawPath(path, p2);
  }
}

Здесь значения массива вещественных чисел в аргументе класса DashPathEffect - 30 длина пунктира, 10 - расстояние между пунктирами.
Класс работает с любыми объектами канвы, которые рисуют линии (прямоугольник, круг и тд)

Узнать больше про класс PathEffect.

READ ALSO
Пользовательские переменные mysql java

Пользовательские переменные mysql java

Подскажите, пожалуйста, как в запросе:

227
Помощь в настройках WebView

Помощь в настройках WebView

Всем привет ! Нужны параметры для WebView настроек такие как setJavaScriptEnabled только с описанием чтобы было удобно разобраться так как делаю браузер...

268
Обработка JSON-запросов на сервере Java-ой

Обработка JSON-запросов на сервере Java-ой

Есть хостинг для сайта от regru, управляемый ISP Manager'ом, установлена CentOS 6

269
Hashmap выдает 0 размер

Hashmap выдает 0 размер

Первая мапа выдает размер 3, все окНо та, которая заполняется из бд, всегда имеет размер 0, повторяющихся ключей и значений нет

200