下面是一个普通的矩形框的画法,画出来后,会发现,矩形框,四条线有粗有细。这是android的一个bug,我们没办法解决,只能规避。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
initCX();//mPercentage在initCX()中赋值,setPercentage()更新mPercentage的时机是在initCX()之后onDraw()之前,所以该方法放这里
canvas.drawRect(new Rect((int) cx1, (int) cy1, (int) cx2, (int) cy2), mPaintWaiSquare);//矩形框
canvas.drawText(mText, mTX, mTY, mPaintText);//百分比的字
}
private void initPaint() {
mPaintWaiSquare = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaintWaiSquare.setColor(backgroundColor);
mPaintWaiSquare.setStyle(Paint.Style.STROKE);// 画笔设置为空心
mPaintWaiSquare.setStrokeWidth(2);
}
private float cx1 = 0;//矩形的左上方左边之x轴
private float cy1 = 0;//矩形的左上方左边之y轴
private float cy2 = 90;//矩形的右下方左边之y轴
private float cx2 = 40;//矩形的右下方左边之x轴
规避这个bug的方法有2个:
1、把画矩形框改成画4条线,这个可以说是最土的办法,但是也是最有效的办法
2、如果这是下图这种最外层就是这个矩形框的控件,可以直接在xml布局中直接设置直接设置一个矩形背景,如:android:background="@drawable/outer_frame"
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 内部颜色 -->
<solid android:color="#00000000" />
<!-- 边缘线条颜色 -->
<stroke
android:width="1dp"
android:color="@color/licai_percentage" />
</shape>