Android Multitouch - определить, какой палец поднят?

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

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

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

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

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

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


person Nathan Tornquist    schedule 05.01.2012    source источник


Ответы (2)


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

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

person Theblacknight    schedule 15.02.2012

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

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

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

person Michael    schedule 03.03.2012