Pull to refresh
11
0
Андрей Крот @alcsan

User

Send message

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

Reading time 5 min
Views 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 от его получения до утилизации.

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

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

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

Читать дальше →
Total votes 14: ↑5 and ↓9 -4
Comments 1

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

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

image
Читать дальше →
Total votes 16: ↑13 and ↓3 +10
Comments 3

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity