<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Devgirls Weblog</title>
	<atom:link href="http://devgirl.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://devgirl.org</link>
	<description>Trials and tribulations of software development...</description>
	<lastBuildDate>Wed, 16 May 2012 18:52:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>PhoneGap and iOS &#8211; www folder creation tip</title>
		<link>http://devgirl.org/2012/05/16/phonegap-and-ios-www-folder-creation-tip/</link>
		<comments>http://devgirl.org/2012/05/16/phonegap-and-ios-www-folder-creation-tip/#comments</comments>
		<pubDate>Wed, 16 May 2012 18:40:25 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Cordova]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[cordova www folder]]></category>
		<category><![CDATA[cordova xcode]]></category>
		<category><![CDATA[phonegap default www folder]]></category>
		<category><![CDATA[phonegap ios]]></category>
		<category><![CDATA[phonegap www folder]]></category>
		<category><![CDATA[phonegap www folder not created]]></category>
		<category><![CDATA[phonegap xcode]]></category>
		<category><![CDATA[www folder not found]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3849</guid>
		<description><![CDATA[When building your first PhoneGap (aka Cordova) project using XCode, there&#8217;s something to be aware of that could potentially cause confusion so I wanted to address it quickly with a post. First of all, to get started with PhoneGap and iOS, you can follow the detailed instructions here. This post is meant to supplement these [...]]]></description>
			<content:encoded><![CDATA[<p>When building your first PhoneGap (aka Cordova) project using XCode, there&#8217;s something to be aware of that could potentially cause confusion so I wanted to address it quickly with a post. First of all, to <a href="http://phonegap.com/start">get started with PhoneGap and iOS</a>, you can follow the detailed instructions <a href="http://phonegap.com/start">here</a>. This post is meant to supplement these instructions. If you are at the point where you have <a href="http://phonegap.com/download">downloaded and installed PhoneGap</a> (ran the PhoneGap-xx.dmg or Cordova-xx.dmg from the <strong>ios</strong> folder in the downloaded phonegap.zip etc) and opened XCode to create your first project, you will see a new option for <strong>Create a new Cordova-based Applicatio</strong>n (or Create a new PhoneGap-based Application depending on what version of PhoneGap you downloaded) such as below:</p>
<p><a href="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-16-at-1.26.10-PM.png"><img class="aligncenter size-full wp-image-3880" title="Screen shot 2012-05-16 at 1.26.10 PM" src="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-16-at-1.26.10-PM.png" alt="" width="726" height="485" /></a></p>
<p>The trick is, once you select that option a project is created and opened just fine, but you MUST actually <strong>Run</strong> the application first to cause the special <strong>www</strong> folder (specific to PhoneGap projects and containing the main .js file PhoneGap needs to work) to be created in the same folder as the .xcodeproject file just created.</p>
<p><a href="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-16-at-2.10.29-PM.png"><img class="aligncenter size-full wp-image-3891" title="Screen shot 2012-05-16 at 2.10.29 PM" src="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-16-at-2.10.29-PM.png" alt="" width="100" height="74" /></a></p>
<p>The <a href="http://phonegap.com/start">instructions</a> do mention executing the project and that you will get an error at that point, but don&#8217;t make it entirely clear that the important <strong>www</strong> folder will actually be created at that step. If you&#8217;re like me, you might decide to <em>skip</em> that instruction because you know it&#8217;s not going to work yet anyway since PhoneGap needs the <strong>www</strong> folder copied in. Yes, I can admit I did this the first time <img src='http://devgirl.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Then you will probably try to follow the rest of the instructions to copy that www folder in and find that it&#8217;s not there. My personal assumption when I did this the first time is that the <strong>www</strong> folder was getting created for me when I selected the new <strong>Cordova-based Application</strong> option. Now that I have more experience, I can see how you may not ALWAYS want that <strong>www</strong> folder created upon project creation, such as the case where you are copying an existing one in, however I will have to follow-up more on this to see if there are changes coming in this workflow.  </p>
<p>To illustrate, after creating your <strong>Cordova-based Application</strong> in XCode, if you right click on the root of the project in XCode and say <em>Show in Finder</em>, you will see this:</p>
<p><a href="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-16-at-1.56.32-PM.png"><img class="aligncenter  wp-image-3881" title="Screen shot 2012-05-16 at 1.56.32 PM" src="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-16-at-1.56.32-PM.png" alt="" width="699" height="372" /></a></p>
<p>But after you actually <strong>Run</strong> the project in XCode and receive errors, then stop and right-click again on that root project in XCode to <em>Show in Finder</em>, you will the <strong>www</strong> folder was in fact created and is ready to copy in to XCode:</p>
<p><a href="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-16-at-2.19.46-PM.png"><img class="aligncenter  wp-image-3902" title="Screen shot 2012-05-16 at 2.19.46 PM" src="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-16-at-2.19.46-PM.png" alt="" width="698" height="371" /></a></p>
<p>If you&#8217;re a developer that has run into this yourself (not one of those that always follows specific directions and never makes ANY assumptions <img src='http://devgirl.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) then I hope this helped you quickly get to the bottom of it <img src='http://devgirl.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><strong>NOTE:</strong> This is specific to creating a brand new project, not porting over an existing www folder that already had the necessary contents where there is no need for a default one to be created.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2012%2F05%2F16%2Fphonegap-and-ios-www-folder-creation-tip%2F&amp;title=PhoneGap%20and%20iOS%20%E2%80%93%20www%20folder%20creation%20tip" id="wpa2a_2"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/05/16/phonegap-and-ios-www-folder-creation-tip/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PhoneGap for Flex/AIR Mobile Developers</title>
		<link>http://devgirl.org/2012/05/14/phonegap-for-flexair-mobile-developers/</link>
		<comments>http://devgirl.org/2012/05/14/phonegap-for-flexair-mobile-developers/#comments</comments>
		<pubDate>Mon, 14 May 2012 19:19:46 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[Flex Mobile]]></category>
		<category><![CDATA[Flex/AIR]]></category>
		<category><![CDATA[HTML/JS]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[cordova AIR]]></category>
		<category><![CDATA[phonegap Adobe AIR]]></category>
		<category><![CDATA[phonegap flex AIR]]></category>
		<category><![CDATA[phonegap versus AIR]]></category>
		<category><![CDATA[what is phonegap]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3786</guid>
		<description><![CDATA[If you&#8217;re a Flex/AIR developer or any developer focused on mobile for that matter, I believe it&#8217;s worth your while to spend some time reading this first post in a series of posts I will be writing on using PhoneGap (aka Cordova) for building mobile apps. It&#8217;s another great technology choice for rapid cross-platform mobile [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://devgirl.org/wp-content/uploads/2012/05/phonegaplogo.png"><img src="http://devgirl.org/wp-content/uploads/2012/05/phonegaplogo.png" alt="" title="phonegaplogo" width="200" height="200" class="alignleft size-full wp-image-3853" /></a> If you&#8217;re a Flex/AIR developer or any developer focused on mobile for that matter, I believe it&#8217;s worth your while to spend some time reading this first post in a series of posts I will be writing on using <a href="http://phonegap.com">PhoneGap</a> (aka Cordova) for building mobile apps. It&#8217;s another great technology choice for rapid cross-platform mobile development and becoming more and more popular. I&#8217;ve heard some developers express how they feel like they&#8217;re going back in time with HTML/JS development, or simply don&#8217;t want to &#8216;go there&#8217; but it&#8217;s worth checking out how it can be used to quickly build a mobile application with HTML/JS and PhoneGap and you should consider this option for building mobile apps.</p>
<h3>What is it?</h3>
<p>The crux of PhoneGap is essentially a big &#8216;ol .js file (per platform, separate one for iOS vs Android etc) along with some simple native code to enable it to work. In the main JavaScript file (phonegap.js or cordova.js) are a bunch of functions that give you access to native features including the <strong><em>camera, compass, accelerometer, file system, storage access, media capture, audio playback, notifications, contacts and network connection status</em></strong> etc, similar to what Adobe AIR APIs offer, with the addition of a couple more. You write your applications in HTML/JavaScript and use CSS to style them. PhoneGap apps are wrapped in a native web container component, which is why your HTML/JS/CSS work. This also means there is a dependency for your phone&#8217;s browser to be based on the WebKit engine. This really isn&#8217;t an issue though since WebKit is the default for iOS, Android, BlackBerry Tablet OS and webOS currently. A great overview of <a href="http://www.tricedesigns.com/2012/02/14/what-is-phonegap-other-common-questions/">commonly asked questions about PhoneGap</a> can be found on my teammate Andy Trice&#8217;s blog, as well as a bunch of other great PhoneGap posts, so definitely check out <a href="http://www.tricedesigns.com/">his blog</a> for heaps of good content. </p>
<h3>How Does it Work?</h3>
<p>The API functions in the phonegap.js (or most recently cordova.js) files call native plugin/extension code to provide the access to the native features through JavaScript <em><strong>exec</strong></em> calls. If you&#8217;re an AIR developer, it&#8217;s similar to the AIR Native Extensions model, except in PhoneGap they&#8217;re called <em>plugins</em>, and the set of APIs listed above (notifications, compass etc) are included and set up for you by default in the PhoneGap download. There are a <a href="https://github.com/phonegap/phonegap-plugins">bunch of other open source plugins available</a> too which can easily be added to your project, or if you don&#8217;t find one you need, they&#8217;re easy to write. Here you can find <a href="http://wiki.phonegap.com/w/page/36753494/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20Android">instructions on how to write one for Android</a>, and<a href="http://wiki.phonegap.com/w/page/36753496/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20iOS"> here</a> for iOS.  You can see that the JavaScript exec calls for iOS use .h/.m files for the actual native implementation, and .java for Android. </p>
<p>When you&#8217;re ready to use one of the APIs in your application, it&#8217;s very straightforward and easy to use. Here&#8217;s an example of adding a notification to your application:</p>
<p><strong>Code Example</strong></p>
<pre class="brush: jscript; title: ; notranslate">
...
    function showAlert() {
        navigator.notification.alert(
            'You are the winner!',  // message
            alertDismissed,         // callback
            'Game Over',            // title
            'Done'                  // buttonName
        );
    }
...
</pre>
<p>Here&#8217;s the result:<br />
<a href="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-03-at-4.56.48-PM.png"><img src="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-03-at-4.56.48-PM.png" alt="" title="Screen shot 2012-05-03 at 4.56.48 PM" width="396" height="744" class="aligncenter size-full wp-image-3835" /></a></p>
<p>You will find that all of the APIs are accessed through a <em><strong>navigator</strong></em> variable (declared in the phonegap.js file). To see examples of how to use all of them, check out the nicely done <a href="http://docs.phonegap.com/en/1.7.0/index.html">API reference docs</a>. </p>
<p>If you&#8217;re curious of how this works underneath, here&#8217;s the notification code snippet straight out of the cordova.js file (<strong>NOTE:</strong> remember phonegap and cordova are currently the same library, so if you download it now you may find that your main API files are named cordova.js file instead of phonegap.js):</p>
<p><strong>phonegap.js Source for Notifications</strong></p>
<pre class="brush: jscript; title: ; notranslate">
...
/**
 * Open a native alert dialog, with a customizable title and button text.
 *
 * @param {String} message              Message to print in the body of the alert
 * @param {Function} completeCallback   The callback that is called when user clicks on a button.
 * @param {String} title                Title of the alert dialog (default: Alert)
 * @param {String} buttonLabel          Label of the close button (default: OK)
 */
Notification.prototype.alert = function(message, completeCallback, title, buttonLabel) {
    var _title = title;
    if (title == null || typeof title === 'undefined') {
        _title = &quot;Alert&quot;;
    }
    var _buttonLabel = (buttonLabel || &quot;OK&quot;);
    &lt;strong&gt;Cordova.exec(completeCallback, null, &quot;org.apache.cordova.notification&quot;, &quot;alert&quot;, [message,{ &quot;title&quot;: _title, &quot;buttonLabel&quot;: _buttonLabel}]);&lt;/strong&gt;
};
</pre>
<p>The above code shows the notification alert function definition to use for performing a native alert notification on iOS. The important line there is the <strong>Cordova.exec(&#8230;)</strong> call, which will use the native plugin code for iOS or Java to perform the notification. If you&#8217;re extra curious and want to see what the native code looks like for this, you can open the Notification.java or CDVNotification.m files such as shown (note: you need to download the actual cordova/phonegap project source <a href="https://github.com/cordova">from github here</a> to view the source files for the core plugins. This is only necessary if you wish to view them or want to make your own custom changes to them, typically you would just <a href="http://phonegap.com/download">install from here</a>). I pasted a couple snippets from the native code files below to give an idea:</p>
<p><strong>Java Source for Notifications</strong></p>
<pre class="brush: as3; title: ; notranslate">
public PluginResult execute(String action, JSONArray args, String callbackId) {
    PluginResult.Status status = PluginResult.Status.OK;
    String result = &quot;&quot;;   

    try {
      ...
      else if (action.equals(&quot;alert&quot;)) {
        this.alert(args.getString(0),args.getString(1),args.getString(2), callbackId);
        PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT);
        r.setKeepCallback(true);
        return r;
      }
...
</pre>
<p><strong>Objective-C Source for Notifications</strong></p>
<pre class="brush: cpp; title: ; notranslate">
...
- (void) alert:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options
{
    int argc = [arguments count];

	NSString* callbackId = argc &gt; 0? [arguments objectAtIndex:0] : nil;
	NSString* message = argc &gt; 1? [arguments objectAtIndex:1] : nil;
	NSString* title   = argc &gt; 2? [arguments objectAtIndex:2] : nil;
	NSString* buttons = argc &gt; 3? [arguments objectAtIndex:3] : nil;

	if (!title) {
        title = NSLocalizedString(@&quot;Alert&quot;, @&quot;Alert&quot;);
    }
	if (!buttons) {
        buttons = NSLocalizedString(@&quot;OK&quot;, @&quot;OK&quot;);
    }

	CDVAlertView *alertView = [[CDVAlertView alloc]
							  initWithTitle:title
							  message:message
							  delegate:self
							  cancelButtonTitle:nil
							  otherButtonTitles:nil];

	alertView.callbackId = callbackId;

	NSArray* labels = [buttons componentsSeparatedByString:@&quot;,&quot;];
	int count = [labels count];

	for(int n = 0; n &lt; count; n++)
	{
		[alertView addButtonWithTitle:[labels objectAtIndex:n]];
	}

	[alertView show];
	[alertView release];
}
...
</pre>
<h3>Common Questions</h3>
<ul>
<li><strong>What kind of UI Components does PhoneGap offer?</strong> PhoneGap does not offer UI Components, they leave that implementation up to you with your choice of HTML/JS/CSS or some other UI frameworks available like Twitter Bootstrap, jQuery Mobile, Kendo UI etc&#8230;</li>
<li><strong>How can I consume data in a PhoneGap app? </strong> The same way you consume data from a web application &#8211; REST, JSON, SOAP etc.</li>
<li><strong>What&#8217;s the difference between PhoneGap and Cordova?</strong> Cordova is the Apache Open Source project behind PhoneGap. If this is confusing to you, please read <a href="http://phonegap.com/2012/03/19/phonegap-cordova-and-what%E2%80%99s-in-a-name/">this post</a>!</li>
<li><strong>What kind of development environment do I need?</strong> You can develop in your editor of choice on any platform. There are some workflow tips I can provide and will do so in the next post with my choices for editing, debugging etc. Once you have created your app in your platform of choice, you can just upload the source directly from your source control system or via zip file to <a href="http://build.phonegap.com">PhoneGap Build</a> as the screenshot below shows and it will create a ready to install package for all of the different platforms.</li>
<p><a href="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-14-at-2.20.46-PM2.png"><img src="http://devgirl.org/wp-content/uploads/2012/05/Screen-shot-2012-05-14-at-2.20.46-PM2.png" alt="" title="Screen shot 2012-05-14 at 2.20.46 PM" width="468" height="535" class="aligncenter size-full wp-image-3864" /></a></p>
</ul>
<h3>More Resources</h3>
<li><a href="http://www.tricedesigns.com/2012/03/22/phonegap-explained-visually/">PhoneGap Explained Visually</a>
<li><a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/94e7fded-7162-445e-8ceb-97a2140866a9/entry/debugging_mobile_javascript_with_weinre?lang=en">Debugging PhoneGap Apps with Weinre</a></li>
<li><a href="http://buddylindsey.com/things-to-look-at-when-you-are-using-a-phonegap-plugin/">PhoneGap Plugin FYI</li>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2012%2F05%2F14%2Fphonegap-for-flexair-mobile-developers%2F&amp;title=PhoneGap%20for%20Flex%2FAIR%20Mobile%20Developers" id="wpa2a_4"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/05/14/phonegap-for-flexair-mobile-developers/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>May Meetups! Building Real Mobile Apps with HTML/JS/PhoneGap</title>
		<link>http://devgirl.org/2012/05/03/may-meetups-building-real-mobile-apps-with-htmljsphonegap/</link>
		<comments>http://devgirl.org/2012/05/03/may-meetups-building-real-mobile-apps-with-htmljsphonegap/#comments</comments>
		<pubDate>Thu, 03 May 2012 15:09:26 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[HTML/JS]]></category>
		<category><![CDATA[PhoneGap]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3779</guid>
		<description><![CDATA[We will be doing a couple of presentations here in Florida on building mobile applications with HTML/JS and PhoneGap that you will not want to miss if you&#8217;re anywhere near the area. Christophe Coenraets, Greg Wilson and myself will be presenting two 3 hour workshops in Orlando and Tampa on May 8th and 9th respectively. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://devgirl.org/wp-content/uploads/2012/05/mobile-devices2.png"><img src="http://devgirl.org/wp-content/uploads/2012/05/mobile-devices2.png" alt="" title="mobile-devices2" width="360" height="365" class="aligncenter size-full wp-image-3813" /></a><br />
We will be doing a couple of presentations here in Florida on building mobile applications with HTML/JS and <a href="http://phonegap.com/">PhoneGap</a> that you will not want to miss if you&#8217;re anywhere near the area. <a href="http://coenraets.org/blog/">Christophe Coenraets</a>, <a href="http://gregsramblings.com/ ">Greg Wilson</a> and myself will be presenting two 3 hour workshops in Orlando and Tampa on May 8th and 9th respectively. Included in the presentation will be an introduction to <a href="http://phonegap.com/">PhoneGap</a>, a deep dive into building an HTML/JS mobile application (non-web) using popular JavaScript frameworks available, and some demos of applications built with this technology, including a real-world Salesforce.com backed iPad application showing off how powerful this technology can be. </p>
<p>Details on the events are below: </p>
<p><strong><a href="http://www.meetup.com/BarCampTampaBay/events/60875062">Tampa Meetup</a></strong><br />
<strong><a href="http://fullsail.groups.adobe.com/index.cfm?event=post.display&#038;postid=42197">Orlando Meetup</a></strong></p>
<p>There were only 10 spots left in the Tampa meetup when I last checked, so if you&#8217;re interested, be sure to sign up now <img src='http://devgirl.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> !!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2012%2F05%2F03%2Fmay-meetups-building-real-mobile-apps-with-htmljsphonegap%2F&amp;title=May%20Meetups%21%20Building%20Real%20Mobile%20Apps%20with%20HTML%2FJS%2FPhoneGap" id="wpa2a_6"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/05/03/may-meetups-building-real-mobile-apps-with-htmljsphonegap/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Upcoming Flex Events</title>
		<link>http://devgirl.org/2012/04/09/upcoming-flex-events/</link>
		<comments>http://devgirl.org/2012/04/09/upcoming-flex-events/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 17:48:44 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Apache Flex]]></category>
		<category><![CDATA[Flex Mobile]]></category>
		<category><![CDATA[360 Flex]]></category>
		<category><![CDATA[360|Flex]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3767</guid>
		<description><![CDATA[If you&#8217;re looking for a great conference to attend, 360&#124;Flex is right around the corner and you should definitely make a point of checking it out. Most developers consider this to be *the* conference to attend and glancing at the schedule, you can see why. My fellow teammate, Christophe Coenraets is going to be doing [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re looking for a great conference to attend, <a href="http://www.360flex.com/">360|Flex</a> is right around the corner and you should definitely make a point of checking it out. Most developers consider this to be *the* conference to attend and glancing at the <a href="http://www.360flex.com/schedule/">schedule</a>, you can see why. My fellow teammate, Christophe Coenraets is going to be doing the keynote and has some fun in store that you will not want to miss. There will also be an update from the <a href="http://www.spoon.as/">Spoon folks</a> so you can find out all the latest and greatest information around the <a href="http://incubator.apache.org/flex/">Apache Flex</a> open source project. This year&#8217;s conference is not just Flex either, you will have the opportunity to help yourself become a more well-rounded developer and explore other technologies from the best of the best developers first hand. <a href="http://www.360flex.com/blog/2012/03/360flex-2012-not-just-flex/">This post by John Wilker</a> (who runs the show) sums up the experience well. Also, Denver is a great location and has so much to offer. It&#8217;s personally one of my favorite cities to visit, so be sure to check this one out! </p>
<p>Secondly, if you&#8217;re in or around the Dallas area, be sure to visit <a href="http://gregsramblings.com/">Greg Wilson</a> and <a href="http://www.unitedmindset.com/jonbcampos/">Jon Campos</a> at the Flex User Group meeting on April 19, 2012. Details about the event can be found <a href="http://dflex.groups.adobe.com/index.cfm?event=post.display&#038;postid=41781">here</a>!  </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2012%2F04%2F09%2Fupcoming-flex-events%2F&amp;title=Upcoming%20Flex%20Events" id="wpa2a_8"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/04/09/upcoming-flex-events/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Adobe&#8217;s Commitments to Flex &#8211; Official Whitepaper</title>
		<link>http://devgirl.org/2012/02/15/adobe-commitments-to-flex-whitepaper/</link>
		<comments>http://devgirl.org/2012/02/15/adobe-commitments-to-flex-whitepaper/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 23:58:55 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Apache Flex]]></category>
		<category><![CDATA[Flash Builder]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3745</guid>
		<description><![CDATA[There have been a lot of questions about the viability and future of Flex recently, and Adobe has published an official whitepaper today detailing their support for Flex going forward. The paper also contains details regarding Flash runtime support, Flash Builder support and other Apache contributions including the Falcon compiler. I believe the paper is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://devgirl.org/wp-content/uploads/2012/02/flex.png"><img src="http://devgirl.org/wp-content/uploads/2012/02/flex.png" alt="" title="flex" width="191" height="100" class="aligncenter size-full wp-image-3750" /></a><br />
There have been a lot of questions about the viability and future of Flex recently, and Adobe has published an official whitepaper today detailing their support for Flex going forward. The paper also contains details regarding Flash runtime support, Flash Builder support and other Apache contributions including the Falcon compiler. I believe the paper is a must read and can be found <strong><a href=" http://www.adobe.com/go/flex_whitepaper">HERE</a>.</strong></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2012%2F02%2F15%2Fadobe-commitments-to-flex-whitepaper%2F&amp;title=Adobe%E2%80%99s%20Commitments%20to%20Flex%20%E2%80%93%20Official%20Whitepaper" id="wpa2a_10"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/02/15/adobe-commitments-to-flex-whitepaper/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Flex Mobile Development &#8211; Dynamic Splash Screens</title>
		<link>http://devgirl.org/2012/01/20/flex-mobile-development-dynamic-splash-screens/</link>
		<comments>http://devgirl.org/2012/01/20/flex-mobile-development-dynamic-splash-screens/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 17:14:11 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Apache Flex]]></category>
		<category><![CDATA[Flash Builder 4.6]]></category>
		<category><![CDATA[Flex 4.6]]></category>
		<category><![CDATA[dynamic splash screen]]></category>
		<category><![CDATA[flex dynamic splash]]></category>
		<category><![CDATA[flex splash screen]]></category>
		<category><![CDATA[SplashScreenImage]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3635</guid>
		<description><![CDATA[Flash Builder 4.6 includes a new feature to allow you to add a dynamic splash screen component to your mobile application. This feature will allow you to load a different image based on a few different properties you can set to ensure you get the best image for the right device. The properties you can [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash_builder">Flash Builder 4.6</a> includes a new feature to allow you to add a dynamic splash screen component to your mobile application. This feature will allow you to load a different image based on a few different properties you can set to ensure you get the best image for the right device. The properties you can use to determine which image is displayed for the splash screen are:</p>
<p><em><strong>dpi<br />
minResolution<br />
aspectRatio</strong></em></p>
<p>You can combine these attributes as well to get the best possible image selected. It&#8217;s very easy to implement, you simple create an MXML component based on the <strong>SplashScreenImage</strong> property and include as many <strong>SplashScreenImageSource</strong> objects to cover the number of situations needed. For example, in the following code I&#8217;m setting different images depending on both<em> <strong>dpi</strong></em> and <em><strong>aspectRatio</strong></em> properties. Note that this example makes an assumption about tablets generally being 160 DPI (thus needing the bigger image), the 320 DPI being the iPhone 4 and above and most android phones at 240 and setting the image based on that. It also assumes that I want to use the landscape version of the image when the <em><strong>aspectRatio</strong></em> happens to be landscape on startup. You could also use the <em><strong>minResolution</strong></em> to further ensure that the 160 DPI is indeed a tablet etc and that will cause the the stage width and stage height to be compared on startup to find the largest number of the two. If it&#8217;s equal to or greater than your <em><strong>minResolution</strong></em> setting, it will select that image for the splash screen. </p>
<p><strong>DynamicSplashScreen.mxml</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:SplashScreenImage xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot; xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;160&quot; aspectRatio=&quot;portrait&quot; source=&quot;@Embed('assets/texas-768x1024.jpg')&quot;/&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;240&quot; aspectRatio=&quot;portrait&quot; source=&quot;@Embed('assets/texas-480x810.jpg')&quot;/&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;320&quot; aspectRatio=&quot;portrait&quot; source=&quot;@Embed('assets/texas-640x960.jpg')&quot;/&gt;
        &lt;s:SplashScreenImageSource dpi=&quot;160&quot; aspectRatio=&quot;landscape&quot; source=&quot;@Embed('assets/texas-1024x768.jpg')&quot;/&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;240&quot; aspectRatio=&quot;landscape&quot; source=&quot;@Embed('assets/texas-810x480.jpg')&quot;/&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;320&quot; aspectRatio=&quot;landscape&quot; source=&quot;@Embed('assets/texas-960x640.jpg')&quot;/&gt;
&gt;/s:SplashScreenImage&gt;
</pre>
<p>Now in your main application root, you simply specify the name of your component defined above in the <em><strong>splashScreenImage</strong></em> property as follows:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;s:ViewNavigatorApplication xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
							xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
							firstView=&quot;views.FrontView&quot;
							splashScreenImage=&quot;DynamicSplashScreen&quot;&gt;
...
&lt;/s:ViewNavigatorApplication&gt;
</pre>
<div align="center"><strong>Portrait Splash</strong></div>
<p><a href="http://devgirl.org/wp-content/uploads/2012/01/portraitSplash1.png"><img src="http://devgirl.org/wp-content/uploads/2012/01/portraitSplash1-225x300.png" alt="" title="portraitSplash" width="225" height="300" class="aligncenter size-medium wp-image-3741" /></a></p>
<div align="center"><strong>Landscape Splash</strong></div>
<p><a href="http://devgirl.org/wp-content/uploads/2012/01/landscapeSplash1.png"><img src="http://devgirl.org/wp-content/uploads/2012/01/landscapeSplash1-300x225.png" alt="" title="landscapeSplash" width="300" height="225" class="aligncenter size-medium wp-image-3742" /></a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2012%2F01%2F20%2Fflex-mobile-development-dynamic-splash-screens%2F&amp;title=Flex%20Mobile%20Development%20%E2%80%93%20Dynamic%20Splash%20Screens" id="wpa2a_12"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/01/20/flex-mobile-development-dynamic-splash-screens/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Apache Flex Update!</title>
		<link>http://devgirl.org/2012/01/19/apache-flex-update/</link>
		<comments>http://devgirl.org/2012/01/19/apache-flex-update/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 15:24:39 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Apache Flex]]></category>
		<category><![CDATA[Flex 4.6]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Apache Flex Status]]></category>
		<category><![CDATA[Flex User Group Tour]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3645</guid>
		<description><![CDATA[It&#8217;s been quite the roller coaster in the Flex world these past few months to say the least! Now seemed like a good time for an update on the latest status of things. Adobe Flex to Apache Flex Adobe Flex is now Apache Flex (in case you&#8217;ve been under a rock lately or perhaps just [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been quite the roller coaster in the Flex world these past few months to say the least! Now seemed like a good time for an update on the latest status of things. </p>
<p><a href="http://devgirl.org/wp-content/uploads/2012/01/Flexicon1.png"><img src="http://devgirl.org/wp-content/uploads/2012/01/Flexicon1.png" alt="" title="Flexicon" width="256" height="256" class="aligncenter size-full wp-image-3711" /></a></p>
<p></a><a href="http://www.apache.org"><img src="http://devgirl.org/wp-content/uploads/2012/01/asf_logo_wide.gif" alt="" title="Apache Software Foundation" width="537" height="51" class="aligncenter size-full wp-image-3662"/></a></p>
<p><strong>Adobe Flex to Apache Flex</strong><br />
Adobe Flex is now <a href="http://incubator.apache.org/flex/">Apache Flex</a> (in case you&#8217;ve been under a rock lately or perhaps just discovered Flex <img src='http://devgirl.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). It&#8217;s been contributed to the Apache community and is in <a href="http://incubator.apache.org/projects/">incubator status</a>. Incubator status is a holding place for a new Apache project and basically a gateway to it becoming a full-fledged project after a release or two. It was great news that it was accepted recently and I have no doubt it will quickly move out of this stage into a full-fledged project. The project has an amazing amount of traction so far, and it&#8217;s awesome to see all the activity! If you want to stay on top of the latest, <a href="http://incubator.apache.org/flex/mailing-lists.html">subscribe to the mailing list here</a>, (note that your inbox will be flooded so you might want to use a separate email to track it, it&#8217;s a high traffic mailing list <img src='http://devgirl.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). There are a bunch of extremely talented, well-known developers behind this project as well, which is huge and makes all the difference, in my opinion. <a href="http://www.spoon.as/">The Open Spoon Foundation</a> is also actively behind this project and if you aren&#8217;t aware of it, definitely make a point of checking it out. I attended the Flex Summit in December and learned a lot about the Apache process from <a href="http://roy.gbiv.com/">Roy Fielding</a> (Apache Co-Founder), with the biggest takeaway being that Apache projects are run as a <a href="http://www.merriam-webster.com/dictionary/meritocracy">meritocracy</a>, so there is equal opportunity amongst all and that contributions of any kind, including code, bug fixes and documentation are <a href="http://incubator.apache.org/flex/get-involved.html">welcome</a>.</p>
<p><strong>The State of Things&#8230;</strong><br />
So the big question everyone has been asking us, should we continue to build apps with Flex? I think the general consensus to be made is yes. There&#8217;s still a viable need for this technology and with the dedication and energy of the community so far I feel very positive about things. As I&#8217;ve stated before and will continue to state, as a developer you shouldn&#8217;t put all of your eggs in any one basket, and should be learning the latest technologies along with continuing your Flex development to ensure your relevance and development diversity, but Flex remains an excellent choice for the right type of application. </p>
<p>Here are some related links you should check out that I found very useful as a meter for what other great developers are thinking and doing:</p>
<p><a href="http://inflagrantedelicto.memoryspiral.com/2012/01/questioning-the-viability-of-flex/">Joseph Labrecque &#8211; Questioning the viability of Flex</a><br />
<a href="https://plus.google.com/109047477151984864676/posts/CVGJKLMMehs">Joao Saleiro &#8211; After 6 years doing Flex, am I moving to HTML5? </a><br />
<a href="http://www.theflexshow.com/blog/index.cfm/2012/1/11/Open-Discussion-w-Joseph-Labrecque-and-Mark-Ehlert-The-Flex-Show-Episode-159">The Flex Show &#8211; Discussing the Future of Flex with Joseph Labrecque and Mark Ehlert</a></p>
<p><strong>Hot Topics&#8230;</strong><br />
One big topic on the mailing list right now centers around a new logo for Apache Flex. The community held a contest (over 50 entries submitted!) and the submissions can be found <a href="http://dl.dropbox.com/u/715349/tmp/flex-logos.html">here</a>. The contest ended yesterday and now the voting process has begun. To vote you will need to start by subscribing to the mailing list. Once subscribed you can cast your votes with a point system defined in the mailing list. There are also some excellent summaries of what&#8217;s going on with the project being posted to this <a href="http://blog.teotigraphix.com/">blog by Michael Schmalle </a> (a current contributor). I would definitely make a point to skim those summaries to get a quick read on the status of things since it can be hard to keep up with the mailing list.  </p>
<p>The following links are also useful to check out for more info:<br />
<a href="http://incubator.apache.org/flex/">The Flex Incubator Project</a><br />
<a href="http://incubator.apache.org/flex/team.html">Contributors</a><br />
<a href="https://issues.apache.org/jira/browse/">JIRA Bug Tracking</a><br />
<a href="http://incubator.apache.org/projects/flex">Flex Incubator Status Page</a><br />
<a href="http://wiki.apache.org/incubator/FlexProposal">The initial proposal from Adobe</a><br />
<a href="http://incubator.apache.org/flex/get-involved.html">Getting Involved</a></p>
<p><strong>This Blog&#8230; </strong><br />
As far as me and my evangelism are concerned, I plan to continue to use Flex and blog about it as I have been. The <a href="http://blogs.adobe.com/flex/2012/01/announcing-flex-user-group-2012-tour-north-america-dates.html">2012 Flex User Group Tour</a> is about to start and my team will be visiting many locations over the next couple of months where we&#8217;ll discuss all the recent activity and announcements and talk about the latest 4.6 release. You can also plan on seeing some posts on other technologies as I&#8217;m exploring them myself. I will make a point of comparing them to Flex as I go along where possible. I&#8217;m also really looking forward to seeing what Adobe has in store this year to help utilize these other technologies like HTML5, JavaScript/jQuery etc and already excited by what I&#8217;ve heard! I will post information on these topics as I&#8217;m allowed <img src='http://devgirl.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2012%2F01%2F19%2Fapache-flex-update%2F&amp;title=Apache%20Flex%20Update%21" id="wpa2a_14"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/01/19/apache-flex-update/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Game of Flex for Tablets Released!</title>
		<link>http://devgirl.org/2011/12/07/game-of-flex-for-tablets-released/</link>
		<comments>http://devgirl.org/2011/12/07/game-of-flex-for-tablets-released/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 19:32:46 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Flex 4.5]]></category>
		<category><![CDATA[Flex 4.5/Mobile]]></category>
		<category><![CDATA[Flex 4.6]]></category>
		<category><![CDATA[Flex Game]]></category>
		<category><![CDATA[Game of Flex]]></category>
		<category><![CDATA[Tour de Mobile Flex]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3615</guid>
		<description><![CDATA[My fellow teammate Michael Chaize recently had an idea for creating a &#8216;game&#8217; to showcase Flex and the latest 4.6 release features with Tour de Mobile Flex being the initial inspiration. I&#8217;m happy to announce that the Game of Flex is now available on both the Apple iTunes and Android Market for your downloading pleasure [...]]]></description>
			<content:encoded><![CDATA[<p>My fellow teammate <a href="http://www.riagora.com/">Michael Chaize</a> recently had an idea for creating a &#8216;game&#8217; to showcase Flex and <a href="http://www.adobe.com/content/dotcom/en/devnet/flex/articles/introducing-flex46sdk.html">the latest 4.6 release</a> features with <a href="http://flex.org/tour-de-mobile-flex/">Tour de Mobile Flex</a> being the initial inspiration. I&#8217;m happy to announce that the <a href="http://flex.org/flexgame/">Game of Flex</a> is now available on both the <a href="http://itunes.apple.com/us/app/game-of-flex/id483389384">Apple iTunes</a> and <a href="https://market.android.com/details?id=air.com.riagora.flexgame&#038;feature=search_result#?t=W251bGwsMSwyLDEsImFpci5jb20ucmlhZ29yYS5mbGV4Z2FtZSJd">Android Market</a> for your downloading pleasure <img src='http://devgirl.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> !</p>
<p>The Game of Flex consists of 16 questions which if answered correctly, will qualify you to win a free copy of <a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash_builder">Flash Builder 4.6</a>! Ultimately though, it&#8217;s a learning tool, where we&#8217;ve included samples and source code for all of the new 4.6 features and other useful mobile features. Click the &#8216;Snippet&#8217; button to get the source code for the sample within the app, and the &#8216;Tutorial&#8217; button to link to tutorials with more details on how to use a certain feature.</p>
<p>Be sure to check out <a href="http://flex.org/flexgame/">Michael&#8217;s post</a> about the game, and visit the official website for it <a href="http://www.riagora.com/2011/12/game-of-flex-on-tablets/">here</a>!</p>
<div align="center"><strong>Sample Question</strong><br />
<a href="http://devgirl.org/wp-content/uploads/2011/12/flexgame-sample1.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/flexgame-sample1.png" alt="" title="flexgame-sample" width="500" height="375" class="aligncenter size-full wp-image-3618" /></a></p>
<p><strong>Sample Code Snippet</strong><br />
<a href="http://devgirl.org/wp-content/uploads/2011/12/flexgame-code.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/flexgame-code.png" alt="" title="flexgame-code" width="500" height="375" class="aligncenter size-full wp-image-3619" /></a>
</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2011%2F12%2F07%2Fgame-of-flex-for-tablets-released%2F&amp;title=Game%20of%20Flex%20for%20Tablets%20Released%21" id="wpa2a_16"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2011/12/07/game-of-flex-for-tablets-released/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Flex Mobile Development &#8211; Adding Maps with the MapQuest AS3/Flash API!</title>
		<link>http://devgirl.org/2011/12/06/flex-mobile-development-adding-maps-with-mapquest-flash-api-w-sample-app/</link>
		<comments>http://devgirl.org/2011/12/06/flex-mobile-development-adding-maps-with-mapquest-flash-api-w-sample-app/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 20:13:17 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Flash Builder 4.6]]></category>
		<category><![CDATA[Flex 4.5]]></category>
		<category><![CDATA[Flex 4.5/Mobile]]></category>
		<category><![CDATA[Flex 4.6]]></category>
		<category><![CDATA[Flex Mobile]]></category>
		<category><![CDATA[Mobile Development]]></category>
		<category><![CDATA[AIR Mobile Maps]]></category>
		<category><![CDATA[Flash Maps API]]></category>
		<category><![CDATA[Flex Maps]]></category>
		<category><![CDATA[Flex Maps API]]></category>
		<category><![CDATA[Flex Mobile Maps]]></category>
		<category><![CDATA[MapQuest]]></category>
		<category><![CDATA[MapQuest AS3 API]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3562</guid>
		<description><![CDATA[A topic that has come up often in my conversations with developers lately is how to easily add mapping components to their their Flex and Flash mobile apps. Now I&#8217;m super excited to share this latest AS3/Flash API for mobile from MapQuest for everyone to check out! The new version contains touch-friendly maps and controls [...]]]></description>
			<content:encoded><![CDATA[<p>A topic that has come up often in my conversations with developers lately is how to easily add mapping components to their their Flex and Flash mobile apps. Now I&#8217;m super excited to share this <a href="http://developer.mapquest.com/web/products/featured/as3-flex-flash-mobile">latest AS3/Flash API for mobile from MapQuest</a> for everyone to check out! The new version contains touch-friendly maps and controls and was streamlined for performance on mobile. </p>
<p>To get started, first check out <a href="http://devgirl.org/files/MapQuestSample/">this sample application</a> I&#8217;ve included the <a href="http://devgirl.org/files/MapQuestSample/MQMobileSample%283%29/">source</a> and <a href="http://devgirl.org/files/MapQuestSample/MQMobileSample.fxp">fxp</a> for that was written by my friend <a href="http://twitter.com/@MapQuestTech">Darin Weakley</a> over at <a href="http://www.mapquest.com/">MapQuest</a>. He&#8217;s done a great job of showcasing the fun cool features available in this app. I&#8217;ve included some screen shots below to give an idea of what it entails:</p>
<div align="center"><strong><br />
<h2>Map Component</h2>
<p></strong></div>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/mqmaps.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/mqmaps.png" alt="" title="mqmaps" width="500" height="710" class="aligncenter size-full wp-image-3564" /></a></p>
<div align="center"><strong><br />
<h2>Search Business</h2>
<p></strong></p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/mqstarbucks0.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/mqstarbucks0.png" alt="" title="Starbucks Search" width="500" height="771" class="aligncenter size-full wp-image-3572" /></a></p>
<p><strong><br />
<h2>Search Results</h2>
<p></strong></p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/mqstarbucks1.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/mqstarbucks1.png" alt="" title="Search Results" width="500" height="771" class="aligncenter size-full wp-image-3573" /></a></p>
<p><strong><br />
<h2>Results on Map</h2>
<p></strong></p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/mqstarbucksmap.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/mqstarbucksmap.png" alt="" title="Search Results on Map" width="500" height="771" class="aligncenter size-full wp-image-3574" /></a></p>
<p><strong><br />
<h2>Result Item Detail</h2>
<p></strong></p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/mqstarbucks2.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/mqstarbucks2.png" alt="" title="Search Detail" width="500" height="771" class="aligncenter size-full wp-image-3575" /></a></p>
<p><strong><br />
<h2>Directions</h2>
<p></strong></p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/mqdirectionstext.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/mqdirectionstext.png" alt="" title="Directions Text" width="500" height="771" class="aligncenter size-full wp-image-3596" /></a><br />
<strong><br />
<h2>Directions by Map</h2>
<p></strong></p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/mqdirectionsmap.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/mqdirectionsmap.png" alt="" title="Directions on Map" width="500" height="771" class="aligncenter size-full wp-image-3594" /></a>
</div>
<p>If you have an Android device, be sure to download the <a href="https://market.android.com/details?id=air.com.mapquestapi.www&#038;feature=search_result">showcase application</a> for free to your device!</p>
<p>To implement this in your own app you will need to <a href="http://developer.mapquest.com/">create yourself an app key and join the developer program</a> here before using the APIs. It&#8217;s fast and easy. Click &#8216;Join Now&#8217;. Also, don&#8217;t forget to include the <a href="http://developer.mapquest.com/content/as3/v7/7.0.7_MQ_MOBILE/downloads/MQFlashMapsAPI_7.0.7_MQ_MOBILE.swc">latest MapQuest Flash API 7.07 mobile swc file</a> in your project (see the sample for reference). <a href=" http://developer.mapquest.com/web/products/featured/as3-flex-flash-mobile">This link</a> also has documentation and other examples on the right side of the page to check out for more info!</p>
<p><strong><br />
<h3>MapQuest Flash Maps API Quick Links</h3>
<p><a href="http://developer.mapquest.com/web/products/featured/as3-flex-flash-mobile">Mobile Flash Maps API</a><br />
<a href="http://developer.mapquest.com/web/products/featured/as3-flex-flash">Web/Desktop Flash Maps API</a><br />
<a href="http://developer.mapquest.com/web/products/open/flash-mobile">OpenStreetMap Mobile Flash Maps API</a> &#8211; more information about <a href="http://www.openstreetmap.org/index.html">OpenStreetMap (OSM)</a><br />
<a href="http://developer.mapquest.com/web/products/open/flash">OpenStreetMap Web/Desktop Flash Maps API</a> </strong></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2011%2F12%2F06%2Fflex-mobile-development-adding-maps-with-mapquest-flash-api-w-sample-app%2F&amp;title=Flex%20Mobile%20Development%20%E2%80%93%20Adding%20Maps%20with%20the%20MapQuest%20AS3%2FFlash%20API%21" id="wpa2a_18"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2011/12/06/flex-mobile-development-adding-maps-with-mapquest-flash-api-w-sample-app/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Flex Mobile Development &#8211; SplitViewNavigator Tutorial (w/ source)</title>
		<link>http://devgirl.org/2011/12/01/flex-mobile-development-splitviewnavigator-tutorial/</link>
		<comments>http://devgirl.org/2011/12/01/flex-mobile-development-splitviewnavigator-tutorial/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 16:09:35 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Flash Builder 4.6]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 4.5]]></category>
		<category><![CDATA[Flex 4.5/Mobile]]></category>
		<category><![CDATA[Flex 4.6]]></category>
		<category><![CDATA[Flex Mobile]]></category>
		<category><![CDATA[Flex Master/Detail View]]></category>
		<category><![CDATA[Flex Split View]]></category>
		<category><![CDATA[Flex SplitViewNavigator]]></category>
		<category><![CDATA[SplitViewNavigator]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3223</guid>
		<description><![CDATA[The SplitViewNavigator is another new Flex 4.6 component targeted for tablet development that can be used when you want to create a master view / detail view in your application, where the master view typically serves as a source of navigation and the detail view displays the results of the action taken on the master [...]]]></description>
			<content:encoded><![CDATA[<p>The <strong>SplitViewNavigator</strong> is another new Flex 4.6 component targeted for tablet development that can be used when you want to create a master view / detail view in your application, where the master view typically serves as a source of navigation and the detail view displays the results of the action taken on the master view. The master view is typically the left or top of the screen, and the detail view is typically the right side or bottom part of the screen depending on layout. If you&#8217;re not familiar with this screen pattern, see <a href="http://designingwebinterfaces.com/designing-web-interfaces-12-screen-patterns">this link</a> for more detail. A great example of this is your typical mail application, for instance on one of my iPad email accounts:</p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/svn01.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/svn01.png" alt="" title="svn0" width="500" height="375" class="aligncenter size-full wp-image-3522" /></a></p>
<p>Now we can build applications with this type of layout simply using built-in Flex 4.6 features! The <strong>SplitViewNavigator</strong> extends<strong> ViewNavigatorBase</strong>, so it does not reside at the root level of the application but rather at the child level similar to <strong>ViewNavigator</strong>. Note that this component can only be used in a blank <strong>Application</strong> or within a <strong>TabbedViewNavigatorApplication</strong>. Here&#8217;s an example:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
			   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot; applicationDPI=&quot;160&quot;&gt;

	&lt;s:SplitViewNavigator id=&quot;svn&quot; width=&quot;100%&quot; height=&quot;100%&quot;&gt;
		&lt;s:ViewNavigator id=&quot;leftNav&quot; width=&quot;30%&quot; height=&quot;100%&quot; firstView=&quot;views.LeftView&quot;/&gt;
		&lt;s:ViewNavigator id=&quot;rightNav&quot; width=&quot;100%&quot; height=&quot;100%&quot; firstView=&quot;views.RightView&quot;/&gt;
	&lt;/s:SplitViewNavigator&gt;
&lt;/s:Application&gt;
</pre>
<p>In this case my left view and right view are simple <strong>View</strong> classes showing a list of cities to click on and some dummy data about that particular city in the detail. I&#8217;ve included the code below for reference:</p>
<p><strong>LeftView.mxml</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:View xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
		xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot; title=&quot;Left View&quot;&gt;

	&lt;fx:Script&gt;
		&lt;![CDATA[
			protected function list_clickHandler(event:MouseEvent):void
			{
				(this.parentDocument as Sample).rightNav.activeView.data=list.selectedItem;
			}
		]]&gt;
	&lt;/fx:Script&gt;

	&lt;s:List id=&quot;list&quot; width=&quot;100%&quot; height=&quot;100%&quot; click=&quot;list_clickHandler(event)&quot;&gt;
		&lt;s:dataProvider&gt;
			&lt;s:ArrayCollection&gt;
				&lt;fx:String&gt;Atlanta, GA&lt;/fx:String&gt;
				&lt;fx:String&gt;Baltimore, MD&lt;/fx:String&gt;
				&lt;fx:String&gt;Boston, MA&lt;/fx:String&gt;
				&lt;fx:String&gt;Chicago, IL&lt;/fx:String&gt;
				&lt;fx:String&gt;Dallas, TX&lt;/fx:String&gt;
				&lt;fx:String&gt;Detroit, MI&lt;/fx:String&gt;
				&lt;fx:String&gt;Honolulu, HI&lt;/fx:String&gt;
				&lt;fx:String&gt;Los Angeles, CA&lt;/fx:String&gt;
				&lt;fx:String&gt;Minneapolis, MA&lt;/fx:String&gt;
				&lt;fx:String&gt;New Orleans, LA&lt;/fx:String&gt;
				&lt;fx:String&gt;New York, NY&lt;/fx:String&gt;
				&lt;fx:String&gt;Richmond, VA&lt;/fx:String&gt;
				&lt;fx:String&gt;San Francisco, CA&lt;/fx:String&gt;
				&lt;fx:String&gt;San Jose, CA&lt;/fx:String&gt;
				&lt;fx:String&gt;St. Louis, MO&lt;/fx:String&gt;
				&lt;fx:String&gt;Washington, DC&lt;/fx:String&gt;
			&lt;/s:ArrayCollection&gt;
		&lt;/s:dataProvider&gt;
	&lt;/s:List&gt;
&lt;/s:View&gt;
</pre>
<p><strong>RightView.mxml</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:View xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot; xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot; title=&quot;Detail View&quot;&gt;
	&lt;s:layout&gt;
		&lt;s:VerticalLayout paddingTop=&quot;15&quot; paddingBottom=&quot;15&quot; paddingLeft=&quot;15&quot; paddingRight=&quot;15&quot; gap=&quot;5&quot;
						  horizontalAlign=&quot;center&quot; verticalAlign=&quot;top&quot;/&gt;
	&lt;/s:layout&gt;
	&lt;s:Label text=&quot;Click on a location on the left to explore!&quot; visible=&quot;{data==null?true:false}&quot;/&gt;
	&lt;s:Label text=&quot;Information about {this.data}&quot; visible=&quot;{data!=null?true:false}&quot;/&gt;

	&lt;s:TextArea text=&quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur accumsan felis ac tortor aliquam iaculis. Phasellus hendrerit viverra enim, sit amet scelerisque lectus dictum at. Aenean sodales nisi sed leo congue et porttitor ligula vehicula.
Pellentesque turpis massa, suscipit vel fermentum quis, dignissim sed ipsum. Nulla aliquet libero adipiscing risus lobortis eleifend quis at velit. Duis at leo urna.
Praesent facilisis faucibus neque, ut ullamcorper lacus gravida a. Donec vel iaculis sapien.&quot;  width=&quot;90%&quot; editable=&quot;false&quot; visible=&quot;{data!=null?true:false}&quot;/&gt;
&lt;/s:View&gt;
</pre>
<p>The resulting application:</p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/svnLand.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/svnLand.png" alt="" title="svnLand" width="500" height="385" class="aligncenter size-full wp-image-3531" /></a></p>
<p>You could also set a layout on the <strong>SplitViewNavigator</strong> container so if you wanted it to split vertically for instance, you would simply set a <strong>VerticalLayout</strong>, and adjust the height percentages with the width set to 100%, such as:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;s:SplitViewNavigator id=&quot;svn&quot; width=&quot;100%&quot; height=&quot;100%&quot;&gt;
	&lt;s:layout&gt;
	     &lt;s:VerticalLayout/&gt;
	&lt;/s:layout&gt;
	&lt;s:ViewNavigator id=&quot;leftNav&quot; width=&quot;100%&quot; height=&quot;30%&quot; firstView=&quot;views.LeftView&quot;/&gt;
	&lt;s:ViewNavigator id=&quot;rightNav&quot; width=&quot;100%&quot; height=&quot;70%&quot; firstView=&quot;views.RightView&quot;/&gt;
&lt;/s:SplitViewNavigator&gt;
</pre>
<p>Here&#8217;s the updated layout:</p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/svnVert.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/svnVert.png" alt="" title="svnVert" width="500" height="385" class="aligncenter size-full wp-image-3539" /></a></p>
<p>This split view approach works well for landscape mode, however, in portrait mode you may want to display it a little differently since the screen width is much less to work with. There are some built-in features to help you do this. There&#8217;s an <em>autoHideFirstViewNavigator</em> property on the <strong>SplitViewNavigator</strong> that will automatically hide the left side view when the application receives an orientation change event to portrait. </p>
<pre class="brush: xml; title: ; notranslate">
&lt;s:SplitViewNavigator id=&quot;svn&quot; width=&quot;100%&quot; height=&quot;100%&quot; autoHideFirstViewNavigator=&quot;true&quot;&gt;
	&lt;s:ViewNavigator id=&quot;leftNav&quot; width=&quot;30%&quot; height=&quot;100%&quot; firstView=&quot;views.LeftView&quot;/&gt;
	&lt;s:ViewNavigator id=&quot;rightNav&quot; width=&quot;100%&quot; height=&quot;100%&quot; firstView=&quot;views.RightView&quot;/&gt;
&lt;/s:SplitViewNavigator&gt;
</pre>
<p>Now when we run it, we will see the following:<br />
<a href="http://devgirl.org/wp-content/uploads/2011/12/svnAuto.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/svnAuto.png" alt="" title="svnAuto" width="500" height="619" class="aligncenter size-full wp-image-3533" /></a></p>
<p>Not very useful yet though since there&#8217;s no way to navigate to a different item in our list! So we need to take this one step further and use the <strong>showViewNavigatorInPopUp</strong> function from the <strong>SplitViewNavigator</strong> to pop up our list in a <strong>Callout</strong> while in portrait mode. We can call this function from a button in the right ViewNavigator&#8217;s actionBar <em>navigationContent</em> for instance such as the following:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;s:SplitViewNavigator id=&quot;svn&quot; width=&quot;100%&quot; height=&quot;100%&quot; autoHideFirstViewNavigator=&quot;true&quot;&gt;
		&lt;s:ViewNavigator id=&quot;leftNav&quot; width=&quot;30%&quot; height=&quot;100%&quot; firstView=&quot;views.LeftView&quot;/&gt;
		&lt;s:ViewNavigator id=&quot;rightNav&quot; width=&quot;100%&quot; height=&quot;100%&quot; firstView=&quot;views.RightView&quot; &gt;
			&lt;s:navigationContent&gt;
				&lt;s:Button id=&quot;listButton&quot; label=&quot;List&quot; click=&quot;svn.showFirstViewNavigatorInPopUp(listButton)&quot;/&gt;
			&lt;/s:navigationContent&gt;
		&lt;/s:ViewNavigator&gt;
&lt;/s:SplitViewNavigator&gt;
</pre>
<p>Note: Just to clarify, in the above we are using the actionBar already implicitly defined as part of the Spark ViewNavigator container and setting the parent for the popup to the listButton, so the Callout or popup arrow will stem from that button. Here&#8217;s what the above code will look like when run in portrait mode:</p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/svnPortrait.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/svnPortrait.png" alt="" title="svnPortrait" width="500" height="619" class="aligncenter size-full wp-image-3532" /></a></p>
<p>At this point, we probably don&#8217;t want this button to show though when going back into landscape mode, so we&#8217;ll need to add states management to set visible to false when in landscape. One way to determine when to update the state would be to add a resize event handler and check the width and height and update the state accordingly. Our code now looks like the following:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
			   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot; applicationDPI=&quot;160&quot; resize=&quot;application1_resizeHandler(event)&quot;&gt;
	&lt;fx:Script&gt;
		&lt;![CDATA[
			import mx.events.ResizeEvent;

			protected function application1_resizeHandler(event:ResizeEvent):void
			{
				if (width&gt;height)
					this.currentState=&quot;landscape&quot;;
				else this.currentState=&quot;portrait&quot;;
			}
		]]&gt;
	&lt;/fx:Script&gt;

	&lt;s:states&gt;
		&lt;s:State name=&quot;portrait&quot;/&gt;
		&lt;s:State name=&quot;landscape&quot;/&gt;
	&lt;/s:states&gt;

	&lt;s:SplitViewNavigator id=&quot;svn&quot; width=&quot;100%&quot; height=&quot;100%&quot; autoHideFirstViewNavigator=&quot;true&quot;&gt;
		&lt;s:ViewNavigator id=&quot;leftNav&quot; width=&quot;30%&quot; height=&quot;100%&quot; firstView=&quot;views.LeftView&quot;/&gt;
		&lt;s:ViewNavigator id=&quot;rightNav&quot; width=&quot;100%&quot; height=&quot;100%&quot; firstView=&quot;views.RightView&quot; &gt;
			&lt;s:navigationContent&gt;
				&lt;s:Button id=&quot;listButton&quot; label=&quot;List&quot; click=&quot;svn.showFirstViewNavigatorInPopUp(listButton)&quot; visible.landscape=&quot;false&quot;/&gt;
			&lt;/s:navigationContent&gt;
		&lt;/s:ViewNavigator&gt;
	&lt;/s:SplitViewNavigator&gt;
&lt;/s:Application&gt;
</pre>
<p>Now when we run the application in landscape mode, we can see the List button is not showing in the actionBar:</p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/svnLand.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/svnLand.png" alt="" title="svnLand" width="500" height="385" class="aligncenter size-full wp-image-3531" /></a></p>
<p>You can download the source and project file for this sample application <strong><a href="http://devgirl.org/files/SplitViewNavigatorSample/">here</a></strong>!</p>
<p>Also, if you haven&#8217;t looked at this yet, <a href="http://coenraets.org">Christophe</a> and I created an extensive SplitViewNavigator-based expense tracking tablet application called <strong><em>XpenseIt</em></strong> that includes a bunch of other Flex 4.6 features as well and can be downloaded <a href="http://devgirl.org/files/RIAUnleashed/">here</a>. Here is a screenshot from that application:</p>
<p><a href="http://devgirl.org/wp-content/uploads/2011/12/svn2.png"><img src="http://devgirl.org/wp-content/uploads/2011/12/svn2.png" alt="" title="XpenseIt" width="500" height="385" class="aligncenter size-full wp-image-3503" /></a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdevgirl.org%2F2011%2F12%2F01%2Fflex-mobile-development-splitviewnavigator-tutorial%2F&amp;title=Flex%20Mobile%20Development%20%E2%80%93%20SplitViewNavigator%20Tutorial%20%28w%2F%20source%29" id="wpa2a_20"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2011/12/01/flex-mobile-development-splitviewnavigator-tutorial/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
	</channel>
</rss>

