本文整理汇总了Java中android.graphics.Canvas.translate方法的典型用法代码示例。如果您正苦于以下问题:Java Canvas.translate方法的具体用法?Java Canvas.translate怎么用?Java Canvas.translate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类android.graphics.Canvas
的用法示例。
在下文中一共展示了Canvas.translate方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: onDraw
import android.graphics.Canvas; //导入方法依赖的package包/类
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (isInEditMode()) {
canvas.drawColor(Color.WHITE);
canvas.translate(canvas.getWidth() / 2, 30);
Paint paint = new Paint();
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(30);
paint.setColor(Color.GRAY);
canvas.drawText("MarkdownView", -30, 0, paint);
}
}
示例2: draw
import android.graphics.Canvas; //导入方法依赖的package包/类
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
//super.draw(canvas, text, start, end, x, top, y, bottom, paint);
Drawable b = getCachedDrawable();
int count = canvas.save();
// int transY = fontMetricesBottom - b.getBounds().bottom;
// int transY -= paint.getFontMetricsInt().descent;
// 因为 TextView 加了 lineSpacing 之后会导致这里的 bottom、top 参数与单行情况不一样,所以不用 bottom、top,而使用 fontMetrics 的高度来计算
int fontMetricesTop = y + paint.getFontMetricsInt().top;
int fontMetricesBottom = fontMetricesTop + (paint.getFontMetricsInt().bottom - paint.getFontMetricsInt().top);
int transY = fontMetricesTop + ((fontMetricesBottom - fontMetricesTop) / 2) - ((b.getBounds().bottom - b.getBounds().top) / 2) - mTop;
transY += mTranslateY;
canvas.translate(x, transY);
b.draw(canvas);
canvas.restoreToCount(count);
}
示例3: onDraw
import android.graphics.Canvas; //导入方法依赖的package包/类
@Override
protected void onDraw(Canvas canvas) {
if(!mClockwise) {
canvas.scale(-1, 1, mArcRect.centerX(), mArcRect.centerY() );
}
// Draw the arcs
final int arcStart = mStartAngle + mAngleOffset + mRotation;
final int arcSweep = mSweepAngle;
canvas.drawArc(mArcRect, arcStart, arcSweep, false, mArcPaint);
canvas.drawArc(mArcRect, arcStart, mProgressSweep, false,
mProgressPaint);
if(mEnabled) {
// Draw the thumb nail
canvas.translate(mTranslateX - mThumbXPos, mTranslateY - mThumbYPos);
mThumb.draw(canvas);
}
}
示例4: drawPacman
import android.graphics.Canvas; //导入方法依赖的package包/类
private void drawPacman(Canvas canvas,Paint paint){
float x=getWidth()/2;
float y=getHeight()/2;
canvas.save();
canvas.translate(x, y);
canvas.rotate(degrees1);
paint.setAlpha(255);
RectF rectF1=new RectF(-x/1.7f,-y/1.7f,x/1.7f,y/1.7f);
canvas.drawArc(rectF1, 0, 270, true, paint);
canvas.restore();
canvas.save();
canvas.translate(x, y);
canvas.rotate(degrees2);
paint.setAlpha(255);
RectF rectF2=new RectF(-x/1.7f,-y/1.7f,x/1.7f,y/1.7f);
canvas.drawArc(rectF2,90,270,true,paint);
canvas.restore();
}
示例5: draw
import android.graphics.Canvas; //导入方法依赖的package包/类
@Override
protected void draw(Canvas canvas, float ms) {
mPath.reset();
canvas.translate(0, canvas.getHeight());
mPipe.put(ms);
mPipe.reset();
int x = 0;
Float t;
while ((t = mPipe.next()) != null) {
float height = (t * mFactor);
mPath.lineTo(x, -height);
x += mTransX;
}
canvas.drawPath(mPath, mPaint);
}
示例6: dispatchDraw
import android.graphics.Canvas; //导入方法依赖的package包/类
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
if (mAdapter == null || headers.isEmpty()) {
return;
}
for (View header : headers) {
int saveCount = canvas.save();
int top = (Integer)header.getTag();
canvas.translate(LocaleController.isRTL ? getWidth() - header.getWidth() : 0, top);
canvas.clipRect(0, 0, getWidth(), header.getMeasuredHeight());
if (top < 0) {
canvas.saveLayerAlpha(0, top, header.getWidth(), top + canvas.getHeight(), (int)(255 * (1.0f + (float)top / (float)header.getMeasuredHeight())), Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);
}
header.draw(canvas);
canvas.restoreToCount(saveCount);
}
}
示例7: draw
import android.graphics.Canvas; //导入方法依赖的package包/类
public void draw(Canvas canvas) {
if (mDrawable == null || !mEnabled) {
return;
}
canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.scale(mScaleX, mScaleY, mPositionX, mPositionY);
canvas.translate(mTranslationX + mPositionX, mTranslationY + mPositionY);
canvas.translate(-0.5f * getWidth(), -0.5f * getHeight());
mDrawable.setAlpha((int) Math.round(mAlpha * 255f));
mDrawable.draw(canvas);
canvas.restore();
}
示例8: drawBounce
import android.graphics.Canvas; //导入方法依赖的package包/类
private void drawBounce(Canvas canvas) {
canvas.save();
canvas.translate(mDataBean.mLaunchXRaw, mDataBean.mLaunchYRaw);
canvas.rotate(mDataBean.mRotateDegrees, 0, 0);
canvas.translate(-mDataBean.mClickViewRect.width(), -mDataBean.mClickViewRect.height() / 2.0f);
drawBubble(canvas);
canvas.restore();
mDataBean.mElasticPath.reset();
mDataBean.mElasticPath.moveTo(mDataBean.mStickyPointCenter0.x, mDataBean.mStickyPointCenter0.y);
mDataBean.mElasticPath.quadTo(mDataBean.mSidesInnerBesierCtrlPoint0.x, mDataBean.mSidesInnerBesierCtrlPoint0.y,
mDataBean.mMoveDrawPointCenter.x, mDataBean.mMoveDrawPointCenter.y);
mDataBean.mElasticPath.quadTo(mDataBean.mSidesInnerBesierCtrlPoint1.x, mDataBean.mSidesInnerBesierCtrlPoint1.y,
mDataBean.mStickyPointCenter1.x, mDataBean.mStickyPointCenter1.y);
mDataBean.mElasticPath.quadTo(mDataBean.mSidesOuterBesierCtrlPoint1.x, mDataBean.mSidesOuterBesierCtrlPoint1.y,
mDataBean.mMoveDrawPointCenter.x, mDataBean.mMoveDrawPointCenter.y);
mDataBean.mElasticPath.quadTo(mDataBean.mSidesOuterBesierCtrlPoint0.x, mDataBean.mSidesOuterBesierCtrlPoint0.y,
mDataBean.mStickyPointCenter0.x, mDataBean.mStickyPointCenter0.y);
mDataBean.mPaint.setStyle(Paint.Style.FILL);
mDataBean.mPaint.setColor(mDataBean.mElasticColor);
mDataBean.mPaint.setStrokeWidth(1);
mDataBean.mPaint.setMaskFilter(mDataBean.mFilter);
canvas.drawPath(mDataBean.mElasticPath, mDataBean.mPaint);
//画固定点的桩
drawStickyPoints(canvas);
}
示例9: draw
import android.graphics.Canvas; //导入方法依赖的package包/类
/**
* The skew effect is handled by changing the transform of the Canvas
* and then calling the usual superclass draw() method.
*/
@Override
public void draw(Canvas canvas) {
if (mSkewX != 0) {
canvas.translate(0, getHeight());
canvas.skew(mSkewX, 0);
canvas.translate(0, -getHeight());
}
super.draw(canvas);
}
示例10: draw
import android.graphics.Canvas; //导入方法依赖的package包/类
public void draw(Canvas canvas) {
if (isVisible()) {
// Draw the fast scroller popup
int restoreCount = canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.translate(mBgBounds.left, mBgBounds.top);
mTmpRect.set(mBgBounds);
mTmpRect.offsetTo(0, 0);
mBackgroundPath.reset();
mBackgroundRect.set(mTmpRect);
float[] radii;
if (Utils.isRtl(mRes)) {
radii = new float[]{mCornerRadius, mCornerRadius, mCornerRadius, mCornerRadius, mCornerRadius, mCornerRadius, 0, 0};
} else {
radii = new float[]{mCornerRadius, mCornerRadius, mCornerRadius, mCornerRadius, 0, 0, mCornerRadius, mCornerRadius};
}
mBackgroundPath.addRoundRect(mBackgroundRect, radii, Path.Direction.CW);
mBackgroundPaint.setAlpha((int) (mAlpha * 255));
mTextPaint.setAlpha((int) (mAlpha * 255));
canvas.drawPath(mBackgroundPath, mBackgroundPaint);
canvas.drawText(mSectionName, (mBgBounds.width() - mTextBounds.width()) / 2,
mBgBounds.height() - (mBgBounds.height() - mTextBounds.height()) / 2,
mTextPaint);
canvas.restoreToCount(restoreCount);
}
}
示例11: drawCachedBitmap
import android.graphics.Canvas; //导入方法依赖的package包/类
private void drawCachedBitmap(Canvas canvas) {
canvas.translate(-mStartX, -mStartY);
if (mPaths != null) {
for (int i = 0; i < mPaths.size(); i++) {
if (mColors != null && i < mColors.size()) {
mPaint.setColor(mColors.get(i));
}
canvas.drawPath(mPaths.get(i), mPaint);
}
}
}
示例12: draw
import android.graphics.Canvas; //导入方法依赖的package包/类
@Override
public void draw(Canvas canvas, Paint paint) {
float radius=getWidth()/10;
for (int i = 0; i < 8; i++) {
canvas.save();
Point point=circleAt(getWidth(),getHeight(),getWidth()/2-radius,i*(Math.PI/4));
canvas.translate(point.x,point.y);
canvas.scale(scaleFloats[i],scaleFloats[i]);
paint.setAlpha(alphas[i]);
canvas.drawCircle(0,0,radius,paint);
canvas.restore();
}
}
示例13: onDraw
import android.graphics.Canvas; //导入方法依赖的package包/类
@Override
protected void onDraw(Canvas canvas) {
Rect drawableBounds = getCaretDrawable().getBounds();
int count = canvas.save();
canvas.translate(getWidth() - drawableBounds.width(),
getHeight() - drawableBounds.height());
getCaretDrawable().draw(canvas);
canvas.restoreToCount(count);
}
示例14: 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);
}
示例15: draw
import android.graphics.Canvas; //导入方法依赖的package包/类
@SuppressLint("NewApi")
private void draw(Canvas c, RecyclerView parent)
{
int childCount = parent.getChildCount();
if(parent.getClipToPadding())
{
c.clipRect(parent.getPaddingLeft(), parent.getPaddingTop(),
parent.getWidth() - parent.getPaddingRight(),
parent.getHeight() - parent.getPaddingBottom());
}
int top = parent.getPaddingTop();
int preHeaderId;
int headerId = NO_POSITION;
int x = parent.getPaddingLeft();
for(int i = 0; i < childCount; i++)
{
View itemView = parent.getChildAt(i);
int position = parent.getChildAdapterPosition(itemView);
//只有各组第一个 并且 headerId!=-1 才绘制头部view
preHeaderId = headerId;
headerId = getHeaderId(position);
if(headerId <= NO_POSITION || headerId == preHeaderId)
{
continue;
}
View header = getHeaderView(parent, position);
int heightWithPadding = header.getHeight() + top;
int y = Math.max(heightWithPadding, itemView.getTop());
if(isStick)
{
int nextPosition = getNextHeadPosition(i, headerId, childCount, parent);
if(nextPosition != NO_POSITION)
{
View nextView = parent.getChildAt(nextPosition);
//获得真实位置后再进行判断
parent.getDecoratedBoundsWithMargins(nextView, rect);
//判断下一个头部view是否到了与上一个头部view接触的临界值
//如果满足条件则把上一个头部view推上去
if(rect.top <= heightWithPadding)
{
//这里使用nextView.getTop 直接减掉 header.getHeight(),如果减去heightWithPadding,
//会出现移动时的间距
y = nextView.getTop() - header.getHeight();
}
}
}
//这个时候,y是header底部位置,需要减去它的高度,修正定位
y -= header.getHeight();
c.translate(x, y);
header.draw(c);
//修正回来
c.translate(-x, -y);
}
}