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

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

源代码1 项目: starcor.xul   文件: XulWorker.java
private static Bitmap toRoundCornerMutableBitmap(Canvas canvas, Paint paintClear, Bitmap srcBitmap, float[] roundRadius) {
	canvas.setBitmap(srcBitmap);
	RectF inset = new RectF(1, 1, 1, 1);
	if (roundRadius.length == 2) {
		float[] tmpRoundRadius = new float[8];
		for (int i = 0; i < 4; ++i) {
			tmpRoundRadius[i * 2 + 0] = roundRadius[0];
			tmpRoundRadius[i * 2 + 1] = roundRadius[1];
			roundRadius = tmpRoundRadius;
		}
	}
	canvas.save();
	canvas.translate(-1, -1);
	RoundRectShape roundRectShape = new RoundRectShape(null, inset, roundRadius);
	roundRectShape.resize(srcBitmap.getWidth() + 2, srcBitmap.getHeight() + 2);
	roundRectShape.draw(canvas, paintClear);
	canvas.restore();
	canvas.setBitmap(null);
	return srcBitmap;
}
 
源代码2 项目: AndroidMathKeyboard   文件: CharBox.java
public void draw(Canvas g2, float x, float y) {
	drawDebug(g2, x, y);
	g2.save();
	g2.translate(x, y);
	Typeface font = FontInfo.getFont(cf.fontId);
	if (size != 1) {
		g2.scale(size, size);
	}
	Paint st = AjLatexMath.getPaint();
	st.setTextSize(TeXFormula.PIXELS_PER_POINT);
	st.setTypeface(font);
	st.setStyle(Style.FILL);
	st.setAntiAlias(true);
	st.setStrokeWidth(0);
	arr[0] = cf.c;
	g2.drawText(arr, 0, 1, 0, 0, st);
	g2.restore();
}
 
源代码3 项目: LRecyclerView   文件: BallBeatIndicator.java
@Override
public void draw(Canvas canvas, Paint paint) {
    float circleSpacing=4;
    float radius=(getWidth()-circleSpacing*2)/6;
    float x = getWidth()/ 2-(radius*2+circleSpacing);
    float y=getHeight() / 2;
    for (int i = 0; i < 3; i++) {
        canvas.save();
        float translateX=x+(radius*2)*i+circleSpacing*i;
        canvas.translate(translateX, y);
        canvas.scale(scaleFloats[i], scaleFloats[i]);
        paint.setAlpha(alphas[i]);
        canvas.drawCircle(0, 0, radius, paint);
        canvas.restore();
    }
}
 
源代码4 项目: openboard   文件: KeyboardView.java
private void onDrawKey(@Nonnull final Key key, @Nonnull final Canvas canvas,
        @Nonnull final Paint paint) {
    final int keyDrawX = key.getDrawX() + getPaddingLeft();
    final int keyDrawY = key.getY() + getPaddingTop();
    canvas.translate(keyDrawX, keyDrawY);

    final KeyVisualAttributes attr = key.getVisualAttributes();
    final KeyDrawParams params = mKeyDrawParams.mayCloneAndUpdateParams(key.getHeight(), attr);
    params.mAnimAlpha = Constants.Color.ALPHA_OPAQUE;

    if (!key.isSpacer()) {
        final Drawable background = key.selectBackgroundDrawable(
                mKeyBackground, mFunctionalKeyBackground, mSpacebarBackground);
        if (background != null) {
            onDrawKeyBackground(key, canvas, background);
        }
    }
    onDrawKeyTopVisuals(key, canvas, paint, params);

    canvas.translate(-keyDrawX, -keyDrawY);
}
 
源代码5 项目: Telegram   文件: SettingsSearchCell.java
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
    Drawable drawable = getDrawable();
    canvas.save();
    Paint.FontMetricsInt fmPaint = paint.getFontMetricsInt();
    int fontHeight = fmPaint.descent - fmPaint.ascent;
    int centerY = y + fmPaint.descent - fontHeight / 2;
    int transY = centerY - (drawable.getBounds().bottom - drawable.getBounds().top) / 2;
    canvas.translate(x, transY);
    if (LocaleController.isRTL) {
        canvas.scale(-1, 1, drawable.getIntrinsicWidth() / 2, drawable.getIntrinsicHeight() / 2);
    }
    drawable.draw(canvas);
    canvas.restore();
}
 
