當前位置: 首頁>>代碼示例>>Java>>正文


Java Canvas.drawPath方法代碼示例

本文整理匯總了Java中android.graphics.Canvas.drawPath方法的典型用法代碼示例。如果您正苦於以下問題:Java Canvas.drawPath方法的具體用法?Java Canvas.drawPath怎麽用?Java Canvas.drawPath使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在android.graphics.Canvas的用法示例。


在下文中一共展示了Canvas.drawPath方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: drawTriangle

import android.graphics.Canvas; //導入方法依賴的package包/類
private void drawTriangle(Canvas c, float startAngle, float sweepAngle, Rect bounds) {
    if (this.mShowArrow) {
        if (this.mArrow == null) {
            this.mArrow = new Path();
            this.mArrow.setFillType(FillType.EVEN_ODD);
        } else {
            this.mArrow.reset();
        }
        float inset = ((float) (((int) this.mStrokeInset) / 2)) * this.mArrowScale;
        float x = (float) ((this.mRingCenterRadius * Math.cos(0.0d)) + ((double) bounds.exactCenterX()));
        float y = (float) ((this.mRingCenterRadius * Math.sin(0.0d)) + ((double) bounds.exactCenterY()));
        this.mArrow.moveTo(0.0f, 0.0f);
        this.mArrow.lineTo(((float) this.mArrowWidth) * this.mArrowScale, 0.0f);
        this.mArrow.lineTo((((float) this.mArrowWidth) * this.mArrowScale) / 2.0f, ((float) this.mArrowHeight) * this.mArrowScale);
        this.mArrow.offset(x - inset, y);
        this.mArrow.close();
        this.mArrowPaint.setColor(this.mCurrentColor);
        c.rotate((startAngle + sweepAngle) - 5.0f, bounds.exactCenterX(), bounds.exactCenterY());
        c.drawPath(this.mArrow, this.mArrowPaint);
    }
}
 
開發者ID:JackChan1999,項目名稱:boohee_v5.6,代碼行數:22,代碼來源:MaterialProgressDrawable.java

示例2: draw

import android.graphics.Canvas; //導入方法依賴的package包/類
@Override
public void draw(Canvas canvas, Paint paint, float opacity) {
  opacity *= mOpacity;
  if (opacity > MIN_OPACITY_FOR_DRAW) {
    saveAndSetupCanvas(canvas);
    if (mPath == null) {
      throw new JSApplicationIllegalArgumentException(
          "Shapes should have a valid path (d) prop");
    }
    if (setupFillPaint(paint, opacity)) {
      canvas.drawPath(mPath, paint);
    }
    if (setupStrokePaint(paint, opacity)) {
      canvas.drawPath(mPath, paint);
    }
    restoreCanvas(canvas);
  }
  markUpdateSeen();
}
 
開發者ID:qq565999484,項目名稱:RNLearn_Project1,代碼行數:20,代碼來源:ARTShapeShadowNode.java

示例3: onDraw

import android.graphics.Canvas; //導入方法依賴的package包/類
@Override
protected void onDraw(Canvas canvas) {
    if (getDrawable() == null) {
        return;
    }
    RectF rect = new RectF(getPaddingLeft(), getPaddingTop(), getRight()
            - getLeft() - getPaddingRight(), getBottom() - getTop()
            - getPaddingBottom());

    Path path = new Path();

    if (mArrowLocation == LOCATION_LEFT) {
        leftPath(rect, path);
    } else {
        rightPath(rect, path);
    }

    canvas.drawPath(path, mBitmapPaint);
    drawText(canvas, mAngle);
}
 
開發者ID:GitLqr,項目名稱:LQRWeChat,代碼行數:21,代碼來源:BubbleImageView.java

示例4: draw

