Я хочу добавить границу для просмотра, ширину рамки, цвет, радиус можно задать пользователем. Поэтому я пытаюсь сделать это для этого. Когда я использую drawRoundRect для рисования, линия в углу негладкая, она толще других мест. Я не знаю, как это исправить. Пожалуйста, дайте мне инструкцию. Есть ли другой способ сделать это? Я должен использовать код для его рисования.Как сделать границу более гладкой
Большое спасибо. прилагается код: красный угол прямоугольник. мимо Код:
public class MPCTextView extends TextView {
// private Context context;
private final static String TAG = "MPCTextView";
public final static int DEFAULT_BACKGROUND_COLOR = Color
.parseColor("#28FF28");
public final static int DEFAULT_BORDER_COLOR = Color.parseColor("#FF0000");
public int mBoderWidth = 2;
public int mBoderColor;
public int mBoderRadius = 20;
public int mbackgroundColor;
public boolean isHaveBorder = true;
public boolean isHaveBackground = true;
RectF mRectF = new RectF();
Rect mRec = new Rect();
Paint mPaint = new Paint();
public MPCTextView(Context context) {
super(context);
// this.context = context;
}
@Override
protected void onDraw(Canvas canvas) {
// try to add a boder for this view.
canvas.getClipBounds(mRec);
// draw background
// canvas.drawColor(mbackgroundColor);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(DEFAULT_BACKGROUND_COLOR);
if (mBoderRadius > 0) {
mRectF.set(mRec);
canvas.drawRoundRect(mRectF, mBoderRadius, mBoderRadius, mPaint);
} else {
canvas.drawRect(mRec, mPaint);
}
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(mBoderWidth);
mPaint.setColor(DEFAULT_BORDER_COLOR);
mPaint.setAntiAlias(true);
if (mBoderRadius > 0) {
mRectF.set(mRec);
canvas.drawRoundRect(mRectF, mBoderRadius, mBoderRadius, mPaint);
} else {
canvas.drawRect(mRec, mPaint);
}
super.onDraw(canvas);
}
Спасибо вам большое. Фактически, я добавил его в свой код. Но это недостаточно для меня. Есть ли у вас другая идея? – mmm2006
mPaint.setDither (true); – Blackbelt
нет эффект. :(любое другое решение? – mmm2006