MoSync本机UI和部署

时间:2011-02-04 13:41:36

标签: mobile user-interface cross-platform packaging mosync

有人知道是否可以使用MoSync创建具有原生UI的应用程序? 据我所知,所有UI /图形都是用自己的UI库完成的,而不是原生的ui元素。

此外,现在我正在创建一个问题。为什么MoSync针对特定的电话?是否不可能为您要定位的任何平台创建通用安装包? (像android的.apk文件)。如果有可能,它应该使分发更容易。

2 个答案:

答案 0 :(得分:1)

现在的标准方法是通过MAUI库创建自定义非本机UI。截至2011-02-03,有一个针对Android和iPhone的实验性原生UI框架。但是,用户文档并不存在,因此您必须检查源代码以获取更多信息。我将指出正确的方向,为了访问本机小部件,您使用在maapi.idl中定义的maWidget *系统调用。有关可用窗口小部件和属性的列表,请参阅:Types.java。请注意,此API可能会更改并进行扩展。

一个简单的原生UI示例:

#include <MAUtil/Moblet.h>

#include <IX_WIDGET.h>

class NativeUIMoblet : public MAUtil::Moblet
{
public:
    NativeUIMoblet()
    {
        // Create a screen
        MAHandle mainScreen = maWidgetCreate( "Screen" );

        // Create a 'Hello World' label
        MAHandle helloLabel = maWidgetCreate( "Label" );
        maWidgetSetProperty( helloLabel, "text", "Hello World!" );

        // Add the label to the screen
        maWidgetAddChild( mainScreen, helloLabel );

        // Show the screen
        maWidgetScreenShow( mainScreen );
    }

    void keyPressEvent(int keyCode, int nativeCode)
    {

    }

    void keyReleaseEvent(int keyCode, int nativeCode)
    {

    }
};

extern "C" int MAMain()
{
    MAUtil::Moblet::run( new NativeUIMoblet( ) );
    return 0;
};

目前,没有可用的模拟器支持,因此您必须在设备或特定SDK模拟器中运行它。

定位特定手机的原因是存在特定于某个设备的错误。但是在最近的MoSync夜间版本中,您可以为Android 2.1等通用平台构建。

答案 1 :(得分:1)