Jacque,

Super helpful! Thank you for taking the time to respond. I'm looking forward to 
this project but right now it seems a little daunting. I'm glad to know that 
most code "just works".

Thanks again,
Chris


On Sep 30, 2011, at 2:22 PM, J. Landman Gay wrote:

> On 9/30/11 1:25 PM, Chris Sheffield wrote:
>> 
>> What I'd be most interested
>> in hearing is what's the best way to do a cross platform mobile app?
>> Two separate stacks for the interfaces, with common code libraries to
>> perform the main functionality?
> 
> That's one way. I didn't choose it though, I use a preOpenCard handler in 
> each card to adjust the layout. An advantage is that you don't need libraries 
> necessarily, you can use the same code and the normal message hierarchy.
> 
> Another reason is that no matter what, there will be a user with a resolution 
> you haven't planned for. That means you need a layout script anyway, even if 
> you do use separate stacks, so for me it was easier to just put it all in one 
> stack. You'd also need a layout handler just to accomodate device rotation 
> (if you are going to support that) so you may as well just bite the bullet 
> and do the resizeStack thing from the beginning.
> 
> When writing resizeStack (layout) handlers, you'll almost always want to use 
> ratios to calculate positions and sizes. That way objects will always fit. If 
> you hard-code pixel locations, something will be wrong on somebody's Android 
> device, because they come in an infinite number of resolutions. Right now iOS 
> is pretty consistent, but if you're writing for both platforms then you may 
> as well do ratio calcs from the start, which will work everywhere.
> 
>> Most controls will be skinned using custom
>> images. Do the other features in MobGUI make it worth the price?
> 
> I'm not sure. My app also uses a custom skin so I didn't go the MobGUI route. 
> Actually, even though I've read through the docs, I'm not quite sure what 
> advantages MobGUI would provide if you aren't using native controls.
> 
>> I may need to make use of a data grid at some point. Is the LC data
>> grid compatible with mobile apps? Am I going to run into any problems
>> with performance?
> 
> I'm not using one in my project but I know they are supported. There are 
> examples on the forum and, I think, in the RR lessons on how to get them to 
> scroll and operate smoothly. Probably someone else can answer this part beter 
> than me.
> 
>> Are there any other "gotchas"? Things I should be aware of up front
>> before I get too far into this and wish I had done something
>> differently? Is anyone else developing a cross-platform mobile app?
>> What kinds of successes/failures have you experienced?
> 
> Like you, I'm developing for tablets only and I've found very few cases where 
> I need to branch the code based on platform. If you are okay with basic sound 
> playback, you can use the generic "play" command everywhere; if you want more 
> control on iOS then you can branch on that platform and use the more advanced 
> sound controls that allow you to queue sounds and/or prepare them ahead of 
> time to avoid lag. My sounds are short, basic sound effects. I started out 
> branching but have recently changed to just the "play" command since I don't 
> need queueing and it makes the code base consistent.
> 
> Scrolling is beautiful on iOS, rotten on Android. There is no native scroller 
> on Android so you'll need to branch the code for that, and write a script to 
> fake it on Android. I've tried four different scripts, none are smooth. If 
> you don't have too many things to scroll, you can make life easier by only 
> putting nonscrolling objects/groups on a card. That's not always possible. I 
> was able to do it in one app, but not in another. Scrolling a list on my 
> low-tech cheapo Android tablet is very jerky. Higher-powered Android devices 
> would probably do better. If you aren't going to do an Android build for a 
> while, maybe LiveCode will catch up by the time you're ready and this won't 
> be an issue any more.
> 
> If you are going to show anything in a browser control, you'll need to branch 
> for that. iOS has an embedded one, Android needs to launch the system 
> browser. In practice they both end up working fairly similarly because 
> Android has a universal "back" button that returns you to the app wherever 
> you left off. Alternately you could call out to the system browser on iOS, 
> but if you do that your app will quit and lose its place. It was easier for 
> me to embed the browser on iOS than to keep track of the app state and 
> restore it on next launch.
> 
> Oh right, the hardware Back button. Android has one, iOS does not. I show a 
> Back button on the card for iOS, and don't show it on Android where users are 
> accustomed to using the hardware Back button. You'd be okay showing a back 
> button on both platforms, but for Android you wouldn't want the icon to look 
> like an iOS one.
> 
> If the stack is completely skinned this won't apply, but I do have one field 
> that shows a list of options that I try to make look semi-native. I branch 
> the code on preOpenCard, and make the field backcolor, hilite color, and font 
> appropriate for the OS. I also have one option that needs a "more"/"continue" 
> button, and I swap out the icon for that based on the OS.
> 
> That's all I can think of off the top of my head. Most of your code will be 
> universal, it's pretty amazing. In fact, I started out wanting to do an 
> Android-only app because there aren't many of those yet. But on a whim I 
> built for iOS just to see what would happen, and found that there were only a 
> couple of things I needed to change. So my app is now headed for both 
> platforms eventually.
> 
> -- 
> Jacqueline Landman Gay         |     jac...@hyperactivesw.com
> HyperActive Software           |     http://www.hyperactivesw.com
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to