2012-01-05 2 views
5

Я понимаю различия между идентификатором и индексом, где кажется, что идентификатор согласован между событиями, и индекс может меняться.Android Multitouch - Определите, какой палец поднят?

Тем не менее, я постоянно меняю идентификаторы, и я ищу некоторое понимание в этой области. Я прочитал всю официальную документацию по Android и многочисленные блоги, но, похоже, не хватает краткого ответа.

Если я надену три пальца на экран, там будут идентификаторы 0, 1 и 2. Эти идентификаторы будут постоянными для этих трех точек, пока эти пальцы находятся на экране. Верный?

Как только палец поднят, скажите второй палец, отслеживаемые точки остаются неизменными. По-прежнему существует точка в x0, y0 и x1, y1, но идентификаторы теперь равны 0 и 1. Даже если точка с идентификационным номером 1 была снята.

Есть ли способ увидеть, что этот палец № 2 поднят и продолжать отслеживать точки, используя ID 0 и ID 2?

Мое понимание заключается в том, что это нужно делать вручную и чтобы значения идентификатора оставались в том же порядке, где у второго пальца всегда был более высокий идентификатор, чем первый, но они не могут оставаться одинаковыми при удалении пальцев.

ответ

0

В документации говорится: «Порядок, в котором отдельные указатели появляются в событии движения, не определен». Поэтому, если вы касаетесь своего первого, второго и третьего пальцев, они могут фактически отображаться в порядке 0: [первый] 1: [третий] 2; [второй].

Затем вы можете поднять второй палец, и следующее событие движения может быть 0: [третья] 1: [первая]. По крайней мере, это мое понимание от чтения документов, но я мог ошибаться.

0

Большая проблема заключается в том, что, по словам Theblacknight, поведение не определено. На каждом устройстве Android 3.0+, которое я тестировал до сих пор, это работает точно так, как вы ожидали, идентификаторы и индексы не меняются, все работает нормально.

Но на Android < 3.0, это зависит от телефона. Мой Droid2 ведет себя как ваша проблема, но G2 моего друга работает правильно.

Я пытался разработать лучший способ справиться с этим, но пока у вас нет отличного решения. Если он был последовательным и просто менял местами идентификаторы точек один раз, я мог бы принять его, но если вы удерживаете вторую точку и коснитесь первой вкл. И выкл., Две точки меняют идентификаторы и индексы назад и вперед каждый раз. Это очень расстраивает.

Смежные вопросы