import android.graphics.Canvas; //導入方法依賴的package包/類
@Override
public void draw(@NonNull Canvas canvas) {
  canvas.save();
  updateBorderOutline();
  //Shader uses alpha as well.
  mPaint.setAlpha(255);
  if (mPathForBorderOutline != null) {
    int useColor = WXViewUtils.multiplyColorAlpha(mColor, mAlpha);
    if (mShader != null) {
      mPaint.setShader(mShader);
      mPaint.setStyle(Paint.Style.FILL);
      canvas.drawPath(mPathForBorderOutline, mPaint);
      mPaint.setShader(null);
    } else if ((useColor >>> 24) != 0) {
      mPaint.setColor(useColor);
      mPaint.setStyle(Paint.Style.FILL);
      canvas.drawPath(mPathForBorderOutline, mPaint);
      mPaint.setShader(null);
    }
  }
  mPaint.setStyle(Paint.Style.STROKE);
  mPaint.setStrokeJoin(Paint.Join.ROUND);
  drawBorders(canvas);
  mPaint.setShader(null);
  canvas.restore();
}
 
開發者ID:weexext,項目名稱:ucar-weex-core,代碼行數:27,代碼來源:BorderDrawable.java

示例5: onDraw

import android.graphics.Canvas; //導入方法依賴的package包/類
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    final int width = getWidth();
    //重置畫筆
    path.reset();
    //繪製貝塞爾曲線
    path.lineTo(0, headHeight);
    path.quadTo(width / 2, headHeight + waveHeight, width, headHeight);
    path.lineTo(width, 0);
    canvas.drawPath(path, paint);
}
 
開發者ID:Brave-wan,項目名稱:SmartRefresh,代碼行數:13,代碼來源:WaveView.java

示例6: drawRoundedBorders

import android.graphics.Canvas; //導入方法依賴的package包/類
private void drawRoundedBorders(Canvas canvas) {
  if (mBackgroundColor != 0) {
    PAINT.setColor(mBackgroundColor);
    canvas.drawPath(getPathForBorderRadius(), PAINT);
  }

  drawBorders(canvas);
}
 
開發者ID:qq565999484,項目名稱:RNLearn_Project1,代碼行數:9,代碼來源:DrawBorder.java

示例7: paintTriplet

import android.graphics.Canvas; //導入方法依賴的package包/類
public void paintTriplet(Triplet triplet, Canvas canvas, Paint tripletPaint,
                         Junction junctionsArray[], Path tripletPath) {
    int junctionNo1 = triplet.getJunctionNo1();
    int junctionNo2 = triplet.getJunctionNo2();
    int junctionNo3 = triplet.getJunctionNo3();

    tripletPath.reset();
    tripletPath.moveTo(junctionsArray[junctionNo1].getX(), junctionsArray[junctionNo1].getY());
    tripletPath.lineTo(junctionsArray[junctionNo2].getX(), junctionsArray[junctionNo2].getY());
    tripletPath.lineTo(junctionsArray[junctionNo3].getX(), junctionsArray[junctionNo3].getY());

    canvas.drawPath(tripletPath, tripletPaint);
}
 
開發者ID:varunon9,項目名稱:Fitto,代碼行數:14,代碼來源:GameUtility.java

示例8: drawVertLine

import android.graphics.Canvas; //導入方法依賴的package包/類
private void drawVertLine(Canvas c)
{
    path.reset();
    path.moveTo(rect.centerX(), rect.top);
    path.lineTo(rect.centerX(), rect.bottom);
    c.drawPath(path, paint);
}
 
開發者ID:mkulesh,項目名稱:microMathematics,代碼行數:8,代碼來源:CustomTextView.java

示例9: drawProgressRectBackground

import android.graphics.Canvas; //導入方法依賴的package包/類
private void drawProgressRectBackground(Canvas canvas, int paintColor) {
    canvas.save();
    canvas.translate(getPaddingLeft(), getPaddingTop());
    mPaint.setStyle(Paint.Style.STROKE);
    mPaint.setColor(paintColor);
    drawRoundRectPath();
    canvas.drawPath(mRoundRectPath, mPaint);
    canvas.restore();
}
 
開發者ID:guzhigang001,項目名稱:Bailan,代碼行數:10,代碼來源:DownloadProgressButton.java

