public interface MobileDevelopment
PhoneGap has good
support for native device APIs as noted here. Titanium has similar support. There are differences between the two
environments and how they expose their APIs, though both provide Xcode-compatible projects that
can be compiled and run from the Xcode IDE. See
Integration with Titanium and
Integration with PhoneGap for more information.
Mobile and touch devices support "touch events" that correspond to finger actions on the screen. By default, Smart GWT simply sends touch events to UI components as normal mouse events. Specifically:
The "Mobile" skin should be used whenever mobile devices are detected. This skin roughly mimics the appearance of the iOS default widgets wherever there is an iOS widget that corresponds closely to a given Smart GWT widget. It also makes extensive use of CSS3 to minimize the use of images while still providing an attractive look and feel.
In addition, this skin also changes the behavior of some Smart GWT widgets to match the UI idioms common on mobile devices. For example, the TabSet component switches to bottom-oriented tabs, which are flush together (no gaps). If there are more than a certain number of tabs, a special "More" tab appears which lists other remaining tabs. Among other examples, this is the behavior of the "iPad" application on iOS devices, and is an efficient use of minimal screen real estate which feels natural when used on a mobile device.
In order to detect whether to use the Mobile skin, because of the rapid proliferation of mobile devices, we recommend using server-side detection based on the User-Agent HTTP header, and using conditional logic (such as logic in a .jsp) to load the "Mobile" skin specifically for these devices.
Safari on the Apple iPod/iPhone supports explicitly
configuring the viewport as detailed here: http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html.
Including these meta tags in your bootstrap HTML file will allow you to set a default "zoom
level" - how many pixels show up on the screen in landscape or portrait mode as well as
disabling the user's standard zoom interactions. We also have
an API to configure the viewport programmatically
Note that the
Page.getOrientation API may be used to determine the current orientation of the application,
the page orientationChange event will fire
whenever the user rotates the screen allowing applications to directly respond to the user
pivoting their device.