Titanium:平台检测和相应的更改界面风格

时间:2012-07-28 03:12:03

标签: javascript android iphone titanium titanium-mobile

您可能知道不同的平台需要稍微不同的UX / UI。

例如,当您为iphone设计时,您可能有一个后退按钮,但是当您为Android构建时,您不需要后退按钮。

其他东西是图标,你可能在Android工具栏上有多个按钮,而iPhone的工具栏上只有2个按钮。

所以问题是......当您构建js文件来定义接口时,您是否构建了两个特定于平台的不同接口js文件,或者只是根据平台检测更改UI的1个js文件。


我认为拥有两套特定于平台的UI可能更容易,而不是更改平台检测的样式,因为UX甚至可能不同,因此UX和UI的代码会相当复杂?你觉得怎么样?

2 个答案:

答案 0 :(得分:3)

我认为,拥有两套特定于平台的UI是更好的选择。 示例应用程序(由钛工作室内置)显示了如何决定平台。以下是示例应用程序中的代码:

var osname = Ti.Platform.osname,
    version = Ti.Platform.version,
    height = Ti.Platform.displayCaps.platformHeight,
    width = Ti.Platform.displayCaps.platformWidth;

//considering tablet to have one dimension over 900px - this is imperfect, so you should feel free to decide
//yourself what you consider a tablet form factor for android
var isTablet = osname === 'ipad' || (osname === 'android' && (width > 899 || height > 899));

var Window;
if (isTablet) {
        Window = require('ui/tablet/ApplicationWindow');
}
else {
    // Android uses platform-specific properties to create windows.
    // All other platforms follow a similar UI pattern.
    if (osname === 'android') {
        Window = require('ui/handheld/android/ApplicationWindow');
    }
    else {
        Window = require('ui/handheld/ApplicationWindow');
    }
}
new Window().open();

答案 1 :(得分:0)

最好将业务逻辑与业务逻辑分开。 UI .js个文件。还为每个平台创建一个.js文件,您可以根据平台指定正确的js URL。您可以参考标签的Kitchen Sink示例,以获得清晰的想法。