android.graphics.Canvas#drawCircle ( )源码实例Demo

下面列出了android.graphics.Canvas#drawCircle ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: BaseDialog   文件: MaterialProgressDrawable.java
/**
 * Draw the progress spinner
 */
public void draw(Canvas c, Rect bounds) {
    final RectF arcBounds = mTempBounds;
    arcBounds.set(bounds);
    arcBounds.inset(mStrokeInset, mStrokeInset);

    final float startAngle = (mStartTrim + mRotation) * 360;
    final float endAngle = (mEndTrim + mRotation) * 360;
    float sweepAngle = endAngle - startAngle;

    mPaint.setColor(mCurrentColor);
    c.drawArc(arcBounds, startAngle, sweepAngle, false, mPaint);

    drawTriangle(c, startAngle, sweepAngle, bounds);

    if (mAlpha < 255) {
        mCirclePaint.setColor(mBackgroundColor);
        mCirclePaint.setAlpha(255 - mAlpha);
        c.drawCircle(bounds.exactCenterX(), bounds.exactCenterY(), bounds.width() / 2,
                mCirclePaint);
    }
}
 
源代码2 项目: MaterialNavigationDrawer   文件: Utils.java
public static Bitmap getCroppedBitmapDrawable(Bitmap bitmap) {
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
            bitmap.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    final int color = 0xff424242;
    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(color);
    // canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2,
            bitmap.getWidth() / 2, paint);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
    canvas.drawBitmap(bitmap, rect, rect, paint);
    //Bitmap _bmp = Bitmap.createScaledBitmap(output, 60, 60, false);
    //return _bmp;
    return output;
}
 
源代码3 项目: KickAssSlidingMenu   文件: MaterialRippleLayout.java
@Override
public void draw(Canvas canvas) {
    final boolean positionChanged = adapterPositionChanged();
    if (rippleOverlay) {
        if (!positionChanged) {
            rippleBackground.draw(canvas);
        }
        super.draw(canvas);
        if (!positionChanged) {
            if (rippleRoundedCorners != 0) {
                Path clipPath = new Path();
                RectF rect = new RectF(0, 0, canvas.getWidth(), canvas.getHeight());
                clipPath.addRoundRect(rect, rippleRoundedCorners, rippleRoundedCorners, Path.Direction.CW);
                canvas.clipPath(clipPath);
            }
            canvas.drawCircle(currentCoords.x, currentCoords.y, radius, paint);
        }
    } else {
        if (!positionChanged) {
            rippleBackground.draw(canvas);
            canvas.drawCircle(currentCoords.x, currentCoords.y, radius, paint);
        }
        super.draw(canvas);
    }
}
 
源代码4 项目: osmdroid   文件: DirectedLocationOverlay.java
@Override
public void draw(final Canvas c, final Projection pj) {
	if (this.mLocation != null) {
		pj.toPixels(this.mLocation, screenCoords);

		if (this.mShowAccuracy && this.mAccuracy > 10) {
			final float accuracyRadius = pj.metersToEquatorPixels(this.mAccuracy);
			/* Only draw if the DirectionArrow doesn't cover it. */
			if (accuracyRadius > 8) {
				/* Draw the inner shadow. */
				this.mAccuracyPaint.setAntiAlias(false);
				this.mAccuracyPaint.setAlpha(30);
				this.mAccuracyPaint.setStyle(Style.FILL);
				c.drawCircle(screenCoords.x, screenCoords.y, accuracyRadius,
						this.mAccuracyPaint);

				/* Draw the edge. */
				this.mAccuracyPaint.setAntiAlias(true);
				this.mAccuracyPaint.setAlpha(150);
				this.mAccuracyPaint.setStyle(Style.STROKE);
				c.drawCircle(screenCoords.x, screenCoords.y, accuracyRadius,
						this.mAccuracyPaint);
			}
		}

		/*
		 * Rotate the direction-Arrow according to the bearing we are driving. And draw it to
		 * the canvas.
		 */
		this.directionRotater.setRotate(this.mBearing, DIRECTION_ARROW_CENTER_X,
				DIRECTION_ARROW_CENTER_Y);
		final Bitmap rotatedDirection = Bitmap.createBitmap(DIRECTION_ARROW, 0, 0,
				DIRECTION_ARROW_WIDTH, DIRECTION_ARROW_HEIGHT, this.directionRotater, false);
		c.drawBitmap(rotatedDirection, screenCoords.x - rotatedDirection.getWidth() / 2,
				screenCoords.y - rotatedDirection.getHeight() / 2, this.mPaint);
	}
}
 
