首先就是传入两个数组,一个是题目,一个是答案,然后根据这个开始绘图。
有数就画出来,如果是题目就额外设置一层灰色的蒙版(记得设置半透明,不然会更丑)。
方法如下:
/** * @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); } } } } }