提交 8c2c0a8c 编写于 作者: H huangziwei

重构代码

上级 c4b3cdba
......@@ -241,9 +241,9 @@ public class GraffitiActivity extends Activity {
if (mGraffiti.getColor().getType() == GraffitiColor.Type.BITMAP) {
mBtnColor.setBackgroundDrawable(new BitmapDrawable(mGraffiti.getColor().getBitmap()));
} else {
mBtnColor.setBackgroundColor(mGraffiti.getColor().getColor());
mBtnColor.setBackgroundColor(selectableItem.getColor().getColor());
}
mPaintSizeBar.setProgress((int) (mGraffiti.getSize() + 0.5f));
mPaintSizeBar.setProgress((int) (selectableItem.getSize() + 0.5f));
} else {
mSelectedTextEditContainer.setVisibility(View.GONE);
mEditContainer.setVisibility(View.VISIBLE);
......
......@@ -32,7 +32,6 @@ public class GraffitiBitmap extends GraffitiSelectableItemBase {
return mBitmap;
}
@Override
public void resetBounds(Rect rect) {
if (mBitmap == null) {
......@@ -47,7 +46,7 @@ public class GraffitiBitmap extends GraffitiSelectableItemBase {
}
@Override
public void doDraw(IGraffiti graffiti, Canvas canvas) {
public void doDraw(Canvas canvas) {
canvas.drawBitmap(mBitmap, mSrcRect, mDstRect, null);
}
......
......@@ -43,6 +43,7 @@ public class GraffitiColor {
public void initColor(Paint paint, Matrix matrix) {
if (mType == Type.COLOR) {
paint.setColor(mColor);
paint.setShader(null);
} else if (mType == Type.BITMAP) {
BitmapShader shader = new BitmapShader(mBitmap, mTileX, mTileY);
shader.setLocalMatrix(matrix);
......
......@@ -43,6 +43,9 @@ public abstract class GraffitiItemBase implements IGraffitiItem {
@Override
public void setGraffiti(IGraffiti graffiti) {
mGraffiti = graffiti;
if (graffiti == null) {
return;
}
mGraffitiRotate = graffiti.getRotate();
mOriginalPivotX = graffiti.getOriginalBitmapWidth() / 2;
mOriginalPivotY = graffiti.getOriginalBitmapHeight() / 2;
......@@ -124,22 +127,22 @@ public abstract class GraffitiItemBase implements IGraffitiItem {
}
@Override
public void draw(IGraffiti graffiti, Canvas canvas) {
public void draw(Canvas canvas) {
canvas.save();
mLocationTemp = getLocation(); // 获取旋转后的起始坐标
canvas.translate(mLocationTemp.x, mLocationTemp.y); // 把坐标系平移到文字矩形范围
canvas.rotate(graffiti.getRotate() - mGraffitiRotate + mItemRotate, 0, 0); // 旋转坐标系
canvas.rotate(mGraffiti.getRotate() - mGraffitiRotate + mItemRotate, 0, 0); // 旋转坐标系
if (graffiti.getSelectedItem() == this) {
((IGraffitiSelectableItem) this).drawSelectedBackground(graffiti, canvas);
if (mGraffiti.getSelectedItem() == this) {
((IGraffitiSelectableItem) this).drawSelectedBackground(mGraffiti, canvas);
}
doDraw(graffiti, canvas);
doDraw(canvas);
canvas.restore();
}
protected abstract void doDraw(IGraffiti graffiti, Canvas canvas);
protected abstract void doDraw(Canvas canvas);
}
......@@ -91,8 +91,8 @@ public class GraffitiPath extends GraffitiItemBase {
return path;
}
protected void doDraw(IGraffiti graffiti, Canvas canvas) {
@Override
protected void doDraw(Canvas canvas) {
mPaint.setStrokeWidth(getSize());
mPaint.setStyle(Paint.Style.STROKE);
getColor().initColor(mPaint, null);
......@@ -100,8 +100,8 @@ public class GraffitiPath extends GraffitiItemBase {
if (getShape() == IGraffiti.Shape.HAND_WRITE) { // 手写
canvas.drawPath(mPath, mPaint);
} else { // 画图形
mLocationTemp = getSxSy(graffiti.getRotate());
mLocationTemp2 = getDxDy(graffiti.getRotate());
mLocationTemp = getSxSy(getGraffiti().getRotate());
mLocationTemp2 = getDxDy(getGraffiti().getRotate());
draw(canvas, mPaint, getShape(), mLocationTemp.x, mLocationTemp.y, mLocationTemp2.x, mLocationTemp2.y);
}
}
......
......@@ -12,7 +12,7 @@ import android.text.TextUtils;
public class GraffitiText extends GraffitiSelectableItemBase {
private final static Paint paint = new Paint();
private final Paint mPaint = new Paint();
private String mText;
public GraffitiText(IGraffiti graffiti, String text, float size, GraffitiColor color, int textRotate, float x, float y) {
......@@ -37,17 +37,17 @@ public class GraffitiText extends GraffitiSelectableItemBase {
if (TextUtils.isEmpty(mText)) {
return;
}
paint.setTextSize(getSize());
paint.setStyle(Paint.Style.FILL);
paint.getTextBounds(mText, 0, mText.length(), rect);
mPaint.setTextSize(getSize());
mPaint.setStyle(Paint.Style.FILL);
mPaint.getTextBounds(mText, 0, mText.length(), rect);
}
@Override
public void doDraw(IGraffiti graffiti, Canvas canvas) {
paint.setTextSize(getSize());
paint.setColor(getColor().getColor());
paint.setStyle(Paint.Style.FILL);
canvas.drawText(mText, 0, 0, paint);
public void doDraw(Canvas canvas) {
getColor().initColor(mPaint, null);
mPaint.setTextSize(getSize());
mPaint.setStyle(Paint.Style.FILL);
canvas.drawText(mText, 0, 0, mPaint);
}
}
......
......@@ -23,6 +23,7 @@ import static cn.hzw.graffiti.util.DrawUtil.computeAngle;
import static cn.hzw.graffiti.util.DrawUtil.drawCircle;
/**
* 涂鸦框架
* Created by huangziwei on 2016/9/3.
*/
public class GraffitiView extends View implements IGraffiti {
......@@ -432,7 +433,7 @@ public class GraffitiView extends View implements IGraffiti {
if (mPathStack.size() > 0) {
for (IGraffitiItem item : mPathStack) {
item.draw(this, mBitmapCanvas);
item.draw(mBitmapCanvas);
}
}
......@@ -540,7 +541,7 @@ public class GraffitiView extends View implements IGraffiti {
if (mPen == IGraffiti.Pen.ERASER || mPen == IGraffiti.Pen.COPY) {
graffitiPath.getColor().setColor(mBitmap); // 图片底色为原图
}
graffitiPath.draw(this, canvas);
graffitiPath.draw(canvas);
}
......@@ -552,7 +553,7 @@ public class GraffitiView extends View implements IGraffiti {
}
for (IGraffitiSelectableItem item : mSelectableStack) {
item.draw(this, canvas);
item.draw(canvas);
}
}
......@@ -719,7 +720,7 @@ public class GraffitiView extends View implements IGraffiti {
// 保存的时候,把文字画上去
for (IGraffitiSelectableItem item : mSelectableStack) {
item.draw(this, mBitmapCanvas);
item.draw(mBitmapCanvas);
}
mGraffitiListener.onSaved(mGraffitiBitmap);
}
......@@ -1037,7 +1038,7 @@ public class GraffitiView extends View implements IGraffiti {
}
mItemStack.add(graffitiItem);
if (!(graffitiItem instanceof IGraffitiSelectableItem)) {
graffitiItem.draw(this, mBitmapCanvas); // 保存到图片中
graffitiItem.draw(mBitmapCanvas); // 保存到图片中
}
invalidate();
}
......@@ -1051,8 +1052,11 @@ public class GraffitiView extends View implements IGraffiti {
if (!(graffitiItem instanceof IGraffitiSelectableItem)) {
initCanvas();
for (IGraffitiItem item : mPathStack) {
item.draw(this, mBitmapCanvas);
item.draw(mBitmapCanvas);
}
} else if (graffitiItem == mSelectedItem) {
mSelectedItem = null;
mGraffitiListener.onSelectedItem((IGraffitiSelectableItem) graffitiItem, false);
}
invalidate();
}
......
......@@ -29,7 +29,7 @@ public interface IGraffitiItem {
public void setColor(GraffitiColor color);
public void draw(IGraffiti graffiti, Canvas canvas);
public void draw(Canvas canvas);
/**
* 设置在当前涂鸦中的左上角位置
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册