首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavafxPorts屏幕尺寸

JavafxPorts屏幕尺寸
EN

Stack Overflow用户
提问于 2016-04-09 07:23:22
回答 1查看 1.2K关注 0票数 1

我正在尝试创建一个同时运行在PC (Windows)和Android上的应用程序,然而,我在这两款应用上都有获得正确屏幕大小的问题。

在Windows上,Screen.getBounds()方法似乎总是返回正确的全屏大小(即没有任务栏空间的屏幕等)。在Android上,使用Screen.getBounds()将返回一个比实际屏幕大小大得多的屏幕大小。只有使用Screen.getVisualBounds()才能让我的应用程序在安卓系统上正常工作。但是,在Windows上,使用Screen.getVisualBounds()总是返回一个大小略小于实际总屏幕大小的大小,因为它删除了任务栏占用的空间。

有人知道为什么Screen.getBounds()在Android上返回的值比实际可见屏幕高得多吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-09 10:16:20

Screen.getBounds()返回物理像素,而Screen.getVisualBounds()返回逻辑像素。

而在桌面上,这些边界之间的差异只是与任务栏的存在有关,而在移动设备上,差异与像素密度或比例尺有关,并且可以大于1。

这就是这些方法在Nexus 6上返回的内容:

由于这个装置的像素密度为3.5。

回到你最初的问题,你需要在安卓系统上使用Screen.getVisualBounds()

但是对于桌面,您可以自由选择大小:

代码语言:javascript
运行
复制
@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来自胶子魅力下降,一个开放源码软件库,你可以得到这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36513951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档