これまでの標準的な方法は、MAUI ライブラリを介してカスタムの非ネイティブ UI を作成することでした。2011 年 2 月 3 日現在、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 のような汎用プラットフォーム用にビルドできます。