@Override
protected void draw(Canvas canvas, Rect bounds) {
int saveCount = canvas.save();
RectF arcBounds = mTempBounds;
arcBounds.set(bounds);
mPaint.setColor(mColor);
//calculate fish clip bounds
//clip the width of the fish need to increase mPathDottedLineSize * 1.2f
RectF fishRectF = new RectF(mFishHeadPos[0] - mFishWidth / 2.0f - mPathDottedLineSize * 1.2f, mFishHeadPos[1] - mFishHeight / 2.0f,
mFishHeadPos[0] + mFishWidth / 2.0f + mPathDottedLineSize * 1.2f, mFishHeadPos[1] + mFishHeight / 2.0f);
Matrix matrix = new Matrix();
matrix.postRotate(mFishRotateDegrees, fishRectF.centerX(), fishRectF.centerY());
matrix.mapRect(fishRectF);
//draw river
int riverSaveCount = canvas.save();
mPaint.setStyle(Paint.Style.STROKE);
canvas.clipRect(fishRectF, Region.Op.DIFFERENCE);
canvas.drawPath(createRiverPath(arcBounds), mPaint);
canvas.restoreToCount(riverSaveCount);
//draw fish
int fishSaveCount = canvas.save();
mPaint.setStyle(Paint.Style.FILL);
canvas.rotate(mFishRotateDegrees, mFishHeadPos[0], mFishHeadPos[1]);
canvas.clipPath(createFishEyePath(mFishHeadPos[0], mFishHeadPos[1] - mFishHeight * 0.06f), Region.Op.DIFFERENCE);
canvas.drawPath(createFishPath(mFishHeadPos[0], mFishHeadPos[1]), mPaint);
canvas.restoreToCount(fishSaveCount);
canvas.restoreToCount(saveCount);
}
FishLoadingRenderer.java 文件源码
java
阅读 42
收藏 0
点赞 0
评论 0
项目:GitHub
作者:
评论列表
文章目录