如何开发空气应用以支持高DPI屏幕

时间:2015-09-22 19:04:23

标签: flex air highdpi

我有一个我开发的空气应用程序,我现在只使用它。它工作正常,但我最近有一个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值相同,所以似乎没有我们可以做任何事情来支持桌面上更高分辨率的显示器。

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

1 个答案:

答案 0 :(得分: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