урок 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 - ми самі обробили подія.
Тепер ми будемо водити пальцем по екрану (курсором по емулятора) в додатку, і на екрані побачимо координати початку руху, поточні координати і координати закінчення руху.
Все збережемо і запустимо додаток.

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

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

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

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