源代码6 项目: Klyph   文件: SmoothProgressDrawable.java
@Override
public void draw(Canvas canvas) {
    mBounds = getBounds();
    canvas.clipRect(mBounds);

    int boundsWidth = mBounds.width();

    if (mReversed) {
        canvas.translate(boundsWidth, 0);
        canvas.scale(-1, 1);
    }

    drawStrokes(canvas);
}
 
源代码7 项目: FamilyChat   文件: ParallaxViewPager.java
private void drawLeftShadow(Canvas canvas)
{
    canvas.save();
    float translate = (getScrollX() / getWidth() + 1) * getWidth() - mShadowWidth;
    canvas.translate(translate, 0);
    mLeftShadow.setBounds(0, 0, mShadowWidth, getHeight());
    mLeftShadow.draw(canvas);
    canvas.restore();
}
 
@Override
public void draw(Canvas canvas, Paint paint) {
    float circleSpacing=12;
    float x=getWidth()/2;
    float y=getHeight()/2;

    //draw fill circle
    canvas.save();
    canvas.translate(x, y);
    canvas.scale(scaleFloat1, scaleFloat1);
    paint.setStyle(Paint.Style.FILL);
    canvas.drawCircle(0, 0, x / 2.5f, paint);

    canvas.restore();

    canvas.translate(x, y);
    canvas.scale(scaleFloat2, scaleFloat2);
    canvas.rotate(degrees);

    paint.setStrokeWidth(3);
    paint.setStyle(Paint.Style.STROKE);

    //draw two arc
    float[] startAngles=new float[]{225,45};
    for (int i = 0; i < 2; i++) {
        RectF rectF=new RectF(-x+circleSpacing,-y+circleSpacing,x-circleSpacing,y-circleSpacing);
        canvas.drawArc(rectF, startAngles[i], 90, false, paint);
    }
}
 
源代码9 项目: android-proguards   文件: CollapsingTitleLayout.java
@Override
public void draw(Canvas canvas) {
    super.draw(canvas);
    if (lineCount == 1) {
        collapsingText.draw(canvas);
    } else {
        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);
    }
}
 
源代码10 项目: android_9.0.0_r45   文件: VideoView.java
@Override
public void draw(Canvas canvas) {
    super.draw(canvas);

    if (mSubtitleWidget != null) {
        final int saveCount = canvas.save();
        canvas.translate(getPaddingLeft(), getPaddingTop());
        mSubtitleWidget.draw(canvas);
        canvas.restoreToCount(saveCount);
    }
}
 
源代码11 项目: Common   文件: LoadingView.java
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    if (mWidth == 0 || mHeight == 0 || mTempRect == null) {
        return;
    }
    canvas.translate(mWidth / 2, mHeight / 2);
    mJ++;
    mJ %= mCount;
    int alpha;
    for (int i = 0; i < mCount; i++) {
        canvas.rotate(360f / mCount);
        alpha = (i - mJ + mCount) % mCount;
        alpha = (int) (((alpha) * (255f - mMinAlpha) / mCount + mMinAlpha));
        mPaint.setAlpha(alpha);
        switch (mType) {
            case TYPE_DAISY:
                /** Daisy rotation **/
                canvas.drawRoundRect(mTempRect, mRectWidth / 2, mRectWidth / 2, mPaint);
                break;
            case TYPE_DOT:
                /** Dot rotation **/
                canvas.drawCircle((mTempRect.left + mTempRect.right) / 2, (mTempRect.top + mTempRect.bottom) / 2, mRectWidth * 2 / 3, mPaint);
                break;
        }
    }
    if (mIsFirst) {
        mIsFirst = false;
        mHandler.postDelayed(mRunnable, mDuration / mCount);
    }
}
 
源代码12 项目: CoolClock   文件: WheelView.java
/**
 * Draws items
 * @param canvas the canvas for drawing
 */
private void drawItems(Canvas canvas) {
	canvas.save();
	
	int top = (currentItem - firstItem) * getItemHeight() + (getItemHeight() - getHeight()) / 2;
	canvas.translate(PADDING, - top + scrollingOffset);
	
	itemsLayout.draw(canvas);

	canvas.restore();
}
 
源代码13 项目: Augendiagnose   文件: VerticalSeekBar.java
@Override
protected final void onDraw(@NonNull final Canvas c) {
	c.rotate(ROTATION_ANGLE);
	c.translate(-getHeight(), 0);

	super.onDraw(c);
}
 
