1

我有一个我开发的空气应用程序,目前只有我使用。它工作正常,但我最近有一台 4K 显示器,我对那些不支持 Windows 中的自定义 DPI 设置的应用程序感到恼火,这些应用程序用于确保文本在这个高 DPI 屏幕上实际上仍然可读。

...事实证明,我的应用程序不是为了支持这一点而编写的...

我可以获取自定义 DPI 值并以某种方式使用它吗?

我以前在为移动设备开发时使用过 applicationDPI 设置,但在这里似乎没有多大帮助。我已将其设置为 120,最低且应用程序仍然很小。如果我将它设置得更高,它会变得更小。

Windows 上的 runtimeDPI 似乎存在问题。使用这个非常简单的应用程序:

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                       xmlns:s="library://ns.adobe.com/flex/spark"
                       applicationDPI="120">

    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.core.FlexGlobals;
        ]]>
    </fx:Script>

    <s:VGroup>
        <s:Label text="runtimeDPI: {FlexGlobals.topLevelApplication.runtimeDPI }" />
        <s:Label text="applicationDPI: { FlexGlobals.topLevelApplication.applicationDPI }" />
        <s:Button click="Alert.show('Hello, world')" label="Say Hello"/>
    </s:VGroup>
</s:WindowedApplication>

我已经在具有 1900*1200 显示器的笔记本电脑和具有 4k 显示器的台式机上运行此应用程序,并且运行时 dpi 值都是 120。由于两者的 dpi 值相同,因此我们似乎无法做任何事情做以支持桌面上更高分辨率的显示。

似乎我们只是无法为高分辨率显示器制作应用程序。

4

1 回答 1

0

设备的 dpi 越高,一切看起来就越小。应用程序将通过设置更大的字体大小来补偿更高的 DPI。

以 Apache Flex SDK 如何处理 tabBar 的字体大小为例

120DPI:

https://github.com/apache/flex-sdk/blob/develop/frameworks/projects/mobiletheme/defaults.css#L1283

640DPI:

https://github.com/apache/flex-sdk/blob/develop/frameworks/projects/mobiletheme/defaults.css#L1404

在您的组件和皮肤中,您可以检查 DPI 并添加自定义逻辑以增加大小、距离、字体大小等,以使您的应用看起来正确。

这是一个例子: https ://github.com/apache/flex-sdk/blob/develop/frameworks/projects/mobiletheme/src/spark/skins/ios7/CheckBoxSkin.as#L97

以下是如何在运行时确定和处理 DPI 的一个很好的概述:http: //help.adobe.com/en_US/flex/mobileapps/WS19f279b149e7481c682e5a9412cf5976c17-8000.html#WS19f279b149e7481c-6bd5f36412cc794cd7a-8000

于 2015-09-23T05:28:19.670 回答