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


Глава 4 • Введение в 2D-графику Рис . 4 .4



Pdf көрінісі
бет53/87
Дата26.01.2023
өлшемі3,48 Mb.
#63133
1   ...   49   50   51   52   53   54   55   56   ...   87
80 Глава 4 • Введение в 2D-графику
Рис . 4 .4 . Символы, отцентрованные внутри тайлов
4 .3 . Обработка ввода
Одна отличител�ная о�обенно�т� про�ра��ирования под ������� в �равнении� 
�каже�� � про�ра��ирование� под �Ph��e �о�тоит в то�� что телефоны на ������� 
�у�е�тву�т в различных фор��факторах и раз�ерах и и�е�т �ноже�тво �ред�тв 
для ввода данных� Они �о�ут и�ет� клавиатуру� джой�тик� тач��крин или некото�
рые �очетания �тих �ред�тв управления�
Хорошая про�ра��а на ������� должна быт� �отова к поддержке л�бо�о до�
������� должна быт� �отова к поддержке л�бо�о до�
должна быт� �отова к поддержке л�бо�о до�
�тупно�о аппаратно�о �по�оба ввода данных� так же как она должна быт� �отова 
к поддержке л�бо�о разрешения �крана�
Рис . 4 .5 . Рисование и перемещение выделения


4 .3 . Обработка ввода 81
Задание и обновление выделенной области
Для начала �ы должны �оздат� небол�шой кур�ор� который показывает и�року 
выделенный тайл� Выделенный тайл — �то тот� который �ожет быт� из�енен� ко�да 
пол�зовател� введет чи�ло� Следу��ий код ри�ует выделение в �етоде 
onDraw()
:
 Sudokuv2/src/org/example/sudoku/PuzzleView.java
// Рисование выделения...
Log.d(TAG, "selRect=" + selRect);
Paint selected = new Paint();
selected.setColor(getResources().getColor(
R.color.puzzle_selected));
canvas.drawRect(selRect, selected);
Мы и�пол�зуе� пря�оу�ол�ник выделения� пара�етры которо�о вычи�лены 
ранее в �етоде 
onSizeChanged()
� для ри�ования полупрозрачно�о �ветно�о пря�о�
у�ол�ника поверх выделенно�о тайла�
Далее �ы обе�печивае� �по�об пере�е�ения выделения� переопределяя �етод 
onKeyDown()
:
 Sudokuv2/src/org/example/sudoku/PuzzleView.java
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.d(TAG, "onKeyDown: keycode=" + keyCode + ", event="
+ event);
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
select(selX, selY - 1);
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
select(selX, selY + 1);
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
select(selX - 1, selY);
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
select(selX + 1, selY);
break;
default:
return super.onKeyDown(keyCode, event);
}
return true;
}
Е�ли пол�зовател� и�еет джой�тик (D�pa�) и нажи�ает кнопки «вверх»� «вниз»� 
«вправо» или «влево»� �ы вызывае� 
select()
для пере�е�ения кур�ора выделения 
в выбранно� направлении�
А как на�чет трекбола? Мы �оже� переопределит� �етод 
onTrackBallEvent()
� но 
на деле оказывает�я� что е�ли вы не обрабатываете �обытия трекбола� ������� ав�
������� ав�
ав�


82 Глава 4 • Введение в 2D-графику
то�атиче�ки тран�лирует их в �обытия джой�тика� По�то�у �ы �оже� о�тавит� 
е�о непереопределенны� для �то�о при�ера�
Внутри �етода 
select()
�ы вычи�ляе� новые координаты x и y выделения и зате� 
и�пол�зуе� 
getRect()
для вычи�ления ново�о пря�оу�ол�ника выделения�


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




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

    Басты бет