源代码5 项目: ReadMark   文件: DotView.java
/**
 * 把bitmap变圆
 *
 * @param bitmap
 * @return
 */
private Bitmap getCircleBitmap(Bitmap bitmap) {
    //创建一个Bitmap,准备在上面作画
    Bitmap base = Bitmap.createBitmap(getMeasuredWidth(), getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(base);

    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setFilterBitmap(true);
    //防抖动
    paint.setDither(true);

    //先在base上画一个圆
    canvas.drawCircle(getMeasuredWidth() / 2
            , getMeasuredHeight() / 2
            , getMeasuredWidth() / 2, paint);
    //设置为SRC_IN
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

    //再在base上画上传进来的bitmap,注意坐标对应(这里从原点开始)
    canvas.drawBitmap(bitmap, 0, 0, paint);

    //回收
    bitmap.recycle();
    bitmap = null;
    return base;
}
 
源代码6 项目: youqu_master   文件: RYBDrawStrategyStateOne.java
@Override
public void drawIcon(Canvas canvas, float fraction, Drawable drawable, int colorOfIcon,
                     WidthAndHeightOfView widthAndHeightOfView) {
    float newFraction = fraction / 0.65f;
    int centerX = widthAndHeightOfView.getWidth() / 2;
    int centerY = widthAndHeightOfView.getHeight() / 2 - 150;
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    canvas.save();
    paint.setColor(Color.parseColor("#e53935"));
    if (newFraction <= 0.33f)  {
        canvas.drawCircle(centerX, centerY - 50, 100 * (newFraction / 0.33f), paint);
    } else {
        canvas.drawCircle(centerX, centerY - 50, 100, paint);
    }
    if (newFraction > 0.33f) {
        paint.setColor(Color.parseColor("#fdd835"));
        if (newFraction <= 0.66f)
            canvas.drawCircle(centerX -35, centerY + 35,100 * ((newFraction - 0.33f) / 0.33f), paint);
        else
            canvas.drawCircle(centerX -35, centerY + 35,100, paint);
    }
    if (newFraction > 0.66f) {
        paint.setColor(Color.parseColor("#1e88e5"));
        if (newFraction <= 1f)
            canvas.drawCircle(centerX + 35, centerY + 35, 100 * ((newFraction - 0.66f) / 0.34f), paint);
        else
            canvas.drawCircle(centerX + 35, centerY + 35, 100, paint);
    }
    canvas.restore();
}
 
源代码7 项目: FABtransitions   文件: FloatingActionButton.java
@Override
protected void onDraw(Canvas canvas) {
    setClickable(true);
    canvas.drawCircle(getWidth() / 2, getHeight() / 2, (float) (getWidth() / 2.6), mButtonPaint);
    canvas.drawBitmap(mBitmap, (getWidth() - mBitmap.getWidth()) / 2,
            (getHeight() - mBitmap.getHeight()) / 2, mDrawablePaint);
}
 
源代码8 项目: codeexamples-android   文件: MultitouchView.java
@Override
protected void onDraw(Canvas canvas) {
	super.onDraw(canvas);

	// draw all pointers
	for (int size = mActivePointers.size(), i = 0; i < size; i++) {
		PointF point = mActivePointers.valueAt(i);
		if (point != null)
			mPaint.setColor(colors[i % 9]);
		canvas.drawCircle(point.x, point.y, SIZE, mPaint);
	}
	canvas.drawText("Total pointers: " + mActivePointers.size(), 10, 40 , textPaint);
}
 
源代码9 项目: AndroidStudyDemo   文件: RippleLayout.java
private void play(Canvas canvas, int mTimer) {
    int alpha = 5; // 透明度从5开始
    for (int i=0; i<=mTimer; i++) {
        alpha += 2; // 每绘制一个外圆,透明度加2
        mPaint.setAlpha(alpha);
        mPaint.setStrokeWidth(2);
        canvas.drawCircle(mBitmapWidth/2, mBitmapHeight/2, mInnerRadius+i, mPaint);
    }
}
 
源代码10 项目: SHSwipeRefreshLayout   文件: SHCircleProgressBar.java
@Override
public void draw(Canvas canvas, Paint paint) {
    final int viewWidth = SHCircleProgressBar.this.getWidth();
    final int viewHeight = SHCircleProgressBar.this.getHeight();
    canvas.drawCircle(viewWidth / 2, viewHeight / 2, (mCircleDiameter / 2 + mShadowRadius),
            mShadowPaint);
    canvas.drawCircle(viewWidth / 2, viewHeight / 2, (mCircleDiameter / 2), paint);
}
 
源代码11 项目: NewFastFrame   文件: CircleImageView.java
@Override
public void draw(Canvas canvas, Paint paint) {
    final int viewWidth = CircleImageView.this.getWidth();
    final int viewHeight = CircleImageView.this.getHeight();
    canvas.drawCircle(viewWidth / 2, viewHeight / 2, viewWidth / 2, mShadowPaint);
    canvas.drawCircle(viewWidth / 2, viewHeight / 2, viewWidth / 2 - mShadowRadius, paint);
}
 
源代码12 项目: Identiconizer   文件: DotMatrixIdenticon.java
@Override
public Bitmap generateIdenticonBitmap(byte[] hash) {
    if (hash.length < 16)
        return null;

    Bitmap bmp = Bitmap.createBitmap(SIZE, SIZE, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bmp);
    canvas.drawColor(BG_COLOR);

    int blue = (hash[13] & 0x01f) << 3;
    int green = (hash[14] & 0x01f) << 3;
    int red = (hash[15] & 0x01f) << 3;
    int color = Color.rgb(red, green, blue);
    if (getColorDistance(color, BG_COLOR) <= 64.0) {
        color = getComplementaryColor(color);
    }

    Paint p = new Paint();
    p.setColor(color);
    p.setStyle(Paint.Style.FILL_AND_STROKE);
    p.setAntiAlias(true);
    for (int y = 0; y < 5; y++) {
        for (int x = 0; x < 5; x++) {
            final int index = y * 5 + x;
            float radius;
            if ((index & 1) == 0) {
                radius = hash[index/2] & 0x0F;
            } else {
                radius = (hash[index/2] >> 4) & 0x0F;
            }
            canvas.drawCircle(x * SIZE / 5 + SIZE / 10, y * SIZE / 5 + SIZE / 10, radius, p);
        }
    }
    return bmp;
}
 
源代码13 项目: android-graphics-demo   文件: ImageUtil.java
public static Bitmap createCircle(int width, int height) {
  Paint paint = new Paint();
  paint.setStyle(Paint.Style.FILL);
  paint.setColor(Color.BLUE);

  Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
  Canvas canvas = new Canvas(bitmap);
  float radius = Math.min(width, height) * 0.45f;
  canvas.drawCircle(width / 2, height / 2, radius, paint);

  return bitmap;
}
 
源代码14 项目: FancyProgress   文件: FancyProgress4.java
@Override
protected void onDraw(Canvas canvas) {
	canvas.save();
	
	canvas.translate(mRadius, mRadius);
	
	for (int i = 0; i < mBallCenters.length; i++) {
		mPaint.setColor(COLORS[i]);
		
		PointF mCurrentCenter = getCurrentCenter(i, mPercent);
		canvas.drawCircle(mCurrentCenter.x, mCurrentCenter.y, mRadius, mPaint);
	}
	
	canvas.restore();
}
 
@Override
protected void onDraw(Canvas canvas) {
	canvas.drawCircle(mX, mY, MAX_SIZE / mTouches, mPaint);
}
 
源代码16 项目: Telegram   文件: CropAreaView.java
@Override
protected void onDraw(Canvas canvas) {
    if (freeform) {
        int lineThickness = AndroidUtilities.dp(2);
        int handleSize = AndroidUtilities.dp(16);
        int handleThickness = AndroidUtilities.dp(3);

        int originX = (int) actualRect.left - lineThickness;
        int originY = (int) actualRect.top - lineThickness;
        int width = (int) (actualRect.right - actualRect.left) + lineThickness * 2;
        int height = (int) (actualRect.bottom - actualRect.top) + lineThickness * 2;

        if (dimVisibile) {
            canvas.drawRect(0, 0, getWidth(), originY + lineThickness, dimPaint);
            canvas.drawRect(0, originY + lineThickness, originX + lineThickness, originY + height - lineThickness, dimPaint);
            canvas.drawRect(originX + width - lineThickness, originY + lineThickness, getWidth(), originY + height - lineThickness, dimPaint);
            canvas.drawRect(0, originY + height - lineThickness, getWidth(), getHeight(), dimPaint);
        }

        if (!frameVisible) {
            return;
        }

        int inset = handleThickness - lineThickness;
        int gridWidth = width - handleThickness * 2;
        int gridHeight = height - handleThickness * 2;

        GridType type = gridType;
        if (type == GridType.NONE && gridProgress > 0)
            type = previousGridType;

        shadowPaint.setAlpha((int) (gridProgress * 26));
        linePaint.setAlpha((int) (gridProgress * 178));

        for (int i = 0; i < 3; i++) {
            if (type == GridType.MINOR) {
                for (int j = 1; j < 4; j++) {
                    if (i == 2 && j == 3)
                        continue;

                    canvas.drawLine(originX + handleThickness + gridWidth / 3 / 3 * j + gridWidth / 3 * i, originY + handleThickness, originX + handleThickness + gridWidth / 3 / 3 * j + gridWidth / 3 * i, originY + handleThickness + gridHeight, shadowPaint);
                    canvas.drawLine(originX + handleThickness + gridWidth / 3 / 3 * j + gridWidth / 3 * i, originY + handleThickness, originX + handleThickness + gridWidth / 3 / 3 * j + gridWidth / 3 * i, originY + handleThickness + gridHeight, linePaint);

                    canvas.drawLine(originX + handleThickness, originY + handleThickness + gridHeight / 3 / 3 * j + gridHeight / 3 * i, originX + handleThickness + gridWidth, originY + handleThickness + gridHeight / 3 / 3 * j + gridHeight / 3 * i, shadowPaint);
                    canvas.drawLine(originX + handleThickness, originY + handleThickness + gridHeight / 3 / 3 * j + gridHeight / 3 * i, originX + handleThickness + gridWidth, originY + handleThickness + gridHeight / 3 / 3 * j + gridHeight / 3 * i, linePaint);
                }
            } else if (type == GridType.MAJOR) {
                if (i > 0) {
                    canvas.drawLine(originX + handleThickness + gridWidth / 3 * i, originY + handleThickness, originX + handleThickness + gridWidth / 3 * i, originY + handleThickness + gridHeight, shadowPaint);
                    canvas.drawLine(originX + handleThickness + gridWidth / 3 * i, originY + handleThickness, originX + handleThickness + gridWidth / 3 * i, originY + handleThickness + gridHeight, linePaint);

                    canvas.drawLine(originX + handleThickness, originY + handleThickness + gridHeight / 3 * i, originX + handleThickness + gridWidth, originY + handleThickness + gridHeight / 3 * i, shadowPaint);
                    canvas.drawLine(originX + handleThickness, originY + handleThickness + gridHeight / 3 * i, originX + handleThickness + gridWidth, originY + handleThickness + gridHeight / 3 * i, linePaint);
                }
            }
        }

        canvas.drawRect(originX + inset, originY + inset, originX + width - inset, originY + inset + lineThickness, framePaint);
        canvas.drawRect(originX + inset, originY + inset, originX + inset + lineThickness, originY + height - inset, framePaint);
        canvas.drawRect(originX + inset, originY + height - inset - lineThickness, originX + width - inset, originY + height - inset, framePaint);
        canvas.drawRect(originX + width - inset - lineThickness, originY + inset, originX + width - inset, originY + height - inset, framePaint);

        canvas.drawRect(originX, originY, originX + handleSize, originY + handleThickness, handlePaint);
        canvas.drawRect(originX, originY, originX + handleThickness, originY + handleSize, handlePaint);

        canvas.drawRect(originX + width - handleSize, originY, originX + width, originY + handleThickness, handlePaint);
        canvas.drawRect(originX + width - handleThickness, originY, originX + width, originY + handleSize, handlePaint);

        canvas.drawRect(originX, originY + height - handleThickness, originX + handleSize, originY + height, handlePaint);
        canvas.drawRect(originX, originY + height - handleSize, originX + handleThickness, originY + height, handlePaint);

        canvas.drawRect(originX + width - handleSize, originY + height - handleThickness, originX + width, originY + height, handlePaint);
        canvas.drawRect(originX + width - handleThickness, originY + height - handleSize, originX + width, originY + height, handlePaint);
    } else {
        if (circleBitmap == null || circleBitmap.getWidth() != actualRect.width()) {
            if (circleBitmap != null) {
                circleBitmap.recycle();
                circleBitmap = null;
            }
            try {
                circleBitmap = Bitmap.createBitmap((int) actualRect.width(), (int) actualRect.height(), Bitmap.Config.ARGB_8888);
                Canvas circleCanvas = new Canvas(circleBitmap);
                circleCanvas.drawRect(0, 0, actualRect.width(), actualRect.height(), dimPaint);
                circleCanvas.drawCircle(actualRect.width() / 2, actualRect.height() / 2, actualRect.width() / 2, eraserPaint);
                circleCanvas.setBitmap(null);
            } catch (Throwable ignore) {

            }
        }
        canvas.drawRect(0, 0, getWidth(), (int) actualRect.top, dimPaint);
        canvas.drawRect(0, (int) actualRect.top, (int) actualRect.left, (int) actualRect.bottom, dimPaint);
        canvas.drawRect((int) actualRect.right, (int) actualRect.top, getWidth(), (int) actualRect.bottom, dimPaint);
        canvas.drawRect(0, (int) actualRect.bottom, getWidth(), getHeight(), dimPaint);
        if (circleBitmap != null) {
            canvas.drawBitmap(circleBitmap, (int) actualRect.left, (int) actualRect.top, null);
        }
    }
}
 
源代码17 项目: ShowcaseView   文件: RippleBackground.java
@Override
protected void onDraw(Canvas canvas) {
    int radius = (Math.min(getWidth(), getHeight())) / 2;
    canvas.drawCircle(radius, radius, radius - rippleStrokeWidth, paint);
}
 
源代码18 项目: CVScanner   文件: CropHighlightView.java
private void drawEdges(Canvas canvas) {
    final float[] p = mTrapezoid.getScreenPoints(getMatrix());
    Path path = new Path();
    path.moveTo((int) p[0], (int) p[1]);
    path.lineTo((int) p[2], (int) p[3]);
    path.lineTo((int) p[4], (int) p[5]);
    path.lineTo((int) p[6], (int) p[7]);
    path.close();
    path.computeBounds(mPathBounds, false);
    mPathBounds.round(mPathBoundsRounded);
    canvas.getClipBounds(mCanvasCLipRect);

    mContext.getDrawingRect(mViewDrawingRect);
    mTopRect.set(0, 0, mViewDrawingRect.right, getDrawRect().top);
    mRightRect.set(0, getDrawRect().top, getDrawRect().left, getDrawRect().bottom);
    mLeftRect.set(getDrawRect().right, getDrawRect().top, mViewDrawingRect.right, getDrawRect().bottom);
    mBottomRect.set(0, getDrawRect().bottom, mViewDrawingRect.right, mViewDrawingRect.bottom);

    canvas.drawRect(mTopRect, mFocusPaint);
    canvas.drawRect(mRightRect, mFocusPaint);
    canvas.drawRect(mLeftRect, mFocusPaint);
    canvas.drawRect(mBottomRect, mFocusPaint);
    if (mCanvasCLipRect.contains(mPathBoundsRounded)) {
        canvas.save();
        canvas.clipRect(getDrawRect());
        path.setFillType(Path.FillType.INVERSE_EVEN_ODD);
        canvas.drawPath(path, mFocusPaint);
        canvas.restore();
    }
    canvas.drawLine(p[0], p[1], p[2], p[3], mOutlinePaint);
    canvas.drawLine(p[2], p[3], p[4], p[5], mOutlinePaint);
    canvas.drawLine(p[4], p[5], p[6], p[7], mOutlinePaint);
    canvas.drawLine(p[0], p[1], p[6], p[7], mOutlinePaint);

    canvas.drawCircle(p[0], p[1], mCropCornerHandleRadius, mOutlinePaint);
    canvas.drawCircle(p[2], p[3], mCropCornerHandleRadius, mOutlinePaint);
    canvas.drawCircle(p[4], p[5], mCropCornerHandleRadius, mOutlinePaint);
    canvas.drawCircle(p[6], p[7], mCropCornerHandleRadius, mOutlinePaint);

    float x = (p[0] + p[2]) / 2;
    float y = (p[1] + p[3]) / 2;
    canvas.drawCircle(x, y, mCropEdgeHandleRadius, mOutlinePaint);
    x = (p[2] + p[4]) / 2;
    y = (p[3] + p[5]) / 2;
    canvas.drawCircle(x, y, mCropEdgeHandleRadius, mOutlinePaint);
    x = (p[4] + p[6]) / 2;
    y = (p[5] + p[7]) / 2;
    canvas.drawCircle(x, y, mCropEdgeHandleRadius, mOutlinePaint);
    x = (p[0] + p[6]) / 2;
    y = (p[1] + p[7]) / 2;
    canvas.drawCircle(x, y, mCropEdgeHandleRadius, mOutlinePaint);


}
 
源代码19 项目: prayer-times-android   文件: QiblaTimeView.java
@SuppressLint("DrawAllocation")
@Override
protected void onDraw(@NonNull Canvas canvas) {
    int width = getWidth();
    int center = width / 2;

    canvas.drawCircle(center, center, (center * 19) / 20f, mBackgroundPaint);

    int size = center / 10;
    //sun line
    if (mShowSun) {
        canvas.drawLine(center, center, (float) (center - 0.9 * center * Math.cos(Math.toRadians(mCurrentAngle))),
                (float) (center - 0.9 * center * Math.sin(Math.toRadians(mCurrentAngle))), mYellowPaint);
        canvas.save();
        canvas.clipPath(mClipPath);
        canvas.drawCircle((float) (center - 0.85 * center * Math.cos(Math.toRadians(mCurrentAngle))),
                (float) (center - 0.85 * center * Math.sin(Math.toRadians(mCurrentAngle))), size, mSunPaint);
        canvas.restore();
    }

    float nightAngle = (float) (mSunriseAngle - mSunsetAngle);
    canvas.drawArc(new RectF(center - center * 0.9f, center - center * 0.9f, center + center * 0.9f, center + center * 0.9f),
            (float) -mSunriseAngle + 90, nightAngle, true, mNightPaint);

    float sw = mYellowPaint.getStrokeWidth() / 2;
    canvas.drawArc(new RectF(center - center * 0.9f + sw, center - center * 0.9f + sw, center + center * 0.9f - sw, center + center * 0.9f - sw),
            (float) -mSunriseAngle + 90, -(360 - nightAngle), false, mYellowPaint);


    canvas.drawCircle(center, center, center / 10f, mCenterPaint);

    int y = center - center / 2;
    mKaabe.setBounds(center - size, y - size, center + size, y + size);
    mKaabe.draw(canvas);

    canvas.drawCircle(center, center, (center * 19) / 20f, mOuterStrokePaint);

    float textShift = center / 30f;
    if (mQiblaTime != null) {
        if (mQiblaTime.getFront() != null) {
            canvas.drawPath(mTopPath, mTrianglePaint);
            canvas.drawText(mQiblaTime.getFront(), center, center - center * 0.9f + textShift, mTextPaint);
        }
        if (mQiblaTime.getLeft() != null) {
            canvas.drawPath(mLeftPath, mTrianglePaint);
            canvas.drawText(mQiblaTime.getLeft(), center - center * 0.84f, center + textShift, mTextPaint);
        }
        if (mQiblaTime.getRight() != null) {
            canvas.drawPath(mRightPath, mTrianglePaint);
            canvas.drawText(mQiblaTime.getRight(), center + center * 0.84f, center + textShift, mTextPaint);
        }
        if (mQiblaTime.getBack() != null) {
            canvas.drawPath(mBottomPath, mTrianglePaint);
            canvas.drawText(mQiblaTime.getBack(), center, center + center * 0.9f + textShift, mTextPaint);
        }
    }


}
 
源代码20 项目: Bop   文件: CircleBarVisualizer.java
@Override
protected void onDraw(Canvas canvas) {
    if (radius == -1) {
        radius = getHeight() < getWidth() ? getHeight() : getWidth();
        radius = (int) (radius * 0.65 / 2);
        double circumference = 2 * Math.PI * radius;
        paint.setStrokeWidth((float) (circumference / 120));
        circlePaint.setStyle(Paint.Style.STROKE);
        circlePaint.setStrokeWidth(4);
    }
    circlePaint.setColor(color);
    canvas.drawCircle(getWidth() / 2, getHeight() / 2, radius, circlePaint);
    if (bytes != null) {
        if (points == null || points.length < bytes.length * 4) {
            points = new float[bytes.length * 4];
        }
        double angle = 0;

        for (int i = 0; i < 120; i++, angle += 3) {
            int x = (int) Math.ceil(i * 8.5);
            int t = ((byte) (-Math.abs(bytes[x]) + 128)) * (getHeight() / 4) / 128;

            points[i * 4] = (float) (getWidth() / 2
                    + radius
                    * Math.cos(Math.toRadians(angle)));

            points[i * 4 + 1] = (float) (getHeight() / 2
                    + radius
                    * Math.sin(Math.toRadians(angle)));

            points[i * 4 + 2] = (float) (getWidth() / 2
                    + (radius + t)
                    * Math.cos(Math.toRadians(angle)));

            points[i * 4 + 3] = (float) (getHeight() / 2
                    + (radius + t)
                    * Math.sin(Math.toRadians(angle)));
        }

        canvas.drawLines(points, paint);
    }
    super.onDraw(canvas);
}