简单的问题,这是确保应用程序在不同屏幕分辨率上运行的最佳方式,而不会看到垃圾?我不能使用静态值,那么它需要根据分辨率进行调整.现在我正在使用相对测量(屏幕的百分比),但是想知道这是否是最好的处理方法?
解决方法
我们成功的另一个/另外的选择是使用屏幕密度值来计算显示尺寸的一小部分功能,这当然只是一个近似值,因为只有四个密度,但是我们已经发现非常有帮助
- //=============================================================================
- // inch
- //
- // compute approximate number of pixels for the specified physical on-screen
- // size based on the density reported by the OS
- //=============================================================================
- function inch(size)
- {
- // default to 160 dpi if unavailable
- var height = size * 160.0;
- try
- {
- // compute header height based on screen density ... target .25" height
- height = size * Ti.Platform.displayCaps.dpi;
- }
- catch(e) { warn("Error accessing display caps for screen density calculation: " + e); }
- return height;
- }
所以如果你想要的东西是3/4英寸高的屏幕上….
- Ti.UI.createThing({ height: inch(.75)});
…或者如果你想通过点大小来扩展事物,可以使一些常量…
- const g_12pt = inch(12/72); //0.166667
- const g_10pt = inch(10/72); //0.138889
- const g_8pt = inch(8/72); //0.111111
- const g_6pt = inch(6/72); //0.083333
- ...
- ...font:{fontSize: g_10pt,fontWeight:"bold"},...
我们还创建了几个功能来获得屏幕的高度和宽度,所以如果我们想要在平板电脑上更好的布局或者小的东西,我们可以更好地了解我们正在处理的内容.
- //=============================================================================
- // screenWidth - return screen width in inches
- //=============================================================================
- function screenWidth()
- {
- return Titanium.Platform.displayCaps.platformWidth / Titanium.Platform.displayCaps.dpi;
- }
- //=============================================================================
- // screenHeight - return screen height in inches
- //=============================================================================
- function screenHeight()
- {
- return Titanium.Platform.displayCaps.platformHeight / Titanium.Platform.displayCaps.dpi;
- }
你可以从那里继续下去,但这真的帮助我们了解我们如何在不同的密度和平台上布置我们的屏幕.英寸功能有异常处理,因为我们早在应用程序中使用它,有时候Ti.Platform仍然是未定义的.当我们提供Ti.Platform的报表时,我们提供了这样的功能,所以屏幕功能没有异常处理.如果您需要较早查询,那么您也可能需要异常处理.
希望这可以帮助!