Rutger
Rutger

Reputation: 60

MoSync native UI and deployment

Does anybody know if it's possible to use MoSync to create apps with a native UI?
From what I can tell all the UI/graphics is done with their own UI library and don't the the native ui elements.

Also, now that I'm creating a question anyway. Why does MoSync target specific telephones? Is it not possible to just create a generic install package for whatever platform you're targeting? (like .apk files for android). If it's possible it should make distribution easier.

Upvotes: 0

Views: 1899

Answers (2)

Mattias Frånberg
Mattias Frånberg

Reputation: 36

The standard way up til now has been to create a custom non-native UI through the MAUI library. As of 2011-02-03 there is an experimental native UI framework for Android and iPhone. The user documentation is however rather non-existent, so you will have to check the source code for more information. I'll point you in the right direction, for accessing native widgets you use the maWidget* system calls defined in: maapi.idl. For a list of available widgets and properties see: Types.java. Note that this API is likely to change and be expanded.

A simple native UI example:

#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;
};

Presently, there is no emulator support available, so you will have to run it on a device or in a specific SDKs emulator.

The reason for targeting a specific phone is that there exists bugs specific to a certain device. But in the recent nightly builds of MoSync you can build for generic platforms like Android 2.1.

Upvotes: 1

Related Questions