apache-flex 如何开发空气应用程序以支持高DPI屏幕

oogrdqng  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(106)

我有一个空气应用程序,我已经开发,只有我使用的时刻。它的工作很好,但我最近得到了一个4K显示器,并恼火的应用程序不是写来支持自定义的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值相同,因此我们似乎无法在台式机上支持更高分辨率的显示器。
似乎我们只是无法为高分辨率显示器制作应用程序。

mspsb9vt

mspsb9vt1#

设备的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

相关问题