源代码14 项目: Slice   文件: RoundRectDrawableWithShadow.java
@Override
public void draw(Canvas canvas) {
    if (mDirty) {
        buildComponents(getBounds());
        mDirty = false;
    }
    canvas.translate(0, mRawShadowSize / 2);
    drawShadow(canvas);
    canvas.translate(0, -mRawShadowSize / 2);
    sRoundRectHelper.drawRoundRect(canvas, mCardBounds, mCornerRadius, mPaint);
}
 
源代码15 项目: UltimateAndroid   文件: SwitchButton.java
@Override
protected void onDraw(Canvas canvas) {
	super.onDraw(canvas);

	canvas.getClipBounds(mBounds);
	if (mBounds != null && mConf.needShrink()) {
		mBounds.inset(mConf.getInsetX(), mConf.getInsetY());
		canvas.clipRect(mBounds, Region.Op.REPLACE);
		canvas.translate(mConf.getInsetBounds().left, mConf.getInsetBounds().top);
	}

	boolean useGeneralDisableEffect = !isEnabled() && this.notStatableDrawable();
	if (useGeneralDisableEffect) {
		canvas.saveLayerAlpha(mSaveLayerZone, 255 / 2, Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG
				| Canvas.CLIP_TO_LAYER_SAVE_FLAG);
	}

	mConf.getOffDrawable().draw(canvas);
	mConf.getOnDrawable().setAlpha(calcAlpha());
	mConf.getOnDrawable().draw(canvas);
	mConf.getThumbDrawable().draw(canvas);

	if (useGeneralDisableEffect) {
		canvas.restore();
	}

	if (SHOW_RECT) {
		mRectPaint.setColor(Color.parseColor("#AA0000"));
		canvas.drawRect(mBackZone, mRectPaint);
		mRectPaint.setColor(Color.parseColor("#00FF00"));
		canvas.drawRect(mSafeZone, mRectPaint);
		mRectPaint.setColor(Color.parseColor("#0000FF"));
		canvas.drawRect(mThumbZone, mRectPaint);
	}
}
 
源代码16 项目: BigApp_Discuz_Android   文件: VerticalImageSpan.java
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
    Drawable drawable = getDrawable();
    canvas.save();
    int transY = ((bottom - top) - drawable.getBounds().bottom) / 2 + top;
    canvas.translate(x, transY);
    drawable.draw(canvas);
    canvas.restore();
}
 
源代码17 项目: codeexamples-android   文件: Sensors.java
@Override
protected void onDraw(Canvas canvas) {
    synchronized (this) {
        if (mBitmap != null) {
            final Paint paint = mPaint;
            final Path path = mPath;
            final int outer = 0xFFC0C0C0;
            final int inner = 0xFFff7010;

            if (mLastX >= mMaxX) {
                mLastX = 0;
                final Canvas cavas = mCanvas;
                final float yoffset = mYOffset;
                final float maxx = mMaxX;
                final float oneG = SensorManager.STANDARD_GRAVITY * mScale[0];
                paint.setColor(0xFFAAAAAA);
                cavas.drawColor(0xFFFFFFFF);
                cavas.drawLine(0, yoffset,      maxx, yoffset,      paint);
                cavas.drawLine(0, yoffset+oneG, maxx, yoffset+oneG, paint);
                cavas.drawLine(0, yoffset-oneG, maxx, yoffset-oneG, paint);
            }
            canvas.drawBitmap(mBitmap, 0, 0, null);

            float[] values = mOrientationValues;
            if (mWidth < mHeight) {
                float w0 = mWidth * 0.333333f;
                float w  = w0 - 32;
                float x = w0*0.5f;
                for (int i=0 ; i<3 ; i++) {
                    canvas.save(Canvas.MATRIX_SAVE_FLAG);
                    canvas.translate(x, w*0.5f + 4.0f);
                    canvas.save(Canvas.MATRIX_SAVE_FLAG);
                    paint.setColor(outer);
                    canvas.scale(w, w);
                    canvas.drawOval(mRect, paint);
                    canvas.restore();
                    canvas.scale(w-5, w-5);
                    paint.setColor(inner);
                    canvas.rotate(-values[i]);
                    canvas.drawPath(path, paint);
                    canvas.restore();
                    x += w0;
                }
            } else {
                float h0 = mHeight * 0.333333f;
                float h  = h0 - 32;
                float y = h0*0.5f;
                for (int i=0 ; i<3 ; i++) {
                    canvas.save(Canvas.MATRIX_SAVE_FLAG);
                    canvas.translate(mWidth - (h*0.5f + 4.0f), y);
                    canvas.save(Canvas.MATRIX_SAVE_FLAG);
                    paint.setColor(outer);
                    canvas.scale(h, h);
                    canvas.drawOval(mRect, paint);
                    canvas.restore();
                    canvas.scale(h-5, h-5);
                    paint.setColor(inner);
                    canvas.rotate(-values[i]);
                    canvas.drawPath(path, paint);
                    canvas.restore();
                    y += h0;
                }
            }

        }
    }
}
 
