我刚编写了一个在JavaFX中使用滚动窗格的简单示例。只有一个ScrollPane放置在Scene中,ScrollPane包含一个带有大文本的Label组件。使用gradle我已经在Nexus 4 android设备上上传了应用程序。从the video I have uploaded可以看出,滚动速度太慢了。我相信其他人也经历过这一点。任何有关如何将其更改为原生速度滚动的建议都非常受欢迎。
该应用的源代码可以是downloaded from here。
AndroidFX.java
public class AndroidFX extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Parent mySearchListFXML = getFXMLPane("/fxml/ScrollPaneWithLabel.fxml");
primaryStage.setScene(new Scene(mySearchListFXML));
primaryStage.setWidth(Screen.getPrimary().getVisualBounds().getWidth()); primaryStage.setHeight(Screen.getPrimary().getVisualBounds().getHeight());
primaryStage.show();
}
public static Parent getFXMLPane(String url) throws IOException {
URL location = AndroidFX.class.getResource(url);
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(location);
Parent pane = fxmlLoader.load();
return pane;
}
}
ScrollPaneWithLabel.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<ScrollPane fx:id="scrollPane" fitToWidth="true" hbarPolicy="NEVER" pannable="true" style="-fx-background: white;" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<content>
<Label text="<VERY LARGE TEXT HERE>" wrapText="true" />
</content>
</ScrollPane>
答案 0 :(得分:0)
面临类似的问题。 hidpi设备上的问题更严重,禁用属性文件中的hipdpi设置会有所帮助,但您必须为hidpi屏幕进行任何缩放。
另一件可能有用的事情就是缓存字体。我相信javafx移植应用程序的最终结果更像是一个带有热点的大图像。滚动我认为只是告诉应用程序每次重绘整个图像。真是一个理论。缓存确实有帮助,但可以使您的文本看起来有点模糊。虽然我在缩放字体方面取得了一些成功,但将缓存设置为true然后缩小,通常x2和.5会产生相当不错的结果。使用em作为字体也有助于模糊文本。
如果您需要显示大量文本并且必须滚动它,您可能会通过webview显示更好的结果。我从来没有真正使用过它,但是我想可以在用本机浏览器窗口移植时替换它,所以我认为性能应该非常好。我猜他们有可能在javafx中编写了一个html渲染器,然后你会遇到同样的陷阱。
http://www.gluonhq.com提供了一个名为charm,down和connect包的东西,它应该模仿本机应用程序。这听起来很有希望,我目前正在尝试获取更多信息,看看他们是否有解决这些类型的问题。如果我收到有关魅力的更多信息,我会在帖子中添加。