Velcom android-mobile-optimized-larchanka

14
Создание кросс-платформенных приложений – правильное использование touch-events

Transcript of Velcom android-mobile-optimized-larchanka

Page 1: Velcom android-mobile-optimized-larchanka

Создание кросс-платформенных приложений – правильное

использование touch-events

Page 2: Velcom android-mobile-optimized-larchanka

Зачем кроссплатформенные приложения?

Page 3: Velcom android-mobile-optimized-larchanka

Инструменты

Page 4: Velcom android-mobile-optimized-larchanka

Примеры

Page 5: Velcom android-mobile-optimized-larchanka

gestures

Page 6: Velcom android-mobile-optimized-larchanka

Javascript обработкаfunction startup() {

var el = document.getElementById(“scrollDiv”);

el.addEventListener("touchstart", handleStart, false);

el.addEventListener("touchend", handleEnd, false);

el.addEventListener("touchcancel", handleCancel, false);

el.addEventListener("touchmove", handleMove, false);

}

Page 7: Velcom android-mobile-optimized-larchanka

Подводные камни

Page 8: Velcom android-mobile-optimized-larchanka

Мультитач

function handleStart(evt) {

var touches = evt.originalEvent.targetTouches;

var totalTouches = touches.length;

}

Page 9: Velcom android-mobile-optimized-larchanka

Направление движенияvar direction = true;

// true / false

function handleStart(evt) {

var touches = event.originalEvent.targetTouches;

var startcoords = endcoords = touches[0];

// pageX / pageY

}

function handleMove(evt) {

var touches = event.originalEvent.targetTouches;

var endcoords = touches[0];

}

If(Math.abs(endcoords.pageX - startcoords.pageX)

> Math.abs(endcoords.pageY - startcoords.pageY)) {

direction = false;

} else {

direction = true;

}

Page 10: Velcom android-mobile-optimized-larchanka

Click vs. Tap

Math.abs(endcoors.pageX – startcoords.pageX) < 10

handleStart:

obj = evt.target

handleEnd:

obj.click()

Page 11: Velcom android-mobile-optimized-larchanka

Бесполезная прокрутка

If(scrollable.scrollHeight > scrollDiv.offsetHeight()

Page 12: Velcom android-mobile-optimized-larchanka

Rubber banding

Вверху – 0

Внизу – MaxScroll

handleEnd:

MaxScroll = Высота прокручиваемой области - Высота видимого окна

Page 13: Velcom android-mobile-optimized-larchanka

Готовые решения

Page 14: Velcom android-mobile-optimized-larchanka

Все!

• Сейчас ваши вопросы…

Контакты

• http://mobila.name/