源代码18 项目: Telegram   文件: MenuDrawable.java
@Override
public void draw(Canvas canvas) {
    if (currentRotation != finalRotation) {
        long newTime = SystemClock.elapsedRealtime();
        if (lastFrameTime != 0) {
            long dt = newTime - lastFrameTime;

            currentAnimationTime += dt;
            if (currentAnimationTime >= 200) {
                currentRotation = finalRotation;
            } else {
                if (currentRotation < finalRotation) {
                    currentRotation = interpolator.getInterpolation(currentAnimationTime / 200.0f) * finalRotation;
                } else {
                    currentRotation = 1.0f - interpolator.getInterpolation(currentAnimationTime / 200.0f);
                }
            }
        }
        lastFrameTime = newTime;
        invalidateSelf();
    }

    canvas.save();
    canvas.translate(getIntrinsicWidth() / 2, getIntrinsicHeight() / 2);
    float endYDiff;
    float endXDiff;
    float startYDiff;
    float startXDiff;
    int color1 = Theme.getColor(Theme.key_actionBarDefaultIcon);
    if (rotateToBack) {
        canvas.rotate(currentRotation * (reverseAngle ? -180 : 180));
        paint.setColor(color1);
        canvas.drawLine(-AndroidUtilities.dp(9), 0, AndroidUtilities.dp(9) - AndroidUtilities.dp(3.0f) * currentRotation, 0, paint);
        endYDiff = AndroidUtilities.dp(5) * (1 - Math.abs(currentRotation)) - AndroidUtilities.dp(0.5f) * Math.abs(currentRotation);
        endXDiff = AndroidUtilities.dp(9) - AndroidUtilities.dp(2.5f) * Math.abs(currentRotation);
        startYDiff = AndroidUtilities.dp(5) + AndroidUtilities.dp(2.0f) * Math.abs(currentRotation);
        startXDiff = -AndroidUtilities.dp(9) + AndroidUtilities.dp(7.5f) * Math.abs(currentRotation);
    } else {
        canvas.rotate(currentRotation * (reverseAngle ? -225 : 135));
        int color2 = Theme.getColor(Theme.key_actionBarActionModeDefaultIcon);
        paint.setColor(AndroidUtilities.getOffsetColor(color1, color2, currentRotation, 1.0f));
        canvas.drawLine(-AndroidUtilities.dp(9) + AndroidUtilities.dp(1) * currentRotation, 0, AndroidUtilities.dp(9) - AndroidUtilities.dp(1) * currentRotation, 0, paint);
        endYDiff = AndroidUtilities.dp(5) * (1 - Math.abs(currentRotation)) - AndroidUtilities.dp(0.5f) * Math.abs(currentRotation);
        endXDiff = AndroidUtilities.dp(9) - AndroidUtilities.dp(9) * Math.abs(currentRotation);
        startYDiff = AndroidUtilities.dp(5) + AndroidUtilities.dp(3.0f) * Math.abs(currentRotation);
        startXDiff = -AndroidUtilities.dp(9) + AndroidUtilities.dp(9) * Math.abs(currentRotation);
    }
    canvas.drawLine(startXDiff, -startYDiff, endXDiff, -endYDiff, paint);
    canvas.drawLine(startXDiff, startYDiff, endXDiff, endYDiff, paint);
    canvas.restore();
}
 
源代码19 项目: DoraemonKit   文件: SmartTable.java
/**
 * 绘制
 * 首先通过计算的table大小,计算table title大小
 * 再通过 matrixHelper getZoomProviderRect计算实现缩放和位移的Rect
 * 再绘制背景
 * 绘制XY序号列
 * 最后绘制内容
 *
 * @param canvas
 */
