Android! Разработка мобильных


Глава 4 • Введение в 2D-графику  Sudokuv2/src/org/example/sudoku/PuzzleView.java



Pdf көрінісі
бет50/87
Дата26.01.2023
өлшемі3,48 Mb.
#63133
1   ...   46   47   48   49   50   51   52   53   ...   87
Байланысты:
Привет, Андроид Разработка мобильных приложений

76 Глава 4 • Введение в 2D-графику
 Sudokuv2/src/org/example/sudoku/PuzzleView.java
private float width; // ширина одного тайла
private float height; // высота одного тайла
private int selX; // координата x выделенной области
private int selY; // координата y выделенной области
private final Rect selRect = new Rect();
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
width = w / 9f;
height = h / 9f;
getRect(selX, selY, selRect);
Log.d(TAG, "onSizeChanged: width " + width + ", height "
+ height);
super.onSizeChanged(w, h, oldw, oldh);
}
private void getRect(int x, int y, Rect rect) {
rect.set((int) (x * width), (int) (y * height), (int) (x
* width + width), (int) (y * height + height));
}
Мы и�пол�зуе� 
onSizeChanged()
для вычи�ления раз�ера каждо�о тайла (�ле�ен�
та и�рово�о изображения) на �кране (1/9 от полно�о раз�ера в��вера по ширине 
и вы�оте)� Обратите вни�ание на то� что �то — чи�ло � плава��ей запятой� по�то�
�у вполне воз�ожно� что �ы получи� дробное количе�тво пик�елей� 
selRect
— �то 
пря�о у�ол�ник� которы� �ы во�пол�зуе��я позже� чтобы от�леживат� положение 
кур�ора�
ДРУГОЙ СПОСОБ СДЕЛАТЬ ЭТО
Когда я писал этот пример, я перепробовал несколько различных подходов, таких как исполь-
зование кнопки для каждого тайла или объявление решетки классов ImageView в XML . После 
многих неудачных попыток я обнаружил, что подход с использованием одного вьювера для 
всего пазла и рисования линий и чисел внутри него обеспечивает наивысшую скорость и про-
стоту . Хотя и у него есть свои недостатки, такие как необходимость рисовать выделение и яв-
ная обработка событий клавиатуры и тач-скрина . Когда вы разрабатываете свою собственную 
программу, я рекомендую сначала испробовать стандартные виджеты и вьюверы и переходить 
к собственным рисованным объектам, только если стандартные виджеты вам не подходят .
На данный �о�ент �ы �оздали в��вер для и�ры и �ы знае�� како�о он раз�ера� 
Следу��ий ша� закл�чает�я в ри�овании решетки из линий� которые разделя�т 
клетки на и�ровой до�ке�
Рисование игровой доски
������� вызывает �етод 
onDraw()
в��вера каждый раз� ко�да л�бая е�о ча�т� нуж�
дает�я в обновлении� Про�е �оворя� 
onDraw()
делает вид� что вы во��оздаете ве�� 
�кран � нуля� В реал�но�ти вы �ожете ри�оват� тол�ко на �ален�кой ча�ти в��вера� 
определенной пря�оу�ол�нико� хол�та� ������� �а� заботит�я о �оздании зоны 
ри�ования для ва��


4 .2 . Добавление графики к Sudoku 77
Начне� � определения не�кол�ких новых �ветов в 
res/values/color .xml
� � которы�и 
�ожно будет �к�пери�ентироват��


Достарыңызбен бөлісу:
1   ...   46   47   48   49   50   51   52   53   ...   87




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет