Байланысты: Привет, Андроид Разработка мобильных приложений
Sudokuv2/src/org/example/sudoku/PuzzleView.java // Рисование чисел...
// Определение цвета и стиля для чисел
Paint foreground = new Paint(Paint.ANTI_ALIAS_FLAG);
foreground.setColor(getResources().getColor(
R.color.puzzle_foreground));
foreground.setStyle(Style.FILL);
foreground.setTextSize(height * 0.75f);
foreground.setTextScaleX(width / height);
foreground.setTextAlign(Paint.Align.CENTER);
// Рисование числа в центре тайла
FontMetrics fm = foreground.getFontMetrics();
// Центровка по оси X: использование выравнивания (и координаты центральной
точки)
float x = width / 2;
// Центровка по оси Y: сначала измеряем повышение/понижение
float y = height / 2 - (fm.ascent + fm.descent) / 2;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
canvas.drawText(this.game.getTileString(i, j), i
* width + x, j * height + y, foreground);
}
}
Мы вызывае� �етод
getTileString()
(определенный в разделе 4�4� «Разное»)�
чтобы понят�� какое чи�ло на� нужно отображат�� Для нахождения раз�ера чи�ла
�ы у�танавливае� раз�ер шрифта в три четверти от вы�оты тайла� а �оотношение
�торон делае� таки� же� как у тайла� Мы не �оже� и�пол�зоват� аб�ол�тные
значения в пик�елях или пунктах� так как �ы хоти�� чтобы про�ра��а работала
� л�бы�и разрешения�и �крана�
Для то�о чтобы задат� пози�и� каждо�о чи�ла� �ы �ентруе� е�о по из�ерения�
x и y� Пози�и� x определит� довол�но про�то — про�то разделите ширину тайла на
два� Но для координаты y �ы должны �ле�ка у�ен�шит� начал�ну� пози�и� так�
чтобы �ентрал�ная точка тайла �тала �ентрал�ной точки буквы� а не ее базовой
линии (линии� проходя�ей под �и�воло�)� Мы и�пол�зуе� кла��
FontMetrics
из
�рафиче�кой библиотеки для то�о� чтобы указат�� какое вертикал�ное про�тран�тво
должен зани�ат� �и�вол в �ело�� зате� дели� полученное чи�ло на два� для то�о
чтобы вне�ти поправку� Вы �ожете видет� резул�тат на ри�� 4�4�
Созданный на�и �еханиз� позволяет выполнят� начал�ное заполнение �оло�
воло�ки (вводит� и�ходные данные)� Следу��ий ша� закл�чает�я в то�� чтобы
позволит� пол�зовател� вводит� �ифры� которые он подбирает для решения за�
дачи� в пу�тые ячейки