@Override
protected void onDraw(Canvas canvas) {
    if (!isNotifying.get()) {
        setScrollY(0);
        showRect.set(getPaddingLeft(), getPaddingTop(),
                getWidth() - getPaddingRight(),
                getHeight() - getPaddingBottom());
        if (tableData != null) {
            //表格Rect
            Rect rect = tableData.getTableInfo().getTableRect();
            if (rect != null) {
                if (config.isShowTableTitle()) {
                    measurer.measureTableTitle(tableData, tableTitle, showRect);
                }
                tableRect.set(rect);
                Rect scaleRect = matrixHelper.getZoomProviderRect(showRect, tableRect,
                        tableData.getTableInfo());
                if (config.isShowTableTitle()) {
                    tableTitle.onMeasure(scaleRect, showRect, config);
                    tableTitle.onDraw(canvas, showRect, tableData.getTableName(), config);
                }
                if (config.isShowYSequence()) {
                    yAxis.onMeasure(scaleRect, showRect, config);
                    if (isYSequenceRight) {
                        canvas.save();
                        canvas.translate(showRect.width(), 0);
                        yAxis.onDraw(canvas, showRect, tableData, config);
                        canvas.restore();
                    } else {
                        yAxis.onDraw(canvas, showRect, tableData, config);
                    }
                }
                if (isYSequenceRight) {
                    canvas.save();
                    canvas.translate(-yAxis.getWidth(), 0);
                    provider.onDraw(canvas, scaleRect, showRect, tableData);
                    canvas.restore();
                } else {
                    provider.onDraw(canvas, scaleRect, showRect, tableData);
                }
            }
        }
    }
}
 
源代码20 项目: TelePlus-Android   文件: WebPlayerView.java
@Override
protected void onDraw(Canvas canvas) {
    if (drawImage) {
        if (firstFrameRendered && currentAlpha != 0) {
            long newTime = System.currentTimeMillis();
            long dt = newTime - lastUpdateTime;
            lastUpdateTime = newTime;
            currentAlpha -= dt / 150.0f;
            if (currentAlpha < 0) {
                currentAlpha = 0.0f;
            }
            invalidate();
        }
        imageReceiver.setAlpha(currentAlpha);
        imageReceiver.draw(canvas);
    }
    if (videoPlayer.isPlayerPrepared() && !isStream) {
        int width = getMeasuredWidth();
        int height = getMeasuredHeight();
        if (!isInline) {
            if (durationLayout != null) {
                canvas.save();
                canvas.translate(width - AndroidUtilities.dp(58) - durationWidth, height - AndroidUtilities.dp(29 + (inFullscreen ? 6 : 10)));
                durationLayout.draw(canvas);
                canvas.restore();
            }

            if (progressLayout != null) {
                canvas.save();
                canvas.translate(AndroidUtilities.dp(18), height - AndroidUtilities.dp(29 + (inFullscreen ? 6 : 10)));
                progressLayout.draw(canvas);
                canvas.restore();
            }
        }

        if (duration != 0) {
            int progressLineY;
            int progressLineX;
            int progressLineEndX;
            int cy;

            if (isInline) {
                progressLineY = height - AndroidUtilities.dp(3);
                progressLineX = 0;
                progressLineEndX = width;
                cy = height - AndroidUtilities.dp(7);
            } else if (inFullscreen) {
                progressLineY = height - AndroidUtilities.dp(26 + 3);
                progressLineX = AndroidUtilities.dp(18 + 18) + durationWidth;
                progressLineEndX = width - AndroidUtilities.dp(58 + 18) - durationWidth;
                cy = height - AndroidUtilities.dp(7 + 21);
            } else {
                progressLineY = height - AndroidUtilities.dp(10 + 3);
                progressLineX = 0;
                progressLineEndX = width;
                cy = height - AndroidUtilities.dp(2 + 10);
            }
            if (inFullscreen) {
                canvas.drawRect(progressLineX, progressLineY, progressLineEndX, progressLineY + AndroidUtilities.dp(3), progressInnerPaint);
            }
            int progressX;
            if (progressPressed) {
                progressX = currentProgressX;
            } else {
                progressX = progressLineX + (int) ((progressLineEndX - progressLineX) * (progress / (float) duration));
            }
            if (bufferedPosition != 0 && duration != 0) {
                canvas.drawRect(progressLineX, progressLineY, progressLineX + (progressLineEndX - progressLineX) * (bufferedPosition / (float) duration), progressLineY + AndroidUtilities.dp(3), inFullscreen ? progressBufferedPaint : progressInnerPaint);
            }
            canvas.drawRect(progressLineX, progressLineY, progressX, progressLineY + AndroidUtilities.dp(3), progressPaint);
            if (!isInline) {
                canvas.drawCircle(progressX, cy, AndroidUtilities.dp(progressPressed ? 7 : 5), progressPaint);
            }
        }
    }
}