首先就是传入两个数组,一个是题目,一个是答案,然后根据这个开始绘图。
有数就画出来,如果是题目就额外设置一层灰色的蒙版(记得设置半透明,不然会更丑)。
方法如下:
/**
* @author: modev
* @date: 2020/7/3 20:19
* @description: 画出数字
* @param: canvas 画布
* @return: void
* */
private void paintNumbers(Canvas canvas) {
//数组
int[][] problemArr = problem.getDefaultProblem();
int[][] answer = problem.getAnswer();
//绘制数字的黑色颜色,设置字体大小,居中,颜色
Paint blackPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
blackPaint.setColor(0xFF666666);
blackPaint.setTextSize(84);
blackPaint.setTextAlign(Paint.Align.CENTER);
//灰色蒙版的颜色,设置颜色,透明度
Paint grayPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
grayPaint.setColor(Color.GRAY);
grayPaint.setAlpha(55);
//遍历数组,然后设置颜色
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (problemArr[i][j] != 0) {
canvas.drawText(String.valueOf(problemArr[i][j]), i*sideLenght+sideLenght/2, j*sideLenght+3*sideLenght/4, blackPaint);
canvas.drawRect(i*sideLenght, j*sideLenght, i*sideLenght+sideLenght, j*sideLenght+sideLenght,grayPaint );
}else {
if (answer[i][j] != 0) {
canvas.drawText(String.valueOf(answer[i][j]), i*sideLenght+sideLenght/2, j*sideLenght+3*sideLenght/4, blackPaint);
}
}
}
}
}