Сотовые веб-события - PullRequest
       7

Сотовые веб-события

0 голосов
/ 18 октября 2011

Мы слушаем 'ontouchmove' в веб-просмотре в приложении для Android.Похоже, что эти события прошли хорошо в 2.3, но в Honeycomb кажется, что мы запустили одно событие и все.Есть идеи, что происходит?

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Примеры кода в моем ответе являются примерами gwt, но то же самое должно относиться и к JavaScript.

WebView примет событие после первого onTouchMove в основном для того, чтобы разрешить прокрутку. Вы можете предотвратить это, позвонив по номеру

event.preventDefault();

Я не знаю, почему это особенно характерно для Сота, но если вы поймаете первое событие onTouchMove и в этот момент решите, хотите ли вы вступить во владение, позвонив по номеру preventDefault(), вы сможете справиться со многими случаями. , В качестве примера я хотел реализовать горизонтальное перелистывание, но при этом работать с основными функциями (такими как вертикальная прокрутка, ссылки и т. Д.).

    @Override
public void onBrowserEvent(Event event) {
    switch (event.getTypeInt()) {
    case Event.ONTOUCHSTART:
        startPoint = new Point(event.getChangedTouches().get(0).getClientX(), event.getChangedTouches().get(0).getClientY());
        break;
    case Event.ONTOUCHMOVE:
        endPoint = new Point(event.getChangedTouches().get(0).getClientX(), event.getChangedTouches().get(0).getClientY());
        double dx = startPoint.getX() - endPoint.getX();
        double dy = startPoint.getY() - endPoint.getY();
        if (Math.abs(dx) > SWIPE_X_MIN) {
            if (Math.abs(dy) < SWIPE_Y_MAX) {
                // Decided it really is a horizontal swipe
                event.preventDefault();
                if (dx < 0) {
                    Window.alert("swiped right");
                } else {
                    Window.alert("swiped left");
                }
            }
        }
        break;
    }       
} 

Надеюсь, это даст некоторое понимание.

0 голосов
/ 06 августа 2014

protectDefault при сенсорном запуске позволит запускать события, но собственная прокрутка будет отключена ... (менее чем идеально!) Существует попытка преодолеть эту проблему, которая встроена в миллионы устройств Android.https://github.com/TNT-RoX/android-swipe-shim

...