Как стать автором
Обновить
11
0
Андрей Крот @alcsan

Пользователь

Отправить сообщение

По следам бага и немного о событиях MotionEvent в Android

Время на прочтение5 мин
Количество просмотров20K
Думаю, многие из нас писали код вида:

    @Override
    public boolean onTouch(View view, MotionEvent event) {
        final float x = event.getX();
        final float y = event.getY();
        // использование x и y...
        return false;
    }

Но, думаю, не многие задумывались о том, какой путь проходит каждый объект MotionEvent прежде чем попасть в этот метод. В большинстве случае в этом нет необходимости, но все же случаются ситуации, когда незнание особенностей MotionEvent и обработки касаний приводит к печальным результатам.

Год назад я с друзьями разрабатывал приложение, где очень многое упиралось в обработку касаний. Однажды, загрузив новые исходники из репозитория и собрав приложение, я обнаружил, что вертикальная координата касания определяется неверно. Просматривая последние коммиты команды, я наткнулся на интересную строку, где внезапно от y-координаты отнималось 100. То есть, что-то вроде «y -= 100;», причем, это число не было вынесено как константа и вообще было непонятно почему именно 100. На мой очевидный вопрос я получил ответ «Ну, мы опытным путем определили, что в этом месте y-координата всегда на 100 (пикселей) больше, чем должна быть». Здесь, конечно, стоило бы перечитать документацию по обработке касаний и, просмотрев код проекта, найти ошибку, но я решил пойти более интересным путем – проследить по исходникам Android за MotionEvent от его получения до утилизации.

Если я смог кого-то заинтриговать историей в стиле «По следам полосатого бага» — добро пожаловать под кат.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии7

Упрощаем себе жизнь сервисом, объединяющим сервисы

Время на прочтение3 мин
Количество просмотров15K
Сегодня я хочу поделиться с вами одним классным сервисом, который я приметил для себя еще год назад, но все никак не мог найти времени, чтобы зарегистрироваться и заставить его работать на меня. И вот теперь, когда Google Reader закрыли, а мое любимое расширение для чтения RSS лент начало сбоить, я решил вплотную заняться оптимизацией пути интересных статей от блогов к моему планшету. И делать я это буду при помощи сервиса IFTTT. Сразу оговорю, что в этой статье все будет очень очевидно и просто, ее смысл — показать как можно упростить себе жизнь сервисом, объединяющим сервисы. Результатом этого станет простенький рецепт.

Читать дальше →
Всего голосов 14: ↑5 и ↓9-4
Комментарии1

Используем компонент из стандартного Android-приложения в своем проекте

Время на прочтение4 мин
Количество просмотров4.6K
Сила Android – в его открытости. Исходный код любого полюбившегося приложения (если оно не одно из Google Apps) или компонента можно не только изучить, но и прикрутить к своему проекту на радость себе и пользователям. Причем, его дизайн и поведение будут знакомыми и привычными для пользователей. В этой статье я покажу, как это сделать. Мы выберем компонент, который хотим позаимствовать, найдем его в исходниках, изучим его, добавим в свою библиотеку и подключим к нашему приложению.

image
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии3

Информация

В рейтинге
Не участвует
Откуда
Харьков, Харьковская обл., Украина
Дата рождения
Зарегистрирован
Активность