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()
для вычи�ления ново�о пря�оу�ол�ника выделения�
Достарыңызбен бөлісу: