Динамически генерируемая линия с эффектом свечения - PullRequest
27 голосов
/ 08 июня 2011

Я хочу нарисовать линию с таким эффектом свечения
glow line
Проблема - я должен создать эту строку в программе в зависимости от взаимодействия с пользователем (форма строки будет сгенерирована в onTouchEvent - ACTION_MOVE).

Могу ли я сгенерировать этот эффект без файлов XML или растрового изображения с предварительным указанием чертежа?

1 Ответ

62 голосов
/ 10 июня 2011

Я имитирую этот эффект следующим образом:

  1. Нарисуйте линию с BlurMaskFilter;
  2. Нарисуйте над ней нормальную линию.

Я использую класс Path, чтобы сгенерировать линию и сохранить координаты события MOVE_ACTION, чтобы сгенерировать только часть пути, что мне нужно.

Создать 2 Paint() s:

_paintSimple = new Paint();
_paintSimple.setAntiAlias(true);
_paintSimple.setDither(true);
_paintSimple.setColor(Color.argb(248, 255, 255, 255));
_paintSimple.setStrokeWidth(20f);
_paintSimple.setStyle(Paint.Style.STROKE);
_paintSimple.setStrokeJoin(Paint.Join.ROUND);
_paintSimple.setStrokeCap(Paint.Cap.ROUND);

_paintBlur = new Paint();
_paintBlur.set(_paintSimple);
_paintBlur.setColor(Color.argb(235, 74, 138, 255));
_paintBlur.setStrokeWidth(30f);
_paintBlur.setMaskFilter(new BlurMaskFilter(15, BlurMaskFilter.Blur.NORMAL)); 

И нарисуйте дважды мой Path():

@Override
protected void onDraw(Canvas canvas) {
    canvas.drawPath(mPath, _paintBlur);
    canvas.drawPath(mPath, _paintSimple);
}
...