урок 102

Раніше ми для View-компонентів використовували OnClickListener і ловили короткі натискання. Тепер спробуємо ловити торкання і переміщення пальця по компоненту. Вони складаються з трьох типів подій:

- натискання (палець доторкнувся до екрану)
- рух (палець рухається по екрану)
- відпускання (палець відірвався від екрану)

Всі ці події ми зможемо ловити в обробнику OnTouchListener. який дамо для View-компонента. Цей оброблювач дає нам об'єкт MotionEvent. з якого ми витягуємо тип події та координати.

На цьому уроці розглянемо тільки поодинокі торкання. А мультитач - на наступному уроці.

Project name. P1021_Touch
Build Target. Android 2.3.3
Application name. Touch
Package name. ru.startandroid.develop.p1021touch
Create Activity. MainActivity

strings.xml і main.xml нам не знадобляться, їх не чіпаємо.

MainActivity реалізує інтерфейс OnTouchListener для того, щоб виступити оброблювачем торкань.

У onCreate ми створюємо новий TextView, повідомляємо йому, що оброблювачем торкань буде Activity, і поміщаємо на екран.

Інтерфейс OnTouchListener передбачає, що Activity реалізує його метод onTouch. На вхід методу йде View для якого була подія торкання і об'єкт MotionEvent з інформацією про подію.

Методи getX і getY дають нам X і Y координати торкання. Метод getAction дає тип події торкання:

ACTION_DOWN - натискання
ACTION_MOVE - рух
ACTION_UP - відпускання
ACTION_CANCEL - практично ніколи не трапляється. Наскільки я зрозумів, виникає в разі будь-яких внутрішніх збоїв, і слід трактувати це як ACTION_UP.

У разі ACTION_DOWN ми пишемо в sDown координати натискання.

У разі ACTION_MOVE пишемо в sMove координати точки поточного становища пальця. Якщо ми будемо переміщати палець по екрану - цей текст буде постійно змінюватися.

У разі ACTION_UP або ACTION_CANCEL пишемо в sUp координати точки, в якій відпустили палець.

Все це в кінці події виводимо в TextView. І повертаємо true - ми самі обробили подія.

Тепер ми будемо водити пальцем по екрану (курсором по емулятора) в додатку, і на екрані побачимо координати початку руху, поточні координати і координати закінчення руху.

Все збережемо і запустимо додаток.

урок 102

Ставимо палець (курсор) на екран

урок 102

Якщо вчорашній вечір не вдався, голова не болить, рука тверда і не тремтить :), то з'явилися координати натискання.

Якщо ж рука здригнулася, то з'явиться ще і координати переміщення.

урок 102

Продовжуємо переміщати палець і бачимо, як змінюються координати Move.

Тепер відриваємо палець від екрану і бачимо координати точки, в якій це сталося

урок 102

В цілому все нескладно. При мультитач процес трохи ускладниться, там уже будемо відстежувати до 10 торкань.

На наступному уроці:

- обробляємо множинні торкання

Приєднуйтесь до нас в Telegram: