@Override public void draw(Canvas canvas) { int restoreCount = canvas.save(); float degrees = (mClockwise ? 180 : -180) * ((mPrevState < mCurState ? 0f : 1f) + mAnimProgress); if(mIsRtl) canvas.scale(-1f, 1f, mDrawBound.centerX(), mDrawBound.centerY()); canvas.rotate(degrees, mDrawBound.centerX(), mDrawBound.centerY()); canvas.drawPath(mPath, mPaint); canvas.restoreToCount(restoreCount); }
@Override public void draw(Canvas canvas, float posX, float posY) { MPPointF offset = getOffsetForDrawingAtPoint(posX, posY); int saveId = canvas.save(); // translate to the correct position and draw canvas.translate(posX + offset.x, posY + offset.y); draw(canvas); canvas.restoreToCount(saveId); } }
@Override protected void onDraw(Canvas canvas) { if (imageOffset != 0) { final int saveCount = canvas.save(); canvas.translate(0f, imageOffset); super.onDraw(canvas); canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), scrimPaint); canvas.restoreToCount(saveCount); } else { super.onDraw(canvas); canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), scrimPaint); } }
public void drawChild(Canvas canvas) { if (sprites != null) { for (Sprite sprite : sprites) { int count = canvas.save(); sprite.draw(canvas); canvas.restoreToCount(count); } } }
@UiThread private void drawBackground(Canvas canvas, float fromX, float toX) { int count = canvas.save(); canvas.clipRect(fromX, (int) ((canvas.getHeight() - mStrokeWidth) / 2), toX, (int) ((canvas.getHeight() + mStrokeWidth) / 2)); mBackgroundDrawable.draw(canvas); canvas.restoreToCount(count); }
@Override protected void draw(Canvas canvas) { int saveCount = canvas.save(); mTempBounds.set(mBounds); mTempBounds.inset(mStrokeInset, mStrokeInset); canvas.rotate(mGroupRotation, mTempBounds.centerX(), mTempBounds.centerY()); if (mSwipeDegrees != 0) { mPaint.setColor(mCurrentColor); canvas.drawArc(mTempBounds, mStartDegrees, mSwipeDegrees, false, mPaint); } canvas.restoreToCount(saveCount); }
public static void drawImage(Canvas canvas, Drawable drawable, int x, int y, int width, int height) { MPPointF drawOffset = MPPointF.getInstance(); drawOffset.x = x - (width / 2); drawOffset.y = y - (height / 2); drawable.copyBounds(mDrawableBoundsCache); drawable.setBounds( mDrawableBoundsCache.left, mDrawableBoundsCache.top, mDrawableBoundsCache.left + width, mDrawableBoundsCache.top + width); int saveId = canvas.save(); // translate to the correct position and draw canvas.translate(drawOffset.x, drawOffset.y); drawable.draw(canvas); canvas.restoreToCount(saveId); }
canvas.restoreToCount(saveId);
private void drawSky(Canvas canvas, int width, int height) { Matrix matrix = mMatrix; matrix.reset(); int bWidth = mDrawableSky.getBounds().width();//mSky.getWidth(); int bHeight = mDrawableSky.getBounds().height();//mSky.getHeight(); float townScale = 1f * width / bWidth; float offsetX = 0; float offsetY = height / 2 - bHeight / 2; // matrix.postScale(townScale, townScale); // matrix.postTranslate(offsetX, offsetY); // // canvas.drawBitmap(mSky, matrix, null); final int saveCount = canvas.getSaveCount(); canvas.save(); canvas.translate(offsetX, offsetY); matrix.postScale(townScale, townScale); mDrawableSky.draw(canvas); canvas.restoreToCount(saveCount); }
@Override public void draw(@NonNull Canvas c) { final Drawable thisDrawable = this; final Rect bounds = thisDrawable.getBounds(); final int saveCount = c.save(); c.rotate(mRotation, bounds.exactCenterX(), bounds.exactCenterY()); mRing.draw(c, bounds); c.restoreToCount(saveCount); }
@Override protected void drawZeroLine(Canvas c) { int clipRestoreCount = c.save(); mZeroLineClippingRect.set(mViewPortHandler.getContentRect()); mZeroLineClippingRect.inset(-mYAxis.getZeroLineWidth(), 0.f); c.clipRect(mLimitLineClippingRect); // draw zero line MPPointD pos = mTrans.getPixelForValues(0f, 0f); mZeroLinePaint.setColor(mYAxis.getZeroLineColor()); mZeroLinePaint.setStrokeWidth(mYAxis.getZeroLineWidth()); Path zeroLinePath = mDrawZeroLinePathBuffer; zeroLinePath.reset(); zeroLinePath.moveTo((float) pos.x - 1, mViewPortHandler.contentTop()); zeroLinePath.lineTo((float) pos.x - 1, mViewPortHandler.contentBottom()); // draw a path because lines don't support dashing on lower android versions c.drawPath(zeroLinePath, mZeroLinePaint); c.restoreToCount(clipRestoreCount); }
/** * Draws the zero line. */ protected void drawZeroLine(Canvas c) { int clipRestoreCount = c.save(); mZeroLineClippingRect.set(mViewPortHandler.getContentRect()); mZeroLineClippingRect.inset(0.f, -mYAxis.getZeroLineWidth()); c.clipRect(mZeroLineClippingRect); // draw zero line MPPointD pos = mTrans.getPixelForValues(0f, 0f); mZeroLinePaint.setColor(mYAxis.getZeroLineColor()); mZeroLinePaint.setStrokeWidth(mYAxis.getZeroLineWidth()); Path zeroLinePath = mDrawZeroLinePath; zeroLinePath.reset(); zeroLinePath.moveTo(mViewPortHandler.contentLeft(), (float) pos.y); zeroLinePath.lineTo(mViewPortHandler.contentRight(), (float) pos.y); // draw a path because lines don't support dashing on lower android versions c.drawPath(zeroLinePath, mZeroLinePaint); c.restoreToCount(clipRestoreCount); }
@Override public void draw(Canvas canvas) { super.draw(canvas); if (lineCount == 1) { collapsingText.draw(canvas); } else { int savePoint = canvas.save(); float x = titleInsetStart; float y = Math.max(textTop - scrollOffset, titleInsetTop); canvas.translate(x, y); canvas.clipRect(0, 0, getWidth() - titleInsetStart - titleInsetEnd, Math.max(getHeight() - scrollOffset, collapsedHeight) - y); layout.draw(canvas); canvas.restoreToCount(savePoint); } }
@Override protected void onDraw(Canvas canvas) { if (!mIsAnimatorCancel) { final Rect bounds = getBounds(); final int saveCount = canvas.save(); canvas.rotate(mRotation * 360, bounds.exactCenterX(), bounds.exactCenterY()); drawRing(canvas, bounds); canvas.restoreToCount(saveCount); } else { canvas.restore(); } }
@Override public void draw(Canvas c) { final Rect bounds = getBounds(); final int saveCount = c.save(); c.rotate(mRotation, bounds.exactCenterX(), bounds.exactCenterY()); mRing.draw(c, bounds); c.restoreToCount(saveCount); }
/** * Draws the provided path in filled mode with the provided drawable. * * @param c * @param filledPath * @param drawable */ protected void drawFilledPath(Canvas c, Path filledPath, Drawable drawable) { if (clipPathSupported()) { int save = c.save(); c.clipPath(filledPath); drawable.setBounds((int) mViewPortHandler.contentLeft(), (int) mViewPortHandler.contentTop(), (int) mViewPortHandler.contentRight(), (int) mViewPortHandler.contentBottom()); drawable.draw(c); c.restoreToCount(save); } else { throw new RuntimeException("Fill-drawables not (yet) supported below API level 18, " + "this code was run on API level " + Utils.getSDKInt() + "."); } }
@Override public void renderGridLines(Canvas c) { if (!mXAxis.isDrawGridLinesEnabled() || !mXAxis.isEnabled()) return; int clipRestoreCount = c.save(); c.clipRect(getGridClippingRect()); if(mRenderGridLinesBuffer.length != mAxis.mEntryCount * 2){ mRenderGridLinesBuffer = new float[mXAxis.mEntryCount * 2]; } float[] positions = mRenderGridLinesBuffer; for (int i = 0; i < positions.length; i += 2) { positions[i] = mXAxis.mEntries[i / 2]; positions[i + 1] = mXAxis.mEntries[i / 2]; } mTrans.pointValuesToPixel(positions); setupGridPaint(); Path gridLinePath = mRenderGridLinesPath; gridLinePath.reset(); for (int i = 0; i < positions.length; i += 2) { drawGridLine(c, positions[i], positions[i + 1], gridLinePath); } c.restoreToCount(clipRestoreCount); }
@Override public void renderGridLines(Canvas c) { if (!mYAxis.isEnabled()) return; if (mYAxis.isDrawGridLinesEnabled()) { int clipRestoreCount = c.save(); c.clipRect(getGridClippingRect()); float[] positions = getTransformedPositions(); mGridPaint.setColor(mYAxis.getGridColor()); mGridPaint.setStrokeWidth(mYAxis.getGridLineWidth()); mGridPaint.setPathEffect(mYAxis.getGridDashPathEffect()); Path gridLinePath = mRenderGridLinesPath; gridLinePath.reset(); // draw the grid for (int i = 0; i < positions.length; i += 2) { // draw a path because lines don't support dashing on lower android versions c.drawPath(linePath(gridLinePath, i, positions), mGridPaint); gridLinePath.reset(); } c.restoreToCount(clipRestoreCount); } if (mYAxis.isDrawZeroLineEnabled()) { drawZeroLine(c); } }
@Override public void drawChild(Canvas canvas) { Rect bounds = clipSquare(getBounds()); for (int i = 0; i < getChildCount(); i++) { int count = canvas.save(); canvas.rotate(45 + i * 90, bounds.centerX(), bounds.centerY()); Sprite sprite = getChildAt(i); sprite.draw(canvas); canvas.restoreToCount(count); } }
@Override public void drawChild(Canvas canvas) { for (int i = 0; i < getChildCount(); i++) { Sprite sprite = getChildAt(i); int count = canvas.save(); canvas.rotate(i * 360 / getChildCount(), getBounds().centerX(), getBounds().centerY()); sprite.draw(canvas); canvas.restoreToCount(count); } }