Как разрабатывать мультитач-приложения на Java?
-
21-08-2019 - |
Вопрос
Предвидя тот день, когда мультисенсорные интерфейсы станут более распространенными, существуют ли на Java библиотеки, которые можно будет использовать для разработки сенсорных приложений?Я ищу интерфейсы, похожие на MouseListener/MouseMotionListener/MouseWheelListener.
Решение
В проекте MT4j есть все необходимое для разработки мультитач-приложений на Java.Все хорошо известные жесты MultyTouch уже встроены и могут быть доступны так же просты, как прослушивание событий мыши (например:компонент.addGestureListener(..)).Он также имеет граф сцены с аппаратным ускорением, аналогичный JavaFX.Вы даже можете имитировать мультитач-ввод, подключив к компьютеру одну или несколько мышей.Проверьте это на http://www.mt4j.org
Другие советы
Спарш все еще находится в моих закладках с тех пор, как я в последний раз исследовал Java-решения с поддержкой мультитач.
Хотя он и не так прост, как обычный прослушиватель мыши или прослушиватель щелчков, он все же обеспечивает разумный интерфейс.
Вам нужен класс прослушивания для реализации sparshui.client.Client
, что требует processEvent
определение метода.
public void processEvent(int groupID, Event event) {
if(event instanceof TouchEvent) {
TouchEvent e = (TouchEvent)event;
if(e.getState() == TouchState.BIRTH) {
//do initial touch stuff
} else if(e.getState() == TouchState.MOVE) {
//do dragging stuff
}
}
else if(event instanceof DragEvent) {
DragEvent e = (DragEvent)event;
//do DragEvent specific stuff
} else if(event instanceof RotateEvent) {
RotateEvent e = (RotateEvent)event;
//do RotateEvent specific stuff
} else if(event instanceof ZoomEvent) {
ZoomEvent e = (ZoomEvent)event;
//do ZoomEvent specific stuff
}
//several other gesture types....
}
После этого вам нужно запустить сервер распознавания жестов, передав свой компонент
new ServerConnection("localhost", objectImplementingClientInterface);
Просмотр примеров кода на сайте должен дать вам довольно хорошее представление о платформе.
Как насчет этого: http://kenai.com/projects/macmultitouch
В основном я занимаюсь обработкой и проектированием пользовательского интерфейса с нуля.Я искал решение, которое не предписывает структуру пользовательского интерфейса, которую, по-видимому, используют как MT4J, так и JavaFX.Более того, MT4J, похоже, заброшен.
Это выглядит многообещающим решением, по крайней мере, для Windows, но я не уверен, что оно уже выпущено:http://wiki.gestureworks.com/index.php/GestureWorksCore:Gestureworks_Core_Tutorials
Это специально для обработки, кросс-платформенной, с открытым исходным кодом и активной:https://github.com/vialab/SMT
MT4J не работает с Windows 8.
Если приложение предназначено только для одного пользователя, вы можете использовать JavaFX.Существуют разные прослушиватели событий касания.Но обрабатывать два жеста одновременно невозможно, потому что все точки касания сольются в один жест.Для больших мультитач экранов это недостаток.Для обычных экранов, где только один пользователь, это нормально.
Но есть также GestureWorks.Там вы можете определить новый жест или использовать предопределенный жест.Жесты определены в XML-файле (называемом GML).Любой объект может обрабатывать собственные жесты.Но вам придется реализовать hitTest и назначение баллов вручную.Но есть отличный урок.
Еще одна библиотека, которую я не тестировал, — это Multi Touch SDK от PQ Lab.