JavafxPorts 屏幕尺寸
JavafxPorts screen size
我正在尝试创建一个可以在 PC (Windows) 和 Android 上 运行 的应用程序,但是,我在获得正确的屏幕尺寸时遇到了问题。
在 Windows 上,Screen.getBounds() 方法似乎总是 return 正确的全屏尺寸(即没有任务栏的屏幕 space 等)。在 Android 上,使用 Screen.getBounds() 将 return 屏幕尺寸比实际屏幕尺寸大得多。让我的应用程序在 android 上正常工作的唯一方法是使用 Screen.getVisualBounds()。但是,在 Windows 上,使用 Screen.getVisualBounds() 总是 return 的高度比实际的总屏幕尺寸略小,因为它删除了任务栏占用的 space。
有谁知道为什么 Screen.getBounds() return 在 Android 上的值比实际可见屏幕高得多?
谢谢。
Screen.getBounds()
return是物理像素,Screen.getVisualBounds()
return是逻辑像素。
虽然在桌面设备上,这些边界之间的差异仅与任务栏的存在有关,但在移动设备上,差异与像素密度或比例有关,并且可以大于 1。
这就是 Nexus 6 上 return 的那些方法:
由于 this device 的像素密度为 3.5。
回到您最初的问题,您需要在 Android 上使用 Screen.getVisualBounds()
。
但对于桌面版,您可以select大小自由选择:
@Override
public void start(Stage stage) {
Rectangle2D bounds = JavaFXPlatform.isDesktop() ?
Screen.getPrimary().getBounds() :
Screen.getPrimary().getVisualBounds();
Scene scene = new Scene(new StackPane(), bounds.getWidth(), bounds.getHeight());
stage.setScene(scene);
stage.show();
}
其中 JavaFXPlatform
来自 Gluon Charm Down,这是一个您可以获得 here.
的 OSS 库
我正在尝试创建一个可以在 PC (Windows) 和 Android 上 运行 的应用程序,但是,我在获得正确的屏幕尺寸时遇到了问题。
在 Windows 上,Screen.getBounds() 方法似乎总是 return 正确的全屏尺寸(即没有任务栏的屏幕 space 等)。在 Android 上,使用 Screen.getBounds() 将 return 屏幕尺寸比实际屏幕尺寸大得多。让我的应用程序在 android 上正常工作的唯一方法是使用 Screen.getVisualBounds()。但是,在 Windows 上,使用 Screen.getVisualBounds() 总是 return 的高度比实际的总屏幕尺寸略小,因为它删除了任务栏占用的 space。
有谁知道为什么 Screen.getBounds() return 在 Android 上的值比实际可见屏幕高得多?
谢谢。
Screen.getBounds()
return是物理像素,Screen.getVisualBounds()
return是逻辑像素。
虽然在桌面设备上,这些边界之间的差异仅与任务栏的存在有关,但在移动设备上,差异与像素密度或比例有关,并且可以大于 1。
这就是 Nexus 6 上 return 的那些方法:
由于 this device 的像素密度为 3.5。
回到您最初的问题,您需要在 Android 上使用 Screen.getVisualBounds()
。
但对于桌面版,您可以select大小自由选择:
@Override
public void start(Stage stage) {
Rectangle2D bounds = JavaFXPlatform.isDesktop() ?
Screen.getPrimary().getBounds() :
Screen.getPrimary().getVisualBounds();
Scene scene = new Scene(new StackPane(), bounds.getWidth(), bounds.getHeight());
stage.setScene(scene);
stage.show();
}
其中 JavaFXPlatform
来自 Gluon Charm Down,这是一个您可以获得 here.