Skip to main content

Best practice discussion: When to favor a webview over a native UI in titanium?



I'm currently working on a cross-platform mobile app and have gone through the process of creating the UI of my application using the given Titanium api.





Compared to when you are building a mobile web application this is a time consuming task, because you don't have the possibility to work on the rendered UI like you can on a rendered webpage using firebug.





Especially form creation is bothersome, so I decided to build my forms using html and render them in a Webview, which worked out pretty sweet for several reasons:









  • WebViews are automatically scrollable, so the soft keyboard won't cover the input fields in your HTML form









  • You can control which keyboard type is displayed with a WebView form by setting attributes on the <input> tag.









  • You can use JavaScript libraries to add form validation, field highlighting, and so forth to an HTML form.









Although this works like a charm and the titanium documentation encourages you to use webviews for building forms, I have mixed feelings about having mixed native UIs with webviews.





My questions to you:









  • What do you think of mixing native UIs with Webviews?









  • Do you have other use cases that favor a Webview?









  • What could be general criteria for using one or the other?









Thank you in advance :)


Comments

  1. What do you think of mixing native UIs with Webviews?

    The real question would be : Do you care about the user experience ? If yes, then go exclusively Titanium/Native. Sometimes, you need to use the Webviews to get around some problems (I had one year ago) : I remember I couldn't open online PDF files with Titanium : As Android platforms didn't open the PDF "natively" (Now you can), you had to pass the pdf's path to a Webview. That was the only time I was forced to pop up a WebView.

    Do you have other use cases that favor a Webview?

    If you are you talking about frameworks that base the rendering on Webviews then :
    If you have a client who owns a full static website and tell you to turn it into a mobile application It could be useful. Or, If you aim many platforms (more than Titanium does), you can use frameworks such as PhoneGap that will allow you creating WP7/iPhone/Android/BlackBerry apps.

    What could be general criteria for using one or the other?

    Which platform are you aiming ? As I said, Titanium won't allow you exporting your app for the WP7 platform.
    Then, if you need better performances, then go for Titanium/Native apps.
    On the other hand, if you want to reuse your code, think PhoneGap.

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.