web-dev-qa-db-ja.com

グロー効果のある動的に生成されたライン

このようなグロー効果で線を描きたい
glow line
問題-ユーザーの操作に応じてプログラムでこの行を生成する必要があります(行の形式はonTouchEvent --ACTION_MOVEで生成されます)。

Xmlファイルやプリメイドビットマップを描画せずにこの効果を生成できますか?

28
sharl

私はこの方法でこの効果を模倣します:

  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()を2回描画します:

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