示例10: onDraw

import android.graphics.Canvas; //導入方法依賴的package包/類
@Override
protected void onDraw(Canvas canvas) {
    if (excludeSide != EXCLUDE_ALL) {
        canvas.getClipBounds(mDrawRect);
        mPath = PathHelper.calculatePath(this, mPath, mDrawRect, excludeSide);
        canvas.drawPath(mPath, strokePaint);
    }
    super.onDraw(canvas);
}
 
開發者ID:razerdp,項目名稱:StrokeLayouts,代碼行數:10,代碼來源:StrokeFrameLayout.java

示例11: drawDebugIndicator

import android.graphics.Canvas; //導入方法依賴的package包/類
private void drawDebugIndicator(Canvas canvas) {
  DEBUG_PAINT.setColor(WHITE);
  Path path = getTrianglePath(0, 0, (int) (16 * density));
  canvas.drawPath(path, DEBUG_PAINT);

  DEBUG_PAINT.setColor(loadedFrom.debugColor);
  path = getTrianglePath(0, 0, (int) (15 * density));
  canvas.drawPath(path, DEBUG_PAINT);
}
 
開發者ID:weiwenqiang,項目名稱:GitHub,代碼行數:10,代碼來源:PicassoDrawable.java

示例12: onDraw

import android.graphics.Canvas; //導入方法依賴的package包/類
@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // 畫布整體向上偏移
        canvas.translate(0, -Utils.getStatusBarHeight(getResources()));

        stickyRadius = getStickyRadius();

        // 3、根據 dragCenter 動態計算 dragPoint 和 stickyPoint
        // dragPoint: 2圓圓心連線的垂線與 drag 圓的交點
        // stickyPoint: 2圓圓心連線的垂線與 sticky 圓的交點

        float xOffset = dragCenter.x - stickyCenter.x;
        float yOffset = dragCenter.y - stickyCenter.y;

        if (xOffset != 0) {
            // 斜率
            lineK = yOffset / xOffset;
        }
        dragPoint = GeometryUtil.getIntersectionPoints(dragCenter, dragRadius, lineK);
        stickyPoint = GeometryUtil.getIntersectionPoints(stickyCenter, stickyRadius, lineK);
        controlPoint = GeometryUtil.getPointByPercent(dragCenter, stickyCenter, 0.618f);


        // 1、繪製圓
        // 繪製拖拽圓
        canvas.drawCircle(dragCenter.x, dragCenter.y, dragRadius, paint);

        if (!isDragOutOfRange) {
            // 繪製固定圓
            canvas.drawCircle(stickyCenter.x, stickyCenter.y, stickyRadius, paint);
            // 2、使用貝塞爾曲線繪製連接部分
            Path path = new Path();
            // 設置起點
            path.moveTo(stickyPoint[0].x, stickyPoint[0].y);
            // 使用貝塞爾曲線連接
            path.quadTo(controlPoint.x, controlPoint.y, dragPoint[0].x, dragPoint[0].y);
            // 連線
            path.lineTo(dragPoint[1].x, dragPoint[1].y);
            path.quadTo(controlPoint.x, controlPoint.y, stickyPoint[1].x, stickyPoint[1].y);
//        path.close(); // 默認關閉
            canvas.drawPath(path, paint); // 繪製
        }
        // 繪製圈圈,以固定圓圓心為圓心,然後80為半徑
        paint.setStyle(Paint.Style.STROKE);// 設置隻有邊線
        canvas.drawCircle(stickyCenter.x, stickyCenter.y, maxDistance, paint);
        paint.setStyle(Paint.Style.FILL);

    }
 
開發者ID:sleticalboy,項目名稱:CustomWeight,代碼行數:51,代碼來源:GooView.java

示例13: onDraw

