Я разработал приложение глюона, которое использует uuid
для генерации штрих-кода и QRCODE. Использование может переключаться между штрих-кодом и QR-кодом в зависимости от магазина. Штрих-код будет отображаться только в портретном режиме экрана при нажатии на QRCODE (изображение). Таким образом, экран будет автоматически поворачиваться, когда пользователь нажимает на изображение (штрих-код / QR-код).
this.img.setOnMousePressed(event -> {
//Rotate Screen
Services.get( CMOrientationService.class ).ifPresent( o -> {
Orientation orientation = Services.get( OrientationService.class )
.flatMap(OrientationService::getOrientation)
.orElse(Orientation.HORIZONTAL);
Services.get(LogService.class).ifPresent(service -> service.log("orientation="+orientation.toString()));
if (orientation == Orientation.VERTICAL) {
Services.get(LogService.class).ifPresent(service -> service.log("Currently="+orientation.toString()));
//Change to Barcode
//GenerateBarQRCode(orientation == Orientation.VERTICAL);
o.coerceOrientation( Orientation.HORIZONTAL );
} else {
Services.get(LogService.class).ifPresent(service -> service.log("Currently="+orientation.toString()));
//Change to QRCode
//GenerateBarQRCode(orientation == Orientation.VERTICAL);
o.coerceOrientation( Orientation.VERTICAL );
}
GenerateBarQRCode(orientation == Orientation.VERTICAL);
} );
});
Проблемы возникают, когда пользователь пытается быстро щелкнуть изображение (двойной, тройной щелчок), оно будет сгенерировано неправильно.
Вы можете проверить это видео, чтобы получить более подробное представление. ).
Принято к сведению. Это ошибка только в Android.
clickCount
MouseEvent
и инициировать изменение только в том случае, если оно 1. Если это не сработает, рассмотрите возможность сохранения времени последнего изменения ориентации, инициированного этим обработчиком событий, и убедитесь, что логика выполняется только в том случае, если с момента последней смены ориентации прошло определенное время. - person fabian   schedule 28.05.2019if (System.currentTimeMillis() - lastUpdate >= 1000) { /* do update */ lastUpdate = System.currentTimeMillis(); }
(или с использованием некоторой задержки, отличной от 1000 мс) - person fabian   schedule 28.05.2019