2

DashPathEffect と丸い四角形のパスを使用して進行状況パスを描画しようとしています。進行状況の更新を取得するたびに、フェーズを使用してパスを更新します。

  private void updatePath(float phase) {
    path.reset();
    RectF rect = new RectF(0, 0, getWidth(), getHeight());
    rect.inset(progressInset, progressInset);
    path.addRoundRect(rect, progressRadius, progressRadius, Path.Direction.CW);

    PathMeasure pathMeasure = new PathMeasure(path, false);
    length = pathMeasure.getLength();

    intervals[0] = length;
    intervals[1] = length;

    PathEffect effect = new DashPathEffect(intervals, phase);

    paint.setPathEffect(effect);
  }

  @Override
  protected void onDraw(Canvas canvas) {
    canvas.drawPath(path, paint);
  }

これは次のようになります: 進行状況バー

ただし、パスは形状の中央左から描画を開始します。形状を回転させずに、形状の中央上部からパスを描き始めることができるかどうか疑問に思っていました。動作しないように見える moveTo を試しましたか? パスの開始点を中央にする方法について何か提案はありますか?

4

0 に答える 0