import android.graphics.Canvas; //導入方法依賴的package包/類
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawColor(Color.TRANSPARENT);
    if (out) {
        float dr = c2.r / 2 + c2.r * 4 * (brokenProgress / 100f);
        Log.i("info", "dr" + dr);
        canvas.drawCircle(c2.x, c2.y, c2.r / (brokenProgress + 1), paint);
        canvas.drawCircle(c2.x - dr, c2.y - dr, c2.r / (brokenProgress + 2), paint);
        canvas.drawCircle(c2.x + dr, c2.y - dr, c2.r / (brokenProgress + 2), paint);
        canvas.drawCircle(c2.x - dr, c2.y + dr, c2.r / (brokenProgress + 2), paint);
        canvas.drawCircle(c2.x + dr, c2.y + dr, c2.r / (brokenProgress + 2), paint);
    } else {
        // 繪製手指跟蹤的圓形
        if (catchBitmap == null || (catchBitmap != null && catchBitmap.isRecycled())) {
            return;
        }
        canvas.drawBitmap(catchBitmap, c2.x - c2.r, c2.y - c2.r, paint);
        path.reset();
        float deltaX = c2.x - c1.x;
        float deltaY = -(c2.y - c1.y);
        double distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
        double sin = deltaY / distance;
        double cos = deltaX / distance;
        nearby = distance < c2.r * maxDistance;
        if (nearby && !broken) {
            canvas.drawCircle(c1.x, c1.y, c1.r, paint);
            path.moveTo((float) (c1.x - c1.r * sin), (float) (c1.y - c1.r * cos));
            path.lineTo((float) (c1.x + c1.r * sin), (float) (c1.y + c1.r * cos));
            path.quadTo((c1.x + c2.x) / 2, (c1.y + c2.y) / 2, (float) (c2.x + c2.r * sin), (float) (c2.y + c2.r
                        * cos));
            path.lineTo((float) (c2.x - c2.r * sin), (float) (c2.y - c2.r * cos));
            path.quadTo((c1.x + c2.x) / 2, (c1.y + c2.y) / 2, (float) (c1.x - c1.r * sin), (float) (c1.y - c1.r
                        * cos));
            canvas.drawPath(path, paint);
        } else {
            broken = true; // 已經拉斷了
        }
    }

}
 
開發者ID:zqHero,項目名稱:rongyunDemo,代碼行數:42,代碼來源:DragPointView.java

示例14: draw

import android.graphics.Canvas; //導入方法依賴的package包/類
@Override
public void draw(Canvas canvas) {
  Rect bounds = getBounds();
  switch (mType) {
    case CLIPPING:
      int saveCount = canvas.save();
      // clip, note: doesn't support anti-aliasing
      mPath.setFillType(Path.FillType.EVEN_ODD);
      canvas.clipPath(mPath);
      super.draw(canvas);
      canvas.restoreToCount(saveCount);
      break;
    case OVERLAY_COLOR:
      super.draw(canvas);
      mPaint.setColor(mOverlayColor);
      mPaint.setStyle(Paint.Style.FILL);
      mPath.setFillType(Path.FillType.INVERSE_EVEN_ODD);
      canvas.drawPath(mPath, mPaint);

      if (mIsCircle) {
        // INVERSE_EVEN_ODD will only draw inverse circle within its bounding box, so we need to
        // fill the rest manually if the bounds are not square.
        float paddingH = (bounds.width() - bounds.height() + mBorderWidth) / 2f;
        float paddingV = (bounds.height() - bounds.width() + mBorderWidth) / 2f;
        if (paddingH > 0) {
          canvas.drawRect(bounds.left, bounds.top, bounds.left + paddingH, bounds.bottom, mPaint);
          canvas.drawRect(
              bounds.right - paddingH,
              bounds.top,
              bounds.right,
              bounds.bottom,
              mPaint);
        }
        if (paddingV > 0) {
          canvas.drawRect(bounds.left, bounds.top, bounds.right, bounds.top + paddingV, mPaint);
          canvas.drawRect(
              bounds.left,
              bounds.bottom - paddingV,
              bounds.right,
              bounds.bottom,
              mPaint);
        }
      }
      break;
  }

  if (mBorderColor != Color.TRANSPARENT) {
    mPaint.setStyle(Paint.Style.STROKE);
    mPaint.setColor(mBorderColor);
    mPaint.setStrokeWidth(mBorderWidth);
    mPath.setFillType(Path.FillType.EVEN_ODD);
    canvas.drawPath(mBorderPath, mPaint);
  }
}
 
