If you want the best user-experience, you have to use the OS-specific APIs.
Otherwise your best options are Webview components + HTML + Javascript + some native hooks to provide the missing functionality. Works quite well, take a look at PhoneGap + JQuery mobile / jQTouch.