我有一个空气应用程序,我已经开发,只有我使用的时刻。它的工作很好,但我最近得到了一个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值相同,因此我们似乎无法在台式机上支持更高分辨率的显示器。
似乎我们只是无法为高分辨率显示器制作应用程序。
1条答案
按热度按时间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