開發者ID:weiwenqiang,項目名稱:GitHub,代碼行數:55,代碼來源:RoundedCornersDrawable.java

示例15: renderOnCanvas

import android.graphics.Canvas; //導入方法依賴的package包/類
private void renderOnCanvas(Canvas canvas, float scale) {
    canvas.save();
    canvas.scale(scale, scale);

    mTempPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));

    // Draw the pattern by creating the paths, adjusting the colors and drawing them. The path
    // values are extracted from the SVG of the pattern file.

    if (sPatternPaths == null) {
        sPatternPaths = new Path[NUM_PATHS];
        // Lightness values of the pattern, range 0 - 255
        sPatternLightness = new int[] { 10, 40, 51, 66, 91, 112, 130 };

        Path p = sPatternPaths[0] = new Path();
        p.moveTo(1029.4f, 357.5f);
        p.lineTo(1366f, 759.1f);
        p.lineTo(1366f, 0f);
        p.lineTo(1137.7f, 0f);
        p.close();

        p = sPatternPaths[1] = new Path();
        p.moveTo(1138.1f, 0f);
        p.rLineTo(-144.8f, 768f);
        p.rLineTo(372.7f, 0f);
        p.rLineTo(0f, -524f);
        p.cubicTo(1290.7f, 121.6f, 1219.2f, 41.1f, 1178.7f, 0f);
        p.close();

        p = sPatternPaths[2] = new Path();
        p.moveTo(949.8f, 768f);
        p.rCubicTo(92.6f, -170.6f, 213f, -440.3f, 269.4f, -768f);
        p.lineTo(585f, 0f);
        p.rLineTo(2.1f, 766f);
        p.close();

        p = sPatternPaths[3] = new Path();
        p.moveTo(471.1f, 768f);
        p.rMoveTo(704.5f, 0f);
        p.cubicTo(1123.6f, 563.3f, 1027.4f, 275.2f, 856.2f, 0f);
        p.lineTo(476.4f, 0f);
        p.rLineTo(-5.3f, 768f);
        p.close();

        p = sPatternPaths[4] = new Path();
        p.moveTo(323.1f, 768f);
        p.moveTo(777.5f, 768f);
        p.cubicTo(661.9f, 348.8f, 427.2f, 21.4f, 401.2f, 25.4f);
        p.lineTo(323.1f, 768f);
        p.close();

        p = sPatternPaths[5] = new Path();
        p.moveTo(178.44286f, 766.85714f);
        p.lineTo(308.7f, 768f);
        p.cubicTo(381.7f, 604.6f, 481.6f, 344.3f, 562.2f, 0f);
        p.lineTo(0f, 0f);
        p.close();

        p = sPatternPaths[6] = new Path();
        p.moveTo(146f, 0f);
        p.lineTo(0f, 0f);
        p.lineTo(0f, 768f);
        p.lineTo(394.2f, 768f);
        p.cubicTo(327.7f, 475.3f, 228.5f, 201f, 146f, 0f);
        p.close();
    }

    for (int i = 0; i < NUM_PATHS; i++) {
        // Color is 0xAARRGGBB, so alpha << 24 will create a color with (alpha)% black.
        // Although the color components don't really matter, since the backing bitmap cache is
        // ALPHA_8.
        mTempPaint.setColor(sPatternLightness[i] << 24);
        canvas.drawPath(sPatternPaths[i], mTempPaint);
    }

    canvas.restore();
    mTempPaint.reset();
}
 
開發者ID:Trumeet,項目名稱:SetupWizardLibCompat,代碼行數:79,代碼來源:GlifPatternDrawable.java


注:本文中的android.graphics.Canvas.drawPath方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。