Я пытаюсь реализовать JavaFX ScrollPane с вложенным VBox, и у меня возникает странная проблема при слишком быстрой прокрутке на мобильных устройствах. Проблема в том, что если я прокручиваю более мелкие, но быстрые жесты вверх, панель прокрутки сначала останавливается на полсекунды, а затем продолжается. Это становится медленным в случайных жестах салфетки. В любом случае я могу оптимизировать это?
Этого не происходит в настольной версии, поэтому я предполагаю, что это может быть ограничение моего телефона и самого JavaFX. Эта проблема становится более очевидной, когда я устанавливаю фоновое изображение для области просмотра области прокрутки. Вот пример кода для представления:
public class StackUserView extends View {
private Label label;
public StackUserView(String name) {
super(name);
initDisplay();
}
private void initDisplay() {
this.label = new Label("10");
label.setFont(Font.font(40d));
VBox box = new VBox();
box.setSpacing(10);
box.setAlignment(Pos.CENTER_RIGHT);
for(int i = 0; i < 100; i++){
Label label = new Label("HELLO");
label.setCache(true);
label.setCacheHint(CacheHint.SPEED);
label.setCacheShape(true);
box.getChildren().add(label);
}
ScrollPane pane = new ScrollPane(box);
pane.setCacheHint(CacheHint.QUALITY);
pane.setFitToHeight(true);
pane.setFitToHeight(true);
this.setCenter(pane);
}
@Override
protected void updateAppBar(AppBar appBar) {
appBar.setNavIcon(MaterialDesignIcon.MENU.button(e -> MobileApplication.getInstance().showLayer(SpeedSelect.MENU_LAYER)));
appBar.setTitleText(this.getName());
appBar.getActionItems().add(MaterialDesignIcon.SEARCH.button(e -> System.out.println("Search")));
}
}
В конечном счете, я пытаюсь заставить его прокручиваться как можно ближе к реальной мобильной среде.
Мне удалось оптимизировать ситуации, когда требуется прокрутка, создав собственный CharmListView с ячейками HBox, но тогда я не могу использовать SceneBuilder для своих представлений, что влияет на удобство сопровождения.
Примечание. Для тестирования я использую LG G5.
Вот короткое видео о проблеме. Вы можете увидеть после салфетки. Прокрутка останавливается на секунду, а затем продолжается:
ListView
в этом смысле не намного лучше, чемScrollPane
. Если вы можете скомпилировать собственную версию порта JFX, обходной путь довольно прост. В противном случае требуется относительно более сложный обходной путь для измененияFontFactory
посредством отражения. - person Itai   schedule 29.01.2018PangoGlyphLayout
. - person Itai   schedule 31.01.2018Loading FontFactory com.sun.javafx.font.freetype.FTFactory
иFreetype2 Loaded (version 2.6.5)
. Или, если вы проверите apk, вы найдете эту библиотекуlibjavafx_font_freetype.so
. - person José Pereda   schedule 31.01.2018