Я работаю над небольшим, но приятным проектом с открытым исходным кодом: RealViewSwitcher
, который позволяет переключаться между несколькими представлениями, выполняя горизонтальное перемещение - как это делает Launcher из Android. Это просто ViewGroup
, который реализует onInterceptTouchEvent
и onTouchEvent
, чтобы заставить вещи работать. Фактически большая часть кода взята из файла Workspace.java
(строка 572 и последующие), так же как и два метода обработки событий касания - без особых изменений.
Однако я не заставляю эту вещь работать. Мой текущий рабочий класс размещен здесь (на pastebin, потому что он довольно большой):
http://pastebin.com/8p8GCEZK
Если я выполняю свой класс (просто создав его, добавив несколько TextViews, а затем установив его в качестве представления содержимого упражнения), я получу следующий вывод, если сделаю быстрый бросок:
12-15 23:53:04.797: INFO/RealViewSwitcher(7477): intercept ACTION_DOWN
12-15 23:53:04.797: INFO/RealViewSwitcher(7477): touch ACTION_DOWN
12-15 23:53:04.807: INFO/RealViewSwitcher(7477): touch ACTION_MOVE
12-15 23:53:04.840: INFO/RealViewSwitcher(7477): touch ACTION_MOVE
12-15 23:53:04.867: INFO/RealViewSwitcher(7477): touch ACTION_MOVE
12-15 23:53:04.897: INFO/RealViewSwitcher(7477): touch ACTION_MOVE
12-15 23:53:04.897: INFO/RealViewSwitcher(7477): touch ACTION_UP
Теперь моя проблема: что бы я ни делал, я не получаю ACTION_MOVE
в моем onInterceptTouchEvent
методе. Я прочитал документацию несколько раз и попытался поиграть с возвращаемыми значениями, но я не получил никаких других событий, кроме ACTION_DOWN
, что ужасно, потому что фактический код, запускающий сброс, находится в случае ACTION_MOVE
.
Можете ли вы помочь мне здесь? Раздражающая вещь, которую я не могу получить: похоже, она реализована таким же образом в официальном приложении Launcher. Но их код работает, мой нет. Чего мне не хватает?