<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://www.planetandroid.com/">
	<title>Planet Android</title>
	<link>http://www.planetandroid.com/</link>
	<description>Planet Android - http://www.planetandroid.com/</description>

	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="http://android-apps.com/?p=743101" />
			<rdf:li rdf:resource="http://www.xda-developers.com/?p=77364" />
			<rdf:li rdf:resource="http://android-apps.com/?p=743097" />
			<rdf:li rdf:resource="http://www.droidgamers.com/index.php/game-news/android-game-news/6248-like-the-where-s-my-series-from-disney-mickey-will-be-joining-the-crew-shortly" />
			<rdf:li rdf:resource="urn:androidpit:news:article:6b6675a0b43b2a09eebef6958e05e9d9" />
			<rdf:li rdf:resource="http://www.droidgamers.com/index.php/game-news/android-game-news/6247-phosphor-games-drops-the-price-of-world-war-z-down-to-0-99-for-a-limited-time" />
			<rdf:li rdf:resource="urn:androidpit:news:article:1c323ef0deab54bdc08cff0b188c91de" />
			<rdf:li rdf:resource="http://www.landofdroid.com/?p=36901" />
			<rdf:li rdf:resource="http://www.xda-developers.com/?p=77398" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-1053097753363465843.post-5887775792278890766" />
			<rdf:li rdf:resource="http://Android-Games.com/?p=7982" />
			<rdf:li rdf:resource="http://www.landofdroid.com/?p=36896" />
			<rdf:li rdf:resource="http://www.coderzheaven.com/?p=5532" />
			<rdf:li rdf:resource="http://www.mutualmobile.com/?p=7016" />
			<rdf:li rdf:resource="http://commonsware.com/blog/2013/06/17/calling-more-android-developer-support-sites" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-5065195004001204478.post-7995498036033680833" />
			<rdf:li rdf:resource="http://galaxytabreview.com/?p=192" />
			<rdf:li rdf:resource="http://www.mutualmobile.com/?p=7006" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-6843566830671277353.post-3564222324199795614" />
			<rdf:li rdf:resource="http://Android-Games.com/?p=7974" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-1053097753363465843.post-8007400118839501769" />
			<rdf:li rdf:resource="http://www.coderzheaven.com/?p=5521" />
			<rdf:li rdf:resource="http://mobilemoo.com/?p=28839" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-5065195004001204478.post-1517248019187802401" />
			<rdf:li rdf:resource="http://commonsware.com/blog/2013/06/10/busy-coders-guide-android-development-4p9-released" />
			<rdf:li rdf:resource="http://eurodroid.com/?p=8706" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-6843566830671277353.post-303007291884925752" />
			<rdf:li rdf:resource="http://mobilemoo.com/?p=28835" />
			<rdf:li rdf:resource="http://slideme.org/3421536 at http://slideme.org" />
			<rdf:li rdf:resource="http://www.helloandroid.com/685146 at http://www.helloandroid.com" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-6755709643044947179.post-4924070098614596384" />
			<rdf:li rdf:resource="http://www.helloandroid.com/685136 at http://www.helloandroid.com" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-6755709643044947179.post-7517804471679522815" />
			<rdf:li rdf:resource="http://sosiouxme.wordpress.com/?p=361" />
			<rdf:li rdf:resource="http://sosiouxme.wordpress.com/?p=353" />
			<rdf:li rdf:resource="http://marakana.com/s/post/1474/android_enterprise_security_at_andevcon" />
			<rdf:li rdf:resource="http://marakana.com/s/post/1473/android_security_underpinnings_at_andevcon" />
			<rdf:li rdf:resource="http://www.curious-creature.org/?p=1796" />
			<rdf:li rdf:resource="http://www.curious-creature.org/?p=1685" />
			<rdf:li rdf:resource="http://eurodroid.com/?p=8627" />
			<rdf:li rdf:resource="http://cyrilmottier.com/2013/05/24/pushing-the-actionbar-to-the-next-level" />
			<rdf:li rdf:resource="http://cyrilmottier.com/2013/05/02/enhancing-google-maps-api-v2-with-polaris-v2" />
			<rdf:li rdf:resource="tag:chris.boyle.name,2005:Post/5" />
			<rdf:li rdf:resource="tag:chris.boyle.name,2005:Post/4" />
			<rdf:li rdf:resource="http://www.thepowerbase.com/?p=6818" />
			<rdf:li rdf:resource="http://www.thepowerbase.com/?p=6776" />
			<rdf:li rdf:resource="http://www.gushikustudios.com/45 at http://www.gushikustudios.com" />
			<rdf:li rdf:resource="http://www.gushikustudios.com/44 at http://www.gushikustudios.com" />
			<rdf:li rdf:resource="http://droiddevelop.tumblr.com/post/18130546943" />
			<rdf:li rdf:resource="http://droiddevelop.tumblr.com/post/18129487586" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-9132631689994782545.post-7319296623181559758" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-9132631689994782545.post-6401137781080424431" />
			<rdf:li rdf:resource="http://snctln.com/?p=287" />
			<rdf:li rdf:resource="http://snctln.com/?p=247" />
			<rdf:li rdf:resource="http://www.roosmaa.net/?p=71" />
			<rdf:li rdf:resource="http://www.roosmaa.net/?p=297" />
			<rdf:li rdf:resource="http://notionink.wordpress.com/?p=1263" />
			<rdf:li rdf:resource="http://notionink.wordpress.com/?p=1258" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-2132734556151395676.post-5774366065025740185" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-2132734556151395676.post-4340131944623343639" />
			<rdf:li rdf:resource="http://androiddevblog.wordpress.com/?p=72" />
			<rdf:li rdf:resource="http://androiddevblog.wordpress.com/?p=7" />
			<rdf:li rdf:resource="http://android.opensourceror.org/?p=8" />
			<rdf:li rdf:resource="http://android.opensourceror.org/?p=60" />
			<rdf:li rdf:resource="http://boltingupandroid.wordpress.com/?p=91" />
			<rdf:li rdf:resource="http://boltingupandroid.wordpress.com/?p=85" />
			<rdf:li rdf:resource="http://eclipsesource.com/blogs/?p=16023" />
			<rdf:li rdf:resource="http://galaxytabreview.com/?p=188" />
			<rdf:li rdf:resource="http://blahti.wordpress.com/?p=1783" />
			<rdf:li rdf:resource="http://slideme.org/2955458 at http://slideme.org" />
			<rdf:li rdf:resource="http://eclipsesource.com/blogs/?p=15607" />
			<rdf:li rdf:resource="http://blahti.wordpress.com/?p=1781" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-8214401912480503366.post-1091713066062903822" />
			<rdf:li rdf:resource="http://www.vogella.com/blog/?p=5716" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-8214401912480503366.post-216015783918009120" />
			<rdf:li rdf:resource="http://www.vogella.com/blog/?p=5712" />
			<rdf:li rdf:resource="http://www.zdnet.com/blog/burnette/7000011388" />
			<rdf:li rdf:resource="http://www.zdnet.com/blog/burnette/7000011064" />
			<rdf:li rdf:resource="http://www.androidsx.com/?p=774" />
			<rdf:li rdf:resource="http://www.androidsx.com/?p=737" />
			<rdf:li rdf:resource="http://android.bytearrays.com/android/difference-between-android-2-3-3-and-android-2-3-4/" />
			<rdf:li rdf:resource="http://android.bytearrays.com/android/htc-sense-3-5-is-coming-to-htc-desire/" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="http://android-apps.com/?p=743101">
	<title>Android Apps: Say Hello to My Little Friend : Huawei Ascend P6 Goes Live</title>
	<link>http://android-apps.com/articles/say-hello-to-my-little-friend-huawei-ascend-p6-goes-live/</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;http://media1.android-apps.com/wp-content/uploads/2013/06/Huawei-Ascend-P62.jpg&quot; alt=&quot;Huawei Ascend P6&quot; height=&quot;350&quot; class=&quot;attachment-post-thumbnail wp-post-image&quot; width=&quot;700&quot; /&gt;&lt;/p&gt;Well, the Huawei Ascend P6 is not so little after all, don't be fooled by the title, it's actually a high end device from a company whose name I stopped trying to pronounce some years ago.</content:encoded>
	<dc:date>2013-06-18T23:38:12+00:00</dc:date>
	<dc:creator>Chris</dc:creator>
</item>
<item rdf:about="http://www.xda-developers.com/?p=77364">
	<title>XDA Developers: Forum Added for the Samsung Galaxy Mega</title>
	<link>http://feedproxy.google.com/~r/xda-developers/ShsH/~3/897BuEEoM0w/</link>
	<content:encoded>&lt;img src=&quot;http://www.xda-developers.com/wp-content/uploads/2013/06/megatitle-150x150.jpg&quot; style=&quot;float: left; margin: 0 15px 15px 0;&quot; height=&quot;150&quot; width=&quot;150&quot; alt=&quot;megatitle&quot; class=&quot;attachment-thumbnail wp-post-image&quot; /&gt;&lt;p&gt;What do you do when the Galaxy Note line is simply not big enough? You get the &lt;a href=&quot;http://forum.xda-developers.com/forumdisplay.php?f=2351&quot;&gt;Samsung Galaxy Mega&lt;/a&gt;. And what have we done for those who have found themselves in such a spot? We’ve given them a forum, of course.&lt;/p&gt;
&lt;p&gt;To say that the Samsung Galaxy Mega is a large device is no understatement. Samsung’s large slate-style phone has a screen measuring in at a whopping 6.3 inches. The device has a 1280×720 resolution, yielding 233 ppi. The device is powered by a 1.7 GHz dual-core Qualcomm Snapdragon 400 SoC featuring the Krait processor and Adreno 305 graphics. It also features 1.5 GB of RAM and either 8 or 16 GB of storage. The Samsung Galaxy Mega comes preloaded with Android 4.2.2 Jelly Bean and is encased in a plastic enclosure measuring a mere 8 mm thin and weighing just 199 grams.&lt;/p&gt;
&lt;p&gt;Is this your next device? What do you think about its screen size? Let us know in the comments below. And if you’re itching to learn more about the device, be sure to head over to the &lt;a href=&quot;http://forum.xda-developers.com/forumdisplay.php?f=2351&quot;&gt;newly created forum&lt;/a&gt; to get started.&lt;/p&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/xda-developers/ShsH/~4/897BuEEoM0w&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-18T23:00:18+00:00</dc:date>
	<dc:creator>Will Verduzco</dc:creator>
</item>
<item rdf:about="http://android-apps.com/?p=743097">
	<title>Android Apps: Samsung To Launch First Tizen Smartphone Based on Exynos 4</title>
	<link>http://android-apps.com/articles/samsung-to-launch-first-tizen-smartphone-based-on-exynos-4/</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;http://media1.android-apps.com/wp-content/uploads/2013/06/Tizen.jpg&quot; alt=&quot;Tizen&quot; height=&quot;350&quot; class=&quot;attachment-post-thumbnail wp-post-image&quot; width=&quot;700&quot; /&gt;&lt;/p&gt;Tizen is Samsung's own mobile operating system, in case you never heard of it, it's not a weird Asian dish or anything.</content:encoded>
	<dc:date>2013-06-18T23:00:01+00:00</dc:date>
	<dc:creator>Chris</dc:creator>
</item>
<item rdf:about="http://www.droidgamers.com/index.php/game-news/android-game-news/6248-like-the-where-s-my-series-from-disney-mickey-will-be-joining-the-crew-shortly">
	<title>DroidGamers: Like the Where's My series from Disney? Mickey will be joining the crew shortly</title>
	<link>http://feedproxy.google.com/~r/droidgamers/~3/r9NShWbpw2c/6248-like-the-where-s-my-series-from-disney-mickey-will-be-joining-the-crew-shortly</link>
	<content:encoded>&lt;img src=&quot;http://www.droidgamers.com/images/stories/news/wheresmickey/wheres-my-mickey-android-game.jpg&quot; align=&quot;left&quot; style=&quot;margin-bottom: 10px; margin-right: 10px;&quot; /&gt;&lt;p&gt;Disney's &lt;em&gt;Where's My&lt;/em&gt; franchise has a new installment heading its way any day now. Currently there is &lt;em&gt;Where's My Water?&lt;/em&gt; and &lt;em&gt;Where's My Perry?&lt;/em&gt; and shortly we will have &lt;em&gt;Where's My Mickey?&lt;/em&gt; being added to that list. As you are probably guessing, this particular addition to the franchise is based off of the Disney Television Animation's Mickey Mouse Cartoon Shorts.&lt;/p&gt;
&lt;img src=&quot;http://www.droidgamers.com/images/stories/news/wheresmickey/wheres-my-mickey-android-game.jpg&quot; align=&quot;left&quot; style=&quot;margin-bottom: 10px; margin-right: 10px;&quot; /&gt;
&lt;p&gt;This new installment into the series will feature 100 levels spanning across five different episodes for you to work your way through. Along with all the new levels there also happens to be new game mechanics as well that pertains to the weather in the game. You'll have to use wind, clouds and rain to get through some of the levels.&lt;/p&gt;
&lt;div class=&quot;video-player&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Other Where's My Mickey? Features include:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;• A Whole New Look -- A classic Mickey art-style with a contemporary touch, inspired by Disney Channel's new series of Mickey shorts&lt;br /&gt;• Collectibles and Bonus Levels -- Help Pluto look for hidden collectibles to unlock more bonus puzzles&lt;br /&gt;• Featuring Mickey and Friends -- Discover more hilarious episodes and new friends, beginning with Goofy&lt;/p&gt;
&lt;p&gt;When the game launches it will be available for download for free where you'll be able to try out six of the Goofy levels. After that if you want to continue on with the game you'll need to unlock the full version through a one-time IAP. While the video trailer says the game is available now, it hasn't appeared just yet. Some other sites are reporting that it'll arrive for iOS on the 20th of this month so we should see it sometime between now and June 20th, 2013 on Google Play and Amazon's Appstore.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Website Referenced:&lt;/strong&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=vBi0TnBIZuw&amp;amp;feature=player_embedded&quot; target=&quot;_blank&quot;&gt;Disney's YouTube&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/droidgamers/~4/r9NShWbpw2c&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-18T19:35:40+00:00</dc:date>
	<dc:creator>AndrewH</dc:creator>
</item>
<item rdf:about="urn:androidpit:news:article:6b6675a0b43b2a09eebef6958e05e9d9">
	<title>AndroidPIT: HTC Desire 200 is here: Lower end device with high aspirations</title>
	<link>http://www.androidpit.com/htc-desire-200-is-here-lower-end-device-with-high-aspirations</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.androidpit.com/topic/htc&quot; target=&quot;_top&quot;&gt;HTC&lt;/a&gt; has thrown another competitor into the ring of the low-to-midrange smartphone market with their &lt;strong&gt;HTC Desire 200&lt;/strong&gt;, an entry-level device with a 3.5-inch screen. While not everybody is looking for the latest or the greatest (….or just don’t want to drop several hundred dollars for a top of the line phone), there’s still quite a market for something like this. &lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;http://fs01.androidpit.info/userfiles/4471351/image/Comparison/desire200.png&quot; alt=&quot;desire200&quot; /&gt;The brand new HTC Desire 200. / © htc.com&lt;/figure&gt;&lt;p&gt;&lt;i&gt;(This is a preview - click &lt;a href=&quot;http://www.androidpit.com/htc-desire-200-is-here-lower-end-device-with-high-aspirations&quot;&gt;here&lt;/a&gt; to read the entire entry.)&lt;/i&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-18T19:26:05+00:00</dc:date>
	<dc:creator>Sterling Keys</dc:creator>
</item>
<item rdf:about="http://www.droidgamers.com/index.php/game-news/android-game-news/6247-phosphor-games-drops-the-price-of-world-war-z-down-to-0-99-for-a-limited-time">
	<title>DroidGamers: Phosphor Games drops the price of World War Z down to $0.99 for a limited time</title>
	<link>http://feedproxy.google.com/~r/droidgamers/~3/YMPbUomLGNw/6247-phosphor-games-drops-the-price-of-world-war-z-down-to-0-99-for-a-limited-time</link>
	<content:encoded>&lt;img src=&quot;http://www.droidgamers.com/images/stories/news/worldwarz/world-war-z-android-game.jpg&quot; align=&quot;left&quot; style=&quot;margin-bottom: 10px; margin-right: 10px;&quot; /&gt;&lt;p&gt;Phosphor Games and Paramount Digital Entertainment have decided to temporarily drop the price of their newest zombie survival movie spin-off game World War Z. What was once $4.99 is now a mere $0.99 for a limited time. So why the sudden sale right after Father's Day?&lt;/p&gt;
&lt;img src=&quot;http://www.droidgamers.com/images/stories/news/worldwarz/world-war-z-android-game.jpg&quot; align=&quot;left&quot; style=&quot;margin-bottom: 10px; margin-right: 10px;&quot; /&gt;
&lt;p&gt;Our guess is that since the game has suffered from some bugs, bad performance and just generally angry reviews from people who purchased the game right away, they decided to drop the price of the game in order to help get more people to purchase it. Apparently the game received an update today when it went on sale but no changelog was posted. This means it was probably just a bunch of bug fixes.&lt;/p&gt;
&lt;p&gt;Some people seem to be able to play the game just fine though and the update probably helped with that. If you've been wanting to pick the game up, now would be the time to do it and save yourself four bucks in the process.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google Play Link:&lt;/strong&gt; &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.Phosphor.WWZ&quot; target=&quot;_blank&quot;&gt;World War Z&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/droidgamers/~4/YMPbUomLGNw&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-18T19:15:14+00:00</dc:date>
	<dc:creator>AndrewH</dc:creator>
</item>
<item rdf:about="urn:androidpit:news:article:1c323ef0deab54bdc08cff0b188c91de">
	<title>AndroidPIT: Sony Xperia Z gets the Yankee Treatment</title>
	<link>http://www.androidpit.com/sony-xperia-z-gets-the-yankee-treatment</link>
	<content:encoded>&lt;p&gt;Well, after being able to only read about the &lt;a href=&quot;http://www.androidpit.com/topic/sony-xperia-z&quot; target=&quot;_top&quot;&gt;Sony Xperia Z&lt;/a&gt; for some time, it looks like it Sony’s new flagship device will be hitting the North American content in the coming weeks. T-Mobile has confirmed that it will be the carrier of choice in the United States for the Xperia Z. &lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;http://fs02.androidpit.info/userfiles/4155894/image/xperia-Z.JPG&quot; alt=&quot;xperia Z&quot; /&gt;Welcome to the U S of A, Xperia Z. / © AndroidPIT&lt;/figure&gt;&lt;p&gt;&lt;i&gt;(This is a preview - click &lt;a href=&quot;http://www.androidpit.com/sony-xperia-z-gets-the-yankee-treatment&quot;&gt;here&lt;/a&gt; to read the entire entry.)&lt;/i&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-18T18:46:35+00:00</dc:date>
	<dc:creator>Sterling Keys</dc:creator>
</item>
<item rdf:about="http://www.landofdroid.com/?p=36901">
	<title>LandOfDroid: My Little OPPO Rant</title>
	<link>http://www.landofdroid.com/2013/my-little-oppo-rant/</link>
	<content:encoded>&lt;p style=&quot;text-align: left;&quot;&gt;You know I like OPPO, I like the way they seem to just listen but sometimes I think they just get ahead of themselves by doing whatever people want:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://i2.wp.com/www.landofdroid.com/wp-content/uploads/2013/06/1003884_270832913057086_289614379_n.png?resize=506%2C242&quot; alt=&quot;1003884_270832913057086_289614379_n&quot; class=&quot;aligncenter  wp-image-36902&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Take this image posted on their Facebook page as an example. It leads to a discussion forum where fans of the device suggest to the company that they should do a Google Edition.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Now, a lot would need to happen for this to become real. You can’t just stick Android 4.2 on a device without customisation and suddenly start calling it a Google Edition, if that were the case then all of the no branded tablets and handsets would also be “Google Edition”.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;There’s a reason HTC, Samsung and Sony (Motorola too perhaps) have created a device which can run a Google Edition, it’s because they’ve put in work to speak to Google and arrange for it all to happen as well as having their software and hardware teams work with Google to get the device talking to the right OTA servers etc…&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;OPPO, if you want to play with the big boys, start acting like a big boy and stop being bullied by your friends (consumers) into giving them everything they want, especially when it’s not something you can deliver “just like that”.&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-18T18:33:09+00:00</dc:date>
	<dc:creator>John McKenzie</dc:creator>
</item>
<item rdf:about="http://www.xda-developers.com/?p=77398">
	<title>XDA Developers: Voice Control Your Phone with Tasker and AutoVoice – XDA Developer TV</title>
	<link>http://feedproxy.google.com/~r/xda-developers/ShsH/~3/91f3jCb3k0g/</link>
	<content:encoded>&lt;img src=&quot;http://www.xda-developers.com/wp-content/uploads/2013/06/autovoice-150x150.jpg&quot; style=&quot;float: left; margin: 0 15px 15px 0;&quot; height=&quot;150&quot; width=&quot;150&quot; alt=&quot;autovoice&quot; class=&quot;attachment-thumbnail wp-post-image&quot; /&gt;&lt;p&gt;XDA Developer TV Producer Kevin set up his phone to respond to his voice. He does so with &lt;a href=&quot;https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&amp;amp;feature=search_result&quot; target=&quot;_blank&quot; title=&quot;Tasker&quot;&gt;Tasker&lt;/a&gt; and some other programs like &lt;a href=&quot;https://play.google.com/store/apps/details?id=de.bulling.smstalk&amp;amp;feature=search_result#?t=W251bGwsMSwyLDEsImRlLmJ1bGxpbmcuc21zdGFsayJd&quot; target=&quot;_blank&quot; title=&quot;SMS Talk&quot;&gt;SMS, my Car and Me&lt;/a&gt;, &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.joaomgcd.autovoice&amp;amp;feature=search_result&quot; target=&quot;_blank&quot; title=&quot;AutoVoice&quot;&gt;AutoVoice&lt;/a&gt;, &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.intangibleobject.securesettings.plugin&amp;amp;feature=search_result&quot; target=&quot;_blank&quot; title=&quot;Secure Settings&quot;&gt;Secure Settings&lt;/a&gt;, and &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.plexnor.gravityscreenofffree&amp;amp;feature=search_result&quot; target=&quot;_blank&quot; title=&quot;Gravity Screen Off&quot;&gt;Gravity Screen Off&lt;/a&gt;. Earlier, Kevin showed us &lt;a href=&quot;http://www.xda-developers.com/android/advanced-use-of-tasker-make-your-phone-work-for-you-xda-developer-tv/&quot;&gt;advanced Uses&lt;/a&gt;, &lt;a href=&quot;http://www.xda-developers.com/android/intermediate-use-of-tasker-location-based-triggers-xda-developer-tv/&quot; target=&quot;_blank&quot; title=&quot;Intermediate Use of Tasker: Location Based Triggers – XDA Developer TV&quot;&gt;intermediate uses &lt;/a&gt;, and &lt;a href=&quot;http://www.xda-developers.com/android/basics-of-tasker-automate-your-phone-tasks-xda-developer-tv/&quot; target=&quot;_blank&quot; title=&quot;Basics of Tasker: Automate Your Phone Tasks – XDA Developer TV&quot;&gt;basic uses of Tasker&lt;/a&gt;. Then, Kevin showed you an alternative to Tasker called &lt;a href=&quot;http://www.xda-developers.com/android/tasker-alternative-llama-location-profiles-to-control-your-device-xda-developer-tv/&quot;&gt;Llama&lt;/a&gt;. He covered the basics then &lt;a href=&quot;http://www.xda-developers.com/android/tasker-alternative-intermediate-llama-location-trigger-phone-activities-xda-developer-tv/&quot;&gt;expanded on them&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this part of the series, Kevin gives you what you asked for.  Kevin shows you how to control your phone with your voice. So check out all the videos in this Tasker series, and make your phone work for you. What are you waiting for? Check out this video.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-77398&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Be sure to check out other great &lt;a href=&quot;http://www.xda-developers.com/xda-tv/&quot; target=&quot;_blank&quot; title=&quot;XDA Developer TV&quot;&gt;XDA Developer TV&lt;/a&gt; Videos and Kevin’s other videos.&lt;/p&gt;
&lt;p&gt;Important Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=de.bulling.smstalk&amp;amp;feature=search_result#?t=W251bGwsMSwyLDEsImRlLmJ1bGxpbmcuc21zdGFsayJd&quot; target=&quot;_blank&quot; title=&quot;SMS Talk&quot;&gt;SMS, my Car and Me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.joaomgcd.autovoice&amp;amp;feature=search_result&quot; target=&quot;_blank&quot; title=&quot;AutoVoice&quot;&gt;AutoVoice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&amp;amp;feature=search_result&quot; target=&quot;_blank&quot; title=&quot;Tasker&quot;&gt; Tasker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.intangibleobject.securesettings.plugin&amp;amp;feature=search_result&quot; target=&quot;_blank&quot; title=&quot;Secure Settings&quot;&gt; Secure Settings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.plexnor.gravityscreenofffree&amp;amp;feature=search_result&quot; target=&quot;_blank&quot; title=&quot;Gravity Screen Off&quot;&gt; Gravity Screen Off&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.pocketables.com/2013/03/overview-of-pocketables-tasker-articles.html&quot; target=&quot;_blank&quot; title=&quot;Pocketables&quot;&gt;Pocketables&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check out &lt;a href=&quot;http://www.youtube.com/user/Rehtenk512&quot; target=&quot;_blank&quot; title=&quot;The Tech Ninja&quot;&gt;Kevin’s YouTube Channel.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Check out the new &lt;a href=&quot;http://forum.xda-developers.com/forumdisplay.php?f=2304&quot; target=&quot;_blank&quot; title=&quot;Sony Xperia Tablet Z Forum&quot;&gt;Sony Xperia Tablet Z&lt;/a&gt; at the &lt;a href=&quot;http://store.sony.com/tablet&quot; target=&quot;_blank&quot; title=&quot;Sony Store&quot;&gt;Sony Store&lt;/a&gt; and check out &lt;a href=&quot;http://www.youtube.com/SonyXperiaDev&quot; target=&quot;_blank&quot; title=&quot;SonyXperiaDev YouTube Channel&quot;&gt;Sony’s YouTube Channel&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/xda-developers/ShsH/~4/91f3jCb3k0g&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-18T18:30:04+00:00</dc:date>
	<dc:creator>Jimmy McGee</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-1053097753363465843.post-5887775792278890766">
	<title>Swarm: Try Your Skills And Reflexes With Paddle Master</title>
	<link>http://blog.swarmconnect.com/2013/06/try-your-skills-and-reflexes-with.html</link>
	<content:encoded>&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-aBWYEhY1fGI/UcCRn9BWwRI/AAAAAAAADjk/vuZeCs_qh_8/s1600/unnamed.jpg&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-aBWYEhY1fGI/UcCRn9BWwRI/AAAAAAAADjk/vuZeCs_qh_8/s1600/unnamed.jpg&quot; height=&quot;195&quot; border=&quot;0&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Fans of classic &quot;Pong,&quot; along with those who have never heard of such will love &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.kyfersoft.paddlemaster&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Paddle Master&lt;/a&gt; for Android. The game is reminiscent of the old school game of yesteryear, but with some very modern differences that make it perfect for old and young alike. Simple enough to qualify as a brain vacation, yet challenging enough to keep players occupied for hours, it really is the perfect addiction for everyday life.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;There are two balls and curved paddles for more challenging play and better control.&lt;span&gt; &lt;/span&gt;There are 8 possible power ups with effects lasting for several seconds, and you can play against the device or other players.&lt;span&gt; &lt;/span&gt;You only score with your ball color, and to keep things interesting the balls go faster when they hit the walls.&lt;span&gt;  &lt;/span&gt;For even more fun, there are 8 unlockable levels.&lt;span&gt; &lt;/span&gt;When the balls hit each other a ring drops, and if you catch the ring with your ball it is yours.&lt;span&gt; &lt;/span&gt;Rings unlock new levels, so they can be quite valuable.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;                &lt;br /&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Post scores to the &lt;a href=&quot;http://swarmconnect.com/leaderboards&quot; target=&quot;_blank&quot;&gt;Swarm leaderboards&lt;/a&gt; for even more fun.&lt;span&gt; &lt;/span&gt;You can see how you rank against players worldwide.&lt;span&gt; &lt;/span&gt;This can offer encouragement to keep trying, adding an element of competition, or you may find yourself fighting to defend your top spot. Either way, with the perfect mix of old school and modern, you'll have a blast playing whatever your age.&lt;/div&gt;</content:encoded>
	<dc:date>2013-06-18T17:00:00+00:00</dc:date>
	<dc:creator>Beti</dc:creator>
</item>
<item rdf:about="http://Android-Games.com/?p=7982">
	<title>Android-Games: Shoot A Ray releases Pulse Infiltrator for Android</title>
	<link>http://Android-Games.com/2013/06/shoot-a-ray-releases-pulse-infiltrator-for-android/</link>
	<content:encoded>&lt;img src=&quot;http://media1.android-games.com/wp-content/uploads/pulse.infiltrator-android.jpg&quot; title=&quot;pulse.infiltrator-android&quot; height=&quot;287&quot; width=&quot;590&quot; alt=&quot;pulse.infiltrator-android&quot; class=&quot;attachment-large wp-post-image&quot; /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://Android-Games.com/2013/06/shoot-a-ray-releases-pulse-infiltrator-for-android/&quot;&gt;Shoot A Ray releases Pulse Infiltrator for Android&lt;/a&gt;&lt;/p&gt;&lt;p&gt;E3 may be over, but new Android games are still rolling out like Pulse Infiltrator from Shoot A Ray. It’s a first-person shooter that describes itself as a tactical espionage game, and if that doesn’t sound cool enough for you there’s also telekinesis…&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://Android-Games.com&quot;&gt;Android Games&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-18T16:44:41+00:00</dc:date>
	<dc:creator>Adam Field</dc:creator>
</item>
<item rdf:about="http://www.landofdroid.com/?p=36896">
	<title>LandOfDroid: The Quest for Addtional Power -v- Reduced Functionality</title>
	<link>http://www.landofdroid.com/2013/the-quest-for-addtional-power-v-reduced-functionality/</link>
	<content:encoded>&lt;p&gt;Recently I have started to think today about Battery Life v Functionality.  I have seen numerous cases of people who seem to be willing to completely cripple their smartphones (at least what I deem as crippled) in order to get what is likely to be just an extra few minutes life out of their phones.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://i2.wp.com/www.landofdroid.com/wp-content/uploads/2013/06/android-battery-life.jpeg?resize=384%2C256&quot; alt=&quot;android-battery-life&quot; class=&quot;aligncenter  wp-image-36898&quot; /&gt;&lt;/p&gt;&lt;p&gt;At what point does restricting the functionality of a product depreciate the product itself?  At what point would you actually just be better off using a tablet and a Nokia 3310?&lt;/p&gt;&lt;p&gt;I use my phone pretty much how Google intended and I am never so desperate for extra juice that I turn key services off.&lt;/p&gt;&lt;p&gt;Others however run their phones extremely limited.  They do not run any auto-sync (talking Gmail, social networks, widgets etc) they have brightness on minimum not auto, they turn power save modes on (where available) which can really slow the CPU of the phone down and they even turn off extra services like Google Now and Location reporting.&lt;/p&gt;&lt;p&gt;I couldn’t imaging running my phone without data on all the time, without location reporting, without push notification in real-time from all my key apps.&lt;/p&gt;&lt;p&gt;In-fact f I had to manually do this I imagine my battery usage would increase as I would be looking at the phone more often in order to ‘refresh’ the items rather than only looking when it has something to show me.&lt;/p&gt;&lt;p&gt;I get an average of 20-24 hours battery life from all my devices with around 3 hours screen on time, with GPS, bluetooth, mobile data and/or wi-fi running all the time, I am not willing to compromise key functionality just to get an extra little bit of screen on time, certainly not for day-to-day use.  Why should I spend upwards of £500 on a top of the range device just to turn it into a device equal to one that costs £50?&lt;/p&gt;&lt;p&gt;We would love to hear your thoughts on this, if you use Google+ then simply comment below&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-18T16:07:29+00:00</dc:date>
	<dc:creator>Glenn Blair</dc:creator>
</item>
<item rdf:about="http://www.coderzheaven.com/?p=5532">
	<title>Coderz Heaven: We are Moving………</title>
	<link>http://www.coderzheaven.com/2013/06/18/moving/</link>
	<content:encoded>&lt;p&gt;&lt;strong&gt;Hello all……&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;
&lt;p&gt; We are moving on to a faster server… So if you experience any difficulties please bear with us and inform us.&lt;/p&gt;
&lt;/strong&gt;&lt;p&gt;&lt;strong&gt;Thankyou&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&quot;post-5532-linkbox&quot; class=&quot;su-linkbox&quot;&gt;&lt;div class=&quot;su-linkbox-label&quot;&gt;Link to this post!&lt;/div&gt;&lt;div class=&quot;su-linkbox-field&quot;&gt;&lt;input readonly=&quot;readonly&quot; type=&quot;text&quot; style=&quot;width: 100%;&quot; value=&quot;&amp;lt;a href=&amp;quot;http://www.coderzheaven.com/2013/06/18/moving/&amp;quot;&amp;gt;We are Moving………&amp;lt;/a&amp;gt;&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crp_related&quot;&gt;&lt;h3&gt;&lt;font color=&quot;#FF0000&quot;&gt;More Similar Posts &lt;/font&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2011/06/18/how-to-know-whether-your-b2body-is-moving-or-not-in-box2d/&quot; class=&quot;crp_title&quot;&gt;How to know whether your b2Body is moving or not in Box2D ?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2011/02/13/how-to-check-whether-your-body-is-moving-or-it-is-in-rest-in-box2d-iphone-or-android/&quot; class=&quot;crp_title&quot;&gt;How to check whether your body is moving or it is in rest in&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2012/04/28/how-to-move-a-body-in-box2d/&quot; class=&quot;crp_title&quot;&gt;How to move a body manually in Box2D? or Give a force to a…&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2010/12/23/how-to-use-ccbitmapfontatlas/&quot; class=&quot;crp_title&quot;&gt;How to use CCBitmapFontAtlas in iPhone cocos2D?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2010/12/19/pc-optimization-clearing-temp-files-from-your-pc/&quot; class=&quot;crp_title&quot;&gt;PC Optimization – Clearing Temp files from your PC&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-06-18T05:24:53+00:00</dc:date>
	<dc:creator>James</dc:creator>
</item>
<item rdf:about="http://www.mutualmobile.com/?p=7016">
	<title>Mutual Mobile: Weekly Mobile News Roundup: June 17</title>
	<link>http://feedproxy.google.com/~r/MutualMobile/~3/u1mFLaEHDEU/weekly-mobile-news-roundup-june-17</link>
	<content:encoded>&lt;img src=&quot;http://mmweb.dev.s3.amazonaws.com/wp-content/uploads/MobileRoundUp_Hero2.png&quot; alt=&quot;&quot; /&gt;

&lt;p&gt; Last week, Apple held its annual World Wide Developer’s Conference. We dive into some of the biggest announcements: a groundbreaking new “flat” redesign in iOS 7, new Macs, iOS for cars, and more.&lt;/p&gt;

&lt;h2&gt;News and Insights&lt;/h2&gt;

&lt;h3&gt;
&lt;a href=&quot;http://www.theverge.com/2013/6/10/4413228/apple-wwdc-2013-everything-you-need-to-know&quot;&gt;Apple Debuts iOS 7, OS X Mavericks, and New Macs: Everything You Need to Know&lt;/a&gt; – The Verge
&lt;/h3&gt;
&lt;p&gt;All the top news from WWDC, in one place. &lt;/p&gt;

&lt;h3&gt;
&lt;a href=&quot;http://www.forbes.com/sites/connieguglielmo/2013/06/15/apple-loop-cook-unveils-mission-statement-ios-7-gets-colorful-new-iphone-in-the-fall&quot;&gt;Cook Unveils Mission Statement, iOS 7 Gets Colorful, New iPhone&lt;/a&gt; – Forbes
&lt;/h3&gt;
&lt;p&gt;A few of the things that happened around Apple this week.&lt;/p&gt;

&lt;h3&gt;
&lt;a href=&quot;http://readwrite.com/2013/06/13/apple-ios-7-changes-everything-for-app-designers#awesm=~o91AJfa5MKOKSK&quot;&gt;How Apple’s iOS 7 Changes Everything For App Designers&lt;/a&gt; – ReadWrite
&lt;/h3&gt;
&lt;p&gt;Everything app designers know has been tossed out the window..&lt;/p&gt;


&lt;h3&gt;
&lt;a href=&quot;http://techland.time.com/2013/06/17/ios-7/#ixzz2WTtNzzEQ&quot;&gt;Why iOS 7 Looks Unfinished (Spoiler: It’s Because It’s Unfinished)&lt;/a&gt; – TIME
&lt;/h3&gt;
&lt;p&gt;A collection of top mobile analysts’ thoughts on the new OS. &lt;/p&gt;

&lt;h3&gt;
&lt;a href=&quot;http://www.forbes.com/sites/sap/2013/06/10/why-super-elites-get-all-the-attention/&quot;&gt;Why Do Super-Elite Customers Get All The Attention?&lt;/a&gt; – Forbes
&lt;/h3&gt;
&lt;p&gt;How to use big data and mobile to delight both the “super-elite” and regular joes. 
&lt;/p&gt;

&lt;h3&gt;
&lt;a href=&quot;http://gigaom.com/2013/06/15/with-wearable-tech-like-google-glass-human-behavior-is-now-a-design-problem&quot;&gt;With Wearable Tech, Human Behavior is Now a Design Problem&lt;/a&gt; – GigaOM
&lt;/h3&gt;
&lt;p&gt;Wearable devices will be able to influence our behavior in ways both good and bad.&lt;/p&gt;

&lt;h3&gt;
&lt;a href=&quot;http://risnews.edgl.com/retail-best-practices/saks-deploys-2,000-ipads-in-stores,-to-launch-off-5th-website-in-fall86816&quot;&gt;Saks Deploys 2,000 iPads in Stores, to Launch OFF 5th Website in Fall&lt;/a&gt; – RIS
&lt;/h3&gt;
&lt;p&gt;Saks’ multi-channel shoppers spend 3-4x what single-channel shoppers spend.&lt;/p&gt;

&lt;h3&gt;
&lt;a href=&quot;http://adage.com/article/digitalnext/mobile-a-screen-device-behavior/242024/&quot;&gt;Mobile Marketing Isn’t About Screens or Devices, It’s About Behavior&lt;/a&gt; – AdAge
&lt;/h3&gt;
&lt;p&gt;Consumers move fluidly across devices and platforms; brands must do the same. &lt;/p&gt;

&lt;a href=&quot;http://www.mutualmobile.com/videos/mobile-minute-june-13&quot;&gt;&lt;img src=&quot;http://www.mutualmobile.com/wp-content/themes/base/img/mob-min-06-10.jpg&quot; alt=&quot;Mobile Minute June 13&quot; /&gt;&lt;/a&gt;

&lt;h2&gt;Research&lt;/h2&gt;

&lt;h3&gt;
&lt;a href=&quot;http://thepu.sh/trends/infographic-wwdc/&quot;&gt;[Infographic] Mobile at WWDC&lt;/a&gt; – The Push
&lt;/h3&gt;
&lt;p&gt;The buzz, the snark, the hits, and the misses from Apple’s annual conference. &lt;/p&gt;

&lt;h3&gt;
&lt;a href=&quot;http://blog.flurry.com/bid/98080/A-Day-in-the-Life-of-a-Mobile-Consumer&quot;&gt;A Day in the Life of a Mobile Consumer&lt;/a&gt; – Flurry
&lt;/h3&gt;
&lt;p&gt;How consumers are using apps throughout the day, and how it relates to wearables.&lt;/p&gt;


&lt;h3&gt;
&lt;a href=&quot;http://www.mobilecommercedaily.com/82pc-of-ecommerce-merchants-not-tracking-mobile-sales-report&quot;&gt;82% of eCommerce Merchants Not Tracking Mobile Sales&lt;/a&gt; – Mobile Commerce Daily
&lt;/h3&gt;
&lt;p&gt;The majority of merchants don’t know whether a purchase comes from mobile or PC.&lt;/p&gt;


&lt;h3&gt;
&lt;a href=&quot;http://bits.blogs.nytimes.com/2013/06/10/one-third-of-americans-now-own-tablet-computers/&quot;&gt;One-Third of Americans Now Own Tablet Computers&lt;/a&gt; – New York Times
&lt;/h3&gt;
&lt;p&gt;The fastest-growing segments: affluent households, college graduates, parents. &lt;/p&gt;

&lt;h3&gt;
&lt;a href=&quot;http://www.emarketer.com/Article/Smart-Mobile-Devices-Account-Small-Share-of-TV-Viewing/1009955#hXJZCpGm3ZSv1Rmt.99&quot;&gt;Smart Mobile Devices Account for Small Share of TV Viewing&lt;/a&gt; – eMarketer
&lt;/h3&gt;
&lt;p&gt;Only 2% of total TV viewership occurred on a tablet or smartphone.&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;http://www.mutualmobile.com/roundups/weekly-mobile-news-roundup-june-17&quot;&gt;Weekly Mobile News Roundup: June 17&lt;/a&gt; appeared first on &lt;a href=&quot;http://www.mutualmobile.com&quot;&gt;Mutual Mobile&lt;/a&gt;.&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/MutualMobile/~4/u1mFLaEHDEU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-17T16:30:49+00:00</dc:date>
	<dc:creator>Becky White</dc:creator>
</item>
<item rdf:about="http://commonsware.com/blog/2013/06/17/calling-more-android-developer-support-sites">
	<title>Mark Murphy: Calling for More Android Developer Support Sites</title>
	<link>http://commonsware.com/blog/2013/06/17/calling-more-android-developer-support-sites.html</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://commonsware.com/blog/2012/11/06/announcing-andglobe.html&quot;&gt;About seven months ago&lt;/a&gt;, I launched &lt;a href=&quot;http://www.andglobe.com&quot;&gt;AndGlobe&lt;/a&gt;, a site to collect the names and links to Android developer support sites. Here, “support sites” are defined as forums for asking questions and getting answers.&lt;/p&gt;

&lt;p&gt;In particular, AndGlobe is designed to highlight sites that offer support in languages other than English. Android development has gotten too large to expect everyone trying to write Android apps to have as solid of a grasp of English as they do Java.&lt;/p&gt;

&lt;p&gt;Non-English support sites help in two ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;They provide a place for non-native English speakers to ask questions in a language that is more comfortable for them, resulting (hopefully) in better questions and better discussion to refine and answer those questions.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;For questions that one of these communities cannot answer on its own, the community can serve as a “springboard” for asking the question elsewhere, such as on StackOverflow. If desired, the &lt;em&gt;community&lt;/em&gt; can, in effect, ask the question elsewhere, pooling their skills in other languages, rather than necessarily limiting it to the skills of the original person with the question.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So far, AndGlobe has links to 19 non-English support sites, which is wonderful. However, the language range could use more breadth. For example, I have no links to sites in languages native to Korea, China, or India, and I have only one Japanese-language site. I have no links to sites in Arabic, and only one in Hebrew. I have some Russian sites, but little else from eastern Europe. And so on.&lt;/p&gt;

&lt;p&gt;Please, if you know of question-and-answer Android development sites, beyond the ones already listed at &lt;a href=&quot;http://www.andglobe.com&quot;&gt;http://www.andglobe.com&lt;/a&gt;, let me know about them! As is outlined on &lt;a href=&quot;https://github.com/commonsguy/andglobe&quot;&gt;the GitHub repo for this data&lt;/a&gt;, there are several ways to send me updates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Send a GitHub pull request&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;File &lt;a href=&quot;https://github.com/commonsguy/andglobe/issues&quot;&gt;an issue&lt;/a&gt; with the language, name, and URL&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;Send an email to globaldev@commonsware.com with the language, name, and URL&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;According to industry analysts, sometime in 2014, there will be more Android devices in use worldwide than Windows machines. A global user community needs a global developer base, and a global developer base needs multi-lingual developer support.&lt;/p&gt;

&lt;p&gt;Thanks in advance!&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-17T11:09:21+00:00</dc:date>
	<dc:creator>Mark Murphy</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-5065195004001204478.post-7995498036033680833">
	<title>Android UI Patterns: Dont's of Android design</title>
	<link>http://feedproxy.google.com/~r/AndroidUiDesignPatterns/~3/o6j8QqsBJik/donts-of-android-design.html</link>
	<content:encoded>&lt;div style=&quot;text-align: left;&quot; dir=&quot;ltr&quot;&gt;
Android app development frameworks is good, really good. It is very flexible and allows devs to do nearly anything they want. The flexibility extends to design as well as developers are able to implement crazy designs make the apps work. But! Not everything is worth doing. Often, the components provided by the framework are better. They look better, feel better and users know how to use them.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here are few tips about components that are better left alone than reimplemented. Things not to do in Android app design / development.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;Re-skinning everything&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
Some designers are in an opinion that if any part of an original app theme is visible the app is not designed. Re-skinning every single component on Android is not necessary. While well re-skinned apps might look great and even feel like part of the platform it definitely adds a massive amount of work for bot designers and developer. It simply isn't worth it. Start your design from Holo theme and change things you need to change and leave components that work fine without changing stock.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Badly re-skinned apps are disasters. These apps don't feel like they are meant to be used on Android. Take a look at the screenshots below. This app is over designed. Every single component behaves strangely and looks strange. Don't do this! &lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://2.bp.blogspot.com/-NkmyzOI3bNs/Ub4Xkvl4rTI/AAAAAAAARrE/pnaZxepJwTk/s1600/framed_2013-06-16+21.51.38.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-NkmyzOI3bNs/Ub4Xkvl4rTI/AAAAAAAARrE/pnaZxepJwTk/s320/framed_2013-06-16+21.51.38.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-sBm7jZQCevo/Ub4Xj3bD8XI/AAAAAAAARrA/p3DsNv21Urg/s1600/framed_2013-06-16+21.29.42.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-sBm7jZQCevo/Ub4Xj3bD8XI/AAAAAAAARrA/p3DsNv21Urg/s320/framed_2013-06-16+21.29.42.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Take a look at the &lt;a href=&quot;http://developer.android.com/design/building-blocks/index.html&quot;&gt;building blocks&lt;/a&gt; Android provides you and use them as much as possible. Some good examples of right way styled apps are &lt;a href=&quot;https://play.google.com/store/apps/details?id=fm.player&quot;&gt;Player FM&lt;/a&gt; and &lt;a href=&quot;https://play.google.com/store/apps/details?id=au.com.shiftyjelly.pocketcasts&quot;&gt;Pocket Cast&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://2.bp.blogspot.com/-Q3x3d9O8KvQ/Ub4fFYZ3jQI/AAAAAAAARsI/nTRziDbeMbk/s1600/framed_2013-06-16+22.17.41.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-Q3x3d9O8KvQ/Ub4fFYZ3jQI/AAAAAAAARsI/nTRziDbeMbk/s320/framed_2013-06-16+22.17.41.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://4.bp.blogspot.com/-1SsddUPqdCk/Ub4fGwieK9I/AAAAAAAARsQ/szu8UHt-mAA/s1600/framed_2013-06-16+22.19.17.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-1SsddUPqdCk/Ub4fGwieK9I/AAAAAAAARsQ/szu8UHt-mAA/s320/framed_2013-06-16+22.19.17.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;2.3 / iOS style tabs&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
Tabs in Android apps are very identifiable and stylish by default. Don't bring other platform tab design to your app. This is one of the quickest ways to make sure that your users will have a very bad first impression of your app. Never do this!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-K4pI-Lo16fA/Ub4aQxLM-KI/AAAAAAAARrc/Nie5AJz2-LY/s1600/framed_2013-06-16+22.01.17.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-K4pI-Lo16fA/Ub4aQxLM-KI/AAAAAAAARrc/Nie5AJz2-LY/s320/framed_2013-06-16+22.01.17.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://2.bp.blogspot.com/-CyJrrNtbtMQ/Ub4aQxOW7RI/AAAAAAAARrY/B7ZYxMpLPys/s1600/framed_2013-06-16+22.01.53.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-CyJrrNtbtMQ/Ub4aQxOW7RI/AAAAAAAARrY/B7ZYxMpLPys/s320/framed_2013-06-16+22.01.53.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Take time to familiarise yourself with &lt;a href=&quot;http://developer.android.com/design/building-blocks/tabs.html&quot;&gt;the way Android apps use tabs&lt;/a&gt;. The default tabs and interaction with them is very well thought out. Users expect then to work similarly they work in other apps.&lt;br /&gt;
&lt;br /&gt;
Not only do the framework tabs look great but using them gives you a lot of features for free. Remember that tabs on Android should be swipable. They should also adapt to wider screens by moving them to the action bar if there's room. This saves a lot of vertical space when user uses the device in landscape. They are also easily stylable. You can change all the colours to match your brand. Try &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.iosched&quot;&gt;Google IO app&lt;/a&gt; to see how Android framework tabs work (and are expected to work).&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-PyFWqNGE-K0/Ub4ce4Dkt4I/AAAAAAAARr0/0iGYfZulJr4/s1600/framed_2013-06-16+22.08.01.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-PyFWqNGE-K0/Ub4ce4Dkt4I/AAAAAAAARr0/0iGYfZulJr4/s320/framed_2013-06-16+22.08.01.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://4.bp.blogspot.com/-FgaFjSLW9bc/Ub4ce27jxJI/AAAAAAAARrw/We_tkfhrYtI/s1600/framed_2013-06-16+22.08.10.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-FgaFjSLW9bc/Ub4ce27jxJI/AAAAAAAARrw/We_tkfhrYtI/s320/framed_2013-06-16+22.08.10.png&quot; height=&quot;184&quot; border=&quot;0&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;Non-standard action bar&lt;/span&gt;&lt;/h2&gt;
&lt;a href=&quot;http://developer.android.com/design/patterns/actionbar.html&quot;&gt;Action bar&lt;/a&gt; is one of the key UI components of most Android apps. There are apps that don't need to have an action bar but most apps do.&lt;b&gt; Follow &lt;a href=&quot;http://developer.android.com/design/patterns/actionbar.html&quot;&gt;the design guidelines&lt;/a&gt; with action bar&lt;/b&gt;! Do not try to reinvent the wheel. Action bar has multiple function. It gives user context information, helps with navigation, helps branding the app and provide access to most important functionality of any screen.&lt;br /&gt;
&lt;br /&gt;
If your app uses a title bar consider using an action bar instead. Your app will instantly look like it belongs on Android.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-QAZLhW_DiMU/Ub4h9Iadj9I/AAAAAAAARsk/6_rMNilZH0s/s1600/framed_2013-06-16+22.31.55.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-QAZLhW_DiMU/Ub4h9Iadj9I/AAAAAAAARsk/6_rMNilZH0s/s320/framed_2013-06-16+22.31.55.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-aIfXLfVQHHQ/Ub4h8NLMJTI/AAAAAAAARsg/RUwvkPO23SM/s1600/framed_2013-06-16+22.33.35.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-aIfXLfVQHHQ/Ub4h8NLMJTI/AAAAAAAARsg/RUwvkPO23SM/s320/framed_2013-06-16+22.33.35.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
By including an action bar to your app you'll save considerably in design as many design decisions are already made (and tested!) for you. You'll also save a lot of time in development phase. Any apps targeting Android 3.0 or newer can use the action bar implementation directly from the framework and if you want to support older apps &lt;a href=&quot;http://actionbarsherlock.com/&quot;&gt;ActionBarSherlock&lt;/a&gt; is a great library for you. The ABS library gracefully steps aside when the app runs on a device that has action br support and therefore apps behave exactly right on newer platforms as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;Rounded text containers, boxed text fields and list carets&lt;/span&gt;&lt;/h2&gt;
Panel backgrounds with shadows and rounded corners simply don't belong to Android. Do this and nobody will believe that  you or your designer knew Android platform (DB app below).&lt;br /&gt;
&lt;br /&gt;
Another simple thing that is to be avoided is right carets in tappable items when there's clearly no confusion that they're tappable (UEFA app below). These things don't add any value in most cases. If you have a homogenous list of items that are all tappable that's what users are going to do. Just drop them from your design and your app will look better.&lt;br /&gt;
&lt;br /&gt;
Boxed text fields are the past (BMW Drive now below). Try to avoid using them in your apps. Seeing text fields like these in apps immediately makes your app feel like it was designed years ago.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://2.bp.blogspot.com/-mcQbSy8ZX_k/Ub4jlQlIORI/AAAAAAAARtA/fp2LrRJq9YE/s1600/framed_2013-06-16+22.42.03.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-mcQbSy8ZX_k/Ub4jlQlIORI/AAAAAAAARtA/fp2LrRJq9YE/s200/framed_2013-06-16+22.42.03.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-9rMbU4bEe7A/Ub4jkjLdjWI/AAAAAAAARs4/MQyOY5siXZw/s1600/framed_2013-06-16+22.33.06.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-9rMbU4bEe7A/Ub4jkjLdjWI/AAAAAAAARs4/MQyOY5siXZw/s200/framed_2013-06-16+22.33.06.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://2.bp.blogspot.com/-L94CmOyueI8/Ub4jla1f__I/AAAAAAAARs8/0uIgOIQpzYg/s1600/framed_2013-06-16+21.31.18.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-L94CmOyueI8/Ub4jla1f__I/AAAAAAAARs8/0uIgOIQpzYg/s200/framed_2013-06-16+21.31.18.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;Quick actions replacing content&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
Quick action menus which replace the content when opened are bad user interface design. There's a very simple reason why: you don't want to hide the target of the contextual actions! I don't understand why Twitter is doing this. It does not make &lt;i&gt;any&lt;/i&gt; sense! dont' force users to remember which line they selected.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-Dwb8qkdENbI/Ub4lwJRBurI/AAAAAAAARtY/OCcH3YJdZEE/s1600/framed_2013-06-16+22.51.11.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-Dwb8qkdENbI/Ub4lwJRBurI/AAAAAAAARtY/OCcH3YJdZEE/s320/framed_2013-06-16+22.51.11.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://2.bp.blogspot.com/-vYMgzJmsNv4/Ub4lwGoEPcI/AAAAAAAARtU/5lpSMk-s2Fw/s1600/framed_2013-06-16+22.51.18.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-vYMgzJmsNv4/Ub4lwGoEPcI/AAAAAAAARtU/5lpSMk-s2Fw/s320/framed_2013-06-16+22.51.18.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Use the selection mode in action bar instead. This way users see what they're doing. It's simple and elegant solution. Users will see which items they're manipulating and there's much lower risk for mistakes.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-xXxOV7ReU5s/Ub4lxIGSU7I/AAAAAAAARtc/8qErrviDfdo/s1600/framed_2013-06-16+22.52.09.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-xXxOV7ReU5s/Ub4lxIGSU7I/AAAAAAAARtc/8qErrviDfdo/s320/framed_2013-06-16+22.52.09.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;Apps that feel like a website&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;a style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-1RLlXm-kYLs/Ub4uH6ffQcI/AAAAAAAARuM/oscUFnvXI5A/s1600/phonegap-logo.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-1RLlXm-kYLs/Ub4uH6ffQcI/AAAAAAAARuM/oscUFnvXI5A/s200/phonegap-logo.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;Web apps belong to a browser. Make your app a native app and ignore hybrid tools like PhoneGap and don't wrap your website into a WebView and release it to Google Play. Cross-platform frameworks promise a lot of savings as you can write an app once and run it on iOS and Android or they promise that you can use your web development skill to build apps. In the long run these tools just harm your brand and waste your time. So many developers have moved from these tools to native development after first wasting months trying to build something acceptable and finally realising that PhoneGap and other tools like it simply produce garbage.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Take the time to learn native. If your project does not have budget to build a native Android app build a proper web app and keep it as a web app and build an Android app once the budget is found. Web apps are great but wrapping them as apps is just stupid. &lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/AndroidUiDesignPatterns/~4/o6j8QqsBJik&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-17T09:01:51+00:00</dc:date>
	<dc:creator>Juhani Lehtimäki</dc:creator>
</item>
<item rdf:about="http://galaxytabreview.com/?p=192">
	<title>Galaxy Tab Review: Galaxy Tab 8.9: Download Android 4.2.2 CM10.1</title>
	<link>http://galaxytabreview.com/8-9/download-android-4-2-2-cm10-1/</link>
	<content:encoded>&lt;p&gt;Samsung did not sell a lot of Galaxy tab 8.9 tablets and due to that it never released Android 4.2.2, let alone Android 4.1.1 jelly bean for it. XDA is here to rescue and they were able to get everything working except for HDMI output. Even the keyboard dock works with it. This is a [...]&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;http://galaxytabreview.com/8-9/download-android-4-2-2-cm10-1/&quot;&gt;Galaxy Tab 8.9: Download Android 4.2.2 CM10.1&lt;/a&gt; appeared first on &lt;a href=&quot;http://galaxytabreview.com&quot;&gt;Galaxy Tab Reviews, News, Updates&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-15T15:17:05+00:00</dc:date>
	<dc:creator>Galaxy Tab Review</dc:creator>
</item>
<item rdf:about="http://www.mutualmobile.com/?p=7006">
	<title>Mutual Mobile: Mobile Minute: June 13</title>
	<link>http://feedproxy.google.com/~r/MutualMobile/~3/FHwRCgXxSPI/mobile-minute-june-13</link>
	<content:encoded>&lt;div class=&quot;video-container&quot;&gt;&lt;/div&gt;

&lt;p&gt;For consumers, mobile payments offer low-friction checkout. For retailers, it’s an easy point of sale system. So why haven’t mobile payments taken off? &lt;a href=&quot;http://www.theverge.com/2013/6/4/4396750/starbucks-app-mobile-payments&quot;&gt;Starbucks&lt;/a&gt; is the surprising current leader, generating more than &lt;strong&gt;3 million in-app transactions per week.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s a huge number. Especially when it comes from a coffee company, rather than a payment platform. What should marketers learn from them?&lt;/p&gt;

&lt;p&gt;Starbucks has put mobile first, building loyalty with customers through an efficient, elegant way for them to pay — essentially with a digital gift card that users love. Brands can learn from Starbucks, blending easy payments with loyalty perks.&lt;/p&gt;

&lt;p&gt;If used smartly, mobile payments create a big opportunity to enhance the brick and mortar experience.&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;http://www.mutualmobile.com/videos/mobile-minute-june-13&quot;&gt;Mobile Minute: June 13&lt;/a&gt; appeared first on &lt;a href=&quot;http://www.mutualmobile.com&quot;&gt;Mutual Mobile&lt;/a&gt;.&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/MutualMobile/~4/FHwRCgXxSPI&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-14T22:29:50+00:00</dc:date>
	<dc:creator>Kaely Coon</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-6843566830671277353.post-3564222324199795614">
	<title>Chet Haase: DevBytes: Animating ListView Deletion</title>
	<link>http://graphics-geek.blogspot.com/2013/06/devbytes-animating-listview-deletion.html</link>
	<content:encoded>It's Friday: must be time for another DevBytes episode.&lt;br /&gt;
&lt;br /&gt;
Finally, here is the DevBytes episode around the ListView animation demo in the talk &lt;i&gt;A Moving Experience&lt;/i&gt; that I gave with &lt;a href=&quot;http://google.com/+RomainGuy&quot;&gt;Romain Guy&lt;/a&gt; at Google I/O last month.&lt;br /&gt;
&lt;br /&gt;
The code is nearly the same as that in the I/O talk, except I tweaked it to make it more general-purpose. Specifically, it no longer depends on the setHasTransientState() method (introduced in Jellybean 4.1) to keep the views around while fiddling with layout. Instead, it uses an adapter with stable itemIds, and uses those Ids to track where the content is before and after layout.&lt;br /&gt;
&lt;br /&gt;
As written, the code is still dependent on Android 4.1, but that's only because of the use of ViewPropertyAnimator.withEndAction() method, which is really just syntactic sugar around adding a listener and running the end-action code in the onAnimationEnd() callback. So you could totally port this code all the way back to Android 3.1 (when ViewPropertyAnimator was introduced) or even 3.0 (if you use ObjectAnimator instead).&lt;br /&gt;
&lt;br /&gt;
Watch the video. Check out the code. Play with ListView. Animate. Enjoy.&lt;br /&gt;
&lt;br /&gt;
A Moving Experience: &lt;a href=&quot;http://www.youtube.com/watch?v=ihzZrS69i_s&quot;&gt;http://www.youtube.com/watch?v=ihzZrS69i_s&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
DevBytes on YouTube: &lt;a href=&quot;http://www.youtube.com/playlist?list=PLWz5rJ2EKKc_XOgcRukSoKKjewFJZrKV0&quot;&gt;http://www.youtube.com/playlist?list=PLWz5rJ2EKKc_XOgcRukSoKKjewFJZrKV0&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Code: &lt;a href=&quot;http://developer.android.com/shareables/devbytes/ListViewRemovalAnimation.zip&quot;&gt;http://developer.android.com/shareables/devbytes/ListViewRemovalAnimation.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-06-14T21:06:00+00:00</dc:date>
	<dc:creator>Chet Haase</dc:creator>
</item>
<item rdf:about="http://Android-Games.com/?p=7974">
	<title>Android-Games: The Official Man of Steel game Soars onto Google Play</title>
	<link>http://Android-Games.com/2013/06/the-official-man-of-steel-game-soars-onto-google-play/</link>
	<content:encoded>&lt;img src=&quot;http://media1.android-games.com/wp-content/uploads/man.of_.steel-android.jpg&quot; title=&quot;man.of.steel-android&quot; height=&quot;287&quot; width=&quot;590&quot; alt=&quot;man.of.steel-android&quot; class=&quot;attachment-large wp-post-image&quot; /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://Android-Games.com/2013/06/the-official-man-of-steel-game-soars-onto-google-play/&quot;&gt;The Official Man of Steel game Soars onto Google Play&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Yesterday we covered Gameloft’s Despicable Me Minion Rush, and today we’re back to take a look at another movie tie-in game with the Man of Steel.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://Android-Games.com&quot;&gt;Android Games&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-14T15:45:05+00:00</dc:date>
	<dc:creator>Adam Field</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-1053097753363465843.post-8007400118839501769">
	<title>Swarm: Swipe Your Way With Swipebox</title>
	<link>http://blog.swarmconnect.com/2013/06/swipe-your-way-with-swipebox.html</link>
	<content:encoded>&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-ugAyPz_embE/UbozrWJfaWI/AAAAAAAADfc/t6C9mIkXTIo/s1600/unnamed.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-ugAyPz_embE/UbozrWJfaWI/AAAAAAAADfc/t6C9mIkXTIo/s1600/unnamed.png&quot; height=&quot;195&quot; border=&quot;0&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Looks can be deceiving, and that is exactly the case with &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.drabiter.swipebox&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Swipebox&lt;/a&gt; for Android. This is a simple swiping game, but the puzzle twist adds a level of difficulty that can challenge even the most seasoned player. There is no fear of boredom here, as just when you think you have it figured out the game changes on you. The name of the game is points, and you can gain bonus points for swiping certain color combinations, up to 10 bonus points to be exact. However, there are forbidden combinations as well, and those can cost you 30 points, so beware! &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;For every 150 points you gain the game speeds up, making it more difficult as you go, and just when you have the pattern figured out at around 75 points earned, the pattern changes.&lt;span&gt;  &lt;/span&gt;If this isn't enough to keep you jumping, you can always post your scores to the &lt;a href=&quot;http://swarmconnect.com/leaderboards&quot; target=&quot;_blank&quot;&gt;Swarm leaderboards&lt;/a&gt; for some friendly competition.&lt;span&gt; &lt;/span&gt;The online leaderboards let you share and compare scores with players worldwide.&lt;span&gt; &lt;/span&gt;See how you stack up, and fight to make it to the very top.&lt;span&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;                &lt;br /&gt;&lt;div class=&quot;MsoNormal&quot;&gt;This is the perfect game for killing some major time or just passing a few minute while you wait for something.&lt;span&gt;  &lt;/span&gt;Great for all ages, the challenge is real, but so is the fun.&lt;span&gt;  &lt;/span&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-06-13T21:05:00+00:00</dc:date>
	<dc:creator>Beti</dc:creator>
</item>
<item rdf:about="http://www.coderzheaven.com/?p=5521">
	<title>Coderz Heaven: Use of custom animations in a FragmentTransaction when pushing and popping a stack. or How to apply animations in Fragments when pushing on to a stack?</title>
	<link>http://www.coderzheaven.com/2013/06/13/custom-animations-fragmenttransaction-pushing-popping-stack-apply-animations-fragments-pushing-stack/</link>
	<content:encoded>&lt;p&gt;Hello all&lt;/p&gt;
&lt;p&gt; We have seen many examples of how to use fragments in android.&lt;br /&gt;
 You can search coderzheaven for all types of transactions using Fragments.&lt;br /&gt;
Today in this post we will see how we can apply animations to Fragments when pushing on to a stack.&lt;/p&gt;
&lt;p&gt;This is fairly a long example. I will try to explain with code one by one,&lt;br /&gt;
You can click on the download link to get the source code.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dl.dropboxusercontent.com/u/91846918/frag_cust_animations1.png&quot; alt=&quot;Fragment&quot; height=&quot;480&quot; border=&quot;1&quot; width=&quot;320&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dl.dropboxusercontent.com/u/91846918/frag_cust_animations2.png&quot; alt=&quot;Fragment&quot; height=&quot;480&quot; border=&quot;1&quot; width=&quot;320&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dl.dropboxusercontent.com/u/91846918/frag_cust_animations3.png&quot; alt=&quot;Fragment&quot; height=&quot;480&quot; border=&quot;1&quot; width=&quot;320&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here we start.&lt;/p&gt;
&lt;p&gt;At first we will see the layout used in the Fragment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;hello_world.xml&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;TextView xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:id=&quot;@+id/text&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:gravity=&quot;center_vertical|center_horizontal&quot;
    android:text=&quot;@string/hello_world&quot;
    android:textAppearance=&quot;?android:attr/textAppearanceMedium&quot; /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Now the layout for the activity.&lt;br /&gt;
&lt;strong&gt;fragment_stack.xml&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:gravity=&quot;center_horizontal&quot;
    android:orientation=&quot;vertical&quot;
    android:padding=&quot;4dip&quot; &amp;gt;

    &amp;lt;FrameLayout
        android:id=&quot;@+id/simple_fragment&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;0px&quot;
        android:layout_weight=&quot;1&quot; &amp;gt;
    &amp;lt;/FrameLayout&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/new_fragment&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_weight=&quot;0&quot;
        android:text=&quot;@string/new_fragment&quot; &amp;gt;

        &amp;lt;requestFocus /&amp;gt;
    &amp;lt;/Button&amp;gt;

&amp;lt;/LinearLayout&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Now the xml for the animations in the Fragment.&lt;br /&gt;
First create a folder inside res folder called “animator” and create four xml files inside it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;fragment_slide_left_enter.xml&lt;br /&gt;
fragment_slide_left_exit.xml&lt;br /&gt;
fragment_slide_right_enter.xml&lt;br /&gt;
fragment_slide_right_exit.xml&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;fragment_slide_left_enter.xml&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;objectAnimator
        android:interpolator=&quot;@android:interpolator/decelerate_quint&quot;
        android:valueFrom=&quot;100dp&quot; android:valueTo=&quot;0dp&quot;
        android:valueType=&quot;floatType&quot;
        android:propertyName=&quot;translationX&quot;
        android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;
    &amp;lt;objectAnimator
        android:interpolator=&quot;@android:interpolator/decelerate_quint&quot;
        android:valueFrom=&quot;0.0&quot; android:valueTo=&quot;1.0&quot;
        android:valueType=&quot;floatType&quot;
        android:propertyName=&quot;alpha&quot;
        android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;
&amp;lt;/set&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;fragment_slide_left_exit.xml&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;objectAnimator
        android:interpolator=&quot;@android:interpolator/decelerate_quint&quot;
        android:valueFrom=&quot;0dp&quot; android:valueTo=&quot;-100dp&quot;
        android:valueType=&quot;floatType&quot;
        android:propertyName=&quot;translationX&quot;
        android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;
    &amp;lt;objectAnimator
        android:interpolator=&quot;@android:interpolator/decelerate_quint&quot;
        android:valueFrom=&quot;1.0&quot; android:valueTo=&quot;0.0&quot;
        android:valueType=&quot;floatType&quot;
        android:propertyName=&quot;alpha&quot;
        android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;
&amp;lt;/set&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;fragment_slide_right_enter.xml&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;objectAnimator
        android:interpolator=&quot;@android:interpolator/decelerate_quint&quot;
        android:valueFrom=&quot;-100dp&quot; android:valueTo=&quot;0dp&quot;
        android:valueType=&quot;floatType&quot;
        android:propertyName=&quot;translationX&quot;
        android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;
    &amp;lt;objectAnimator
        android:interpolator=&quot;@android:interpolator/decelerate_quint&quot;
        android:valueFrom=&quot;0.0&quot; android:valueTo=&quot;1.0&quot;
        android:valueType=&quot;floatType&quot;
        android:propertyName=&quot;alpha&quot;
        android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;
&amp;lt;/set&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;fragment_slide_right_exit.xml&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;objectAnimator
        android:interpolator=&quot;@android:interpolator/decelerate_quint&quot;
        android:valueFrom=&quot;0dp&quot; android:valueTo=&quot;100dp&quot;
        android:valueType=&quot;floatType&quot;
        android:propertyName=&quot;translationX&quot;
        android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;
    &amp;lt;objectAnimator
        android:interpolator=&quot;@android:interpolator/decelerate_quint&quot;
        android:valueFrom=&quot;1.0&quot; android:valueTo=&quot;0.0&quot;
        android:valueType=&quot;floatType&quot;
        android:propertyName=&quot;alpha&quot;
        android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;
&amp;lt;/set&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Now the activity that do all the transactions in the Fragment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FragmentCustomAnimations.java&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;package com.example.fragmentcustomanimations;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

/**
 * Demonstrates the use of custom animations in a FragmentTransaction when
 * pushing and popping a stack.
 */
public class FragmentCustomAnimations extends Activity {
    int mStackLevel = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_stack);

        // Watch for button clicks.
        Button button = (Button)findViewById(R.id.new_fragment);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                addFragmentToStack();
            }
        });

        if (savedInstanceState == null) {
            // Do first time initialization -- add initial fragment.
            Fragment newFragment = CountingFragment.newInstance(mStackLevel);
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.add(R.id.simple_fragment, newFragment).commit();
        } else {
            mStackLevel = savedInstanceState.getInt(&quot;level&quot;);
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(&quot;level&quot;, mStackLevel);
    }


    void addFragmentToStack() {
        mStackLevel++;

        // Instantiate a new fragment.
        Fragment newFragment = CountingFragment.newInstance(mStackLevel);

        // Add the fragment to the activity, pushing this transaction
        // on to the back stack.
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.setCustomAnimations(R.animator.fragment_slide_left_enter,
                R.animator.fragment_slide_left_exit,
                R.animator.fragment_slide_right_enter,
                R.animator.fragment_slide_right_exit);
        ft.replace(R.id.simple_fragment, newFragment);
        ft.addToBackStack(null);
        ft.commit();
    }

    public static class CountingFragment extends Fragment {
        int mNum;
        /**
         * Create a new instance of CountingFragment, providing &quot;num&quot;
         * as an argument.
         */
        static CountingFragment newInstance(int num) {
            CountingFragment f = new CountingFragment();

            // Supply num input as an argument.
            Bundle args = new Bundle();
            args.putInt(&quot;num&quot;, num);
            f.setArguments(args);

            return f;
        }

        /**
         * When creating, retrieve this instance's number from its arguments.
         */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mNum = getArguments() != null ? getArguments().getInt(&quot;num&quot;) : 1;
        }

        /**
         * The Fragment's UI is just a simple text view showing its
         * instance number.
         */
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View v = inflater.inflate(R.layout.hello_world, container, false);
            View tv = v.findViewById(R.id.text);
            ((TextView)tv).setText(&quot;Fragment #&quot; + mNum);
            tv.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.gallery_thumb));  
            return v;
        }
    }

}
&lt;/pre&gt;
&lt;p&gt;You can download the complete source code from &lt;a href=&quot;https://dl.dropboxusercontent.com/u/91846918/FragmentCustomAnimations.zip&quot; target=&quot;_blank&quot; title=&quot;Download complete source code&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&quot;post-5521-linkbox&quot; class=&quot;su-linkbox&quot;&gt;&lt;div class=&quot;su-linkbox-label&quot;&gt;Link to this post!&lt;/div&gt;&lt;div class=&quot;su-linkbox-field&quot;&gt;&lt;input readonly=&quot;readonly&quot; type=&quot;text&quot; style=&quot;width: 100%;&quot; value=&quot;&amp;lt;a href=&amp;quot;http://www.coderzheaven.com/2013/06/13/custom-animations-fragmenttransaction-pushing-popping-stack-apply-animations-fragments-pushing-stack/&amp;quot;&amp;gt;Use of custom animations in a FragmentTransaction when pushing and popping a stack. or How to apply animations in Fragments when pushing on to a stack?&amp;lt;/a&amp;gt;&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;crp_related&quot;&gt;&lt;h3&gt;&lt;font color=&quot;#FF0000&quot;&gt;More Similar Posts &lt;/font&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2013/06/06/initialize-fragements-attributes-bundle-runtime-attributes-layout/&quot; class=&quot;crp_title&quot;&gt;How to initialize a Fragements with attributes as a Bundle…&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2013/06/05/hide-show-fragment-animation-android-retain-state-fragment-android/&quot; class=&quot;crp_title&quot;&gt;How to hide and show a Fragment with animation in Android?…&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2012/04/28/zoom-in-animation-between-two-activities/&quot; class=&quot;crp_title&quot;&gt;Zoom In animation between Two Activities.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2013/06/09/display-context-menu-fragment/&quot; class=&quot;crp_title&quot;&gt;How to display a context menu from a fragment?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.coderzheaven.com/2013/02/17/create-layouts-change-phone-tablet-android-fragments/&quot; class=&quot;crp_title&quot;&gt;How to create layouts that change according to the phone and&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-06-13T17:01:50+00:00</dc:date>
	<dc:creator>James</dc:creator>
</item>
<item rdf:about="http://mobilemoo.com/?p=28839">
	<title>Google And Blog: Is Your Cell Phone Private When Others are Involved?</title>
	<link>http://mobilemoo.com/consumer-corner/consumer-issues/is-your-cell-phone-private-when-others-are-involved/</link>
	<content:encoded>&lt;p&gt;&lt;/p&gt;&lt;p&gt;The government &lt;a href=&quot;http://online.wsj.com/article/SB10001424127887324299104578528181094177900.html&quot;&gt;can access your phone records&lt;/a&gt;. We all pretty much knew that all along, but last week’s revelation of the NSA’s PRISM program confirmed everything we knew, and some that we didn’t. The conversation about privacy has taken center stage on a national level. Yet despite the outrage, a recent poll from Pew Research Center suggests that most Americans are &lt;a href=&quot;http://www.people-press.org/2013/06/10/majority-views-nsa-phone-tracking-as-acceptable-anti-terror-tactic/&quot;&gt;okay with the government seeking call records&lt;/a&gt; — though “to investigate terrorism” seems like a key clause. &lt;/p&gt;
&lt;p&gt;Another issue of cell phone privacy arose yesterday, but not on a national level. In the State of New Jersey, where I happen to reside, a local legislator has proposed a bill that would grant police officers the ability to search cell phone records in the case of car accidents. Operating a cell phone without a hands-free unit is illegal in New Jersey, and the bill’s sponsor says that granting officers this ability to search will make it easier for them to do their jobs.&lt;/p&gt;
&lt;p&gt;In a way this makes sense. People text messaging while driving pose a hazard. The level of that hazard is up for debate, but it is a hazard in any case. Unfortunately, it is difficult to determine, for the sake of the accident repot and ensuing investigation, whether a driver was distracted by a cell phone. The bill would allow officers to find out on the spot. &lt;/p&gt;
&lt;p&gt;Before we even get to the privacy issue, there is certainly one of effectiveness. If there is a passenger in the car, there’s essentially no way to prove wrongdoing on the part of the driver. Both parties can agree that it was the passenger who was operating the phone, and there’s little anyone can do to disprove that. Similarly, even if the driver were talking without a hands-free device, as long as he or she had such a device it would become a mitigating factor. &lt;/p&gt;
&lt;p&gt;In terms of privacy, it’s understandable why people would be uncomfortable handing over their phones. If the officer doesn’t understand the smartphone operating system it can take many clicks to find the relevant information. In the process they can discover information they have no right seeing, and can then use that information against the phone’s owner. And how many &lt;a href=&quot;http://m.youtube.com/#/watch?v=0CVsjW-vtAI&amp;amp;desktop_uri=%2Fwatch%3Fv%3D0CVsjW-vtAI&quot;&gt;abuse of power cases&lt;/a&gt; do we see from cops? Too many to make people comfortable with this kind of bill, I think.&lt;/p&gt;
&lt;p&gt;Perhaps if I could watch over the office while he or she looked for the relevant information, I’d be more amenable to the bill. Then again, police &lt;a href=&quot;http://www.alternet.org/civil-liberties/cops-beat-woman-filming-another-beating&quot;&gt;don’t like it when citizens monitor them&lt;/a&gt;. More than likely this would turn into another unchecked privilege for law enforcement, which they would use to further solidify their power base. The more unchecked power we give law enforcement, the more they’re going to abuse that power at our expense. &lt;/p&gt;
&lt;p&gt;The gist of the article is that this bill will likely make it all the way to the state, and perhaps federal, Supreme Court. As it should. This is the kind of issue we need to debate out in the open.&lt;/p&gt;
&lt;p&gt;Via &lt;a href=&quot;http://www.nj.com/politics/index.ssf/2013/06/license_registration_and_cell.html#incart_m-rpt-1&quot;&gt;NJ.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;http://mobilemoo.com/consumer-corner/consumer-issues/is-your-cell-phone-private-when-others-are-involved/&quot;&gt;Is Your Cell Phone Private When Others are Involved?&lt;/a&gt; appeared first on &lt;a href=&quot;http://mobilemoo.com&quot;&gt;MobileMoo&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=gKwoae2scV4:UAdbwYA_RAc:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=gKwoae2scV4:UAdbwYA_RAc:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?i=gKwoae2scV4:UAdbwYA_RAc:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=gKwoae2scV4:UAdbwYA_RAc:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=gKwoae2scV4:UAdbwYA_RAc:l6gmwiTKsz0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?d=l6gmwiTKsz0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=gKwoae2scV4:UAdbwYA_RAc:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?i=gKwoae2scV4:UAdbwYA_RAc:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=gKwoae2scV4:UAdbwYA_RAc:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?i=gKwoae2scV4:UAdbwYA_RAc:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-06-11T12:30:58+00:00</dc:date>
	<dc:creator>Joe Pawlikowski</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-5065195004001204478.post-1517248019187802401">
	<title>Android UI Patterns: Google's first pull-to-refresh - a good first try</title>
	<link>http://feedproxy.google.com/~r/AndroidUiDesignPatterns/~3/g_bys6SAFmg/googles-first-pull-to-refresh-good.html</link>
	<content:encoded>&lt;div style=&quot;text-align: left;&quot; dir=&quot;ltr&quot;&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-7AR_i_n4h5Y/UbYRg61JDyI/AAAAAAAARYY/SPgyR5HXtOY/s1600/pull.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-7AR_i_n4h5Y/UbYRg61JDyI/AAAAAAAARYY/SPgyR5HXtOY/s320/pull.png&quot; height=&quot;320&quot; border=&quot;0&quot; width=&quot;219&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
In the lastest gmail update Google added a new way to manually force a refresh. This new way isn't really completely new. It greatly reminds the Twitter's pull-to-refresh while it differs visually.&lt;br /&gt;
&lt;br /&gt;
Check out &lt;a href=&quot;https://vine.co/v/b3PUHJeQpFd&quot;&gt;this video&lt;/a&gt; &lt;a href=&quot;https://plus.google.com/u/0/102039483392781809822/posts&quot;&gt;Abhilash Kuduvalli&lt;/a&gt; uploaded to Vine to see how the gmail app works: &lt;a href=&quot;https://vine.co/v/b3PUHJeQpFd&quot;&gt;https://vine.co/v/b3PUHJeQpFd&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Pulling down the email list initiates an update. The update indicator itself replaces the action bar and disappears once the update is complete.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;Should you change your refresh button to this?&lt;/span&gt;&lt;/h2&gt;
No! This design pattern is something that has not yet found its form on Android. In fact, this is the very first time Google has done anything reminding the Twitter's pull-to-refresh in any of their apps. Expect this pattern to change before it endups in the &lt;a href=&quot;http://developer.android.com/design/patterns/index.html&quot;&gt;official design guidelines&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
However, if you're looking for something pull-to-refreshish and are not happy with Twitter's pull-to-refresh &lt;a href=&quot;https://plus.google.com/u/0/+ChrisBanes/posts&quot;&gt;Chris Banes&lt;/a&gt; has created a library for implementing something similar to the gmail's approach.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/chrisbanes/ActionBar-PullToRefresh&quot;&gt;ActionBar-PullToRefresh on github&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-8wJrp_OwAo0/UbZFEww64mI/AAAAAAAARcA/OjTq1dftQCM/s1600/framed_2013-06-10+23.26.53.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-8wJrp_OwAo0/UbZFEww64mI/AAAAAAAARcA/OjTq1dftQCM/s200/framed_2013-06-10+23.26.53.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://4.bp.blogspot.com/-3QLrn5zeKMA/UbZFFCqPaRI/AAAAAAAARcE/7vn960HK1dk/s1600/framed_2013-06-10+23.27.05.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-3QLrn5zeKMA/UbZFFCqPaRI/AAAAAAAARcE/7vn960HK1dk/s200/framed_2013-06-10+23.27.05.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://2.bp.blogspot.com/-ig-HWFXH1UI/UbZFFiCkIPI/AAAAAAAARcI/f6srkP1IBis/s1600/framed_2013-06-10+23.27.17.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-ig-HWFXH1UI/UbZFFiCkIPI/AAAAAAAARcI/f6srkP1IBis/s200/framed_2013-06-10+23.27.17.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-Rjc3fzQmgHc/UbZFhRQzJ5I/AAAAAAAARcg/_P12cTg5BYg/s1600/framed_2013-06-10+23.29.45.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-Rjc3fzQmgHc/UbZFhRQzJ5I/AAAAAAAARcg/_P12cTg5BYg/s200/framed_2013-06-10+23.29.45.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://2.bp.blogspot.com/-5Eqcd2XnWXA/UbZFhDxu2LI/AAAAAAAARcY/ziXUIHroJTc/s1600/framed_2013-06-10+23.29.38.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-5Eqcd2XnWXA/UbZFhDxu2LI/AAAAAAAARcY/ziXUIHroJTc/s200/framed_2013-06-10+23.29.38.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-5cqSOQWjJdE/UbZFhZHU1cI/AAAAAAAARcc/8rR3oEAaX0I/s1600/framed_2013-06-10+23.29.51.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-5cqSOQWjJdE/UbZFhZHU1cI/AAAAAAAARcc/8rR3oEAaX0I/s200/framed_2013-06-10+23.29.51.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;Twitter's pull-to-refresh vs. Google's pull-to-refresh&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
Pull-to-refresh is a pattern that has received &lt;a href=&quot;http://www.androiduipatterns.com/2012/03/pull-to-refresh-or-not.html&quot;&gt;mixed response&lt;/a&gt; on Android. I've been a fan of pull-to-refresh and like the pattern enough to use it in &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.androiduipatterns.mentionobserver&quot;&gt;my app&lt;/a&gt;. I'm not 100% sold on the gmail style though. My issue with it is that the interaction doesn't feel right. On touch screen we like to pull and swipe things. These gestures are pleasant as they react to our touch as we expect. That is also one of the strong points of twitter's pull-to-refresh approach. You pull the content down and it follows your finger.  Google's implementation does not follow the finger and the interaction is indirect. You pull down but the refresh indicator appears horizontally and doesn't really have any connection to your touch.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;
&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-qmlNPM-_xtQ/UbZG3Hx3IoI/AAAAAAAARc8/gXJhzgSs3iE/s1600/framed_2013-06-10+22.34.05.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-qmlNPM-_xtQ/UbZG3Hx3IoI/AAAAAAAARc8/gXJhzgSs3iE/s200/framed_2013-06-10+22.34.05.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://4.bp.blogspot.com/-r63UadAohUk/UbZG3D4FkSI/AAAAAAAARc4/M4ZqbO54OWc/s1600/framed_2013-06-10+22.34.17.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-r63UadAohUk/UbZG3D4FkSI/AAAAAAAARc4/M4ZqbO54OWc/s200/framed_2013-06-10+22.34.17.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-STZugFGoh1k/UbZG32je_9I/AAAAAAAARdA/DxuDZKRvRoQ/s1600/framed_2013-06-10+22.34.41.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-STZugFGoh1k/UbZG32je_9I/AAAAAAAARdA/DxuDZKRvRoQ/s200/framed_2013-06-10+22.34.41.png&quot; height=&quot;200&quot; border=&quot;0&quot; width=&quot;115&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
To me, the feel of disconnected interaction is enough to not to recommend the gmail style pull-to-refresh yet. I believe that Google will keep refining this pattern as well as take in community feedback and ideas before they make this pattern a part of the platform. This development is promising, however. I think this is a step to the right direction and we'll soon have something that works very well.&lt;br /&gt;
&lt;br /&gt;
Until then I'd recommend you to stick with the &lt;a href=&quot;https://github.com/chrisbanes/Android-PullToRefresh&quot;&gt;older approach&lt;/a&gt; or better yet, try to think how you don't need a manual update at all and keep your app's data fresh automatically.&lt;/div&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/AndroidUiDesignPatterns/~4/g_bys6SAFmg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-10T22:03:10+00:00</dc:date>
	<dc:creator>Juhani Lehtimäki</dc:creator>
</item>
<item rdf:about="http://commonsware.com/blog/2013/06/10/busy-coders-guide-android-development-4p9-released">
	<title>Mark Murphy: The Busy Coder's Guide to Android Development Version 4.9 Released</title>
	<link>http://commonsware.com/blog/2013/06/10/busy-coders-guide-android-development-4p9-released.html</link>
	<content:encoded>&lt;p&gt;Subscribers now have access to the latest release of &lt;a href=&quot;http://commonsware.com/Android&quot;&gt;The Busy Coder’s Guide to Android Development&lt;/a&gt;, known as Version 4.9, in all formats. Just log into &lt;a href=&quot;http://wares.commonsware.com&quot;&gt;your Warescription page&lt;/a&gt; and download away, or set up an account and subscribe!&lt;/p&gt;

&lt;p&gt;First off, I have removed the C2DM chapter, as anyone using C2DM has hopefully migrated to GCM instead. &lt;strong&gt;Subscribers still using C2DM should hold onto a copy of an earlier edition in addition to downloading newer ones!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beyond that, there are a fair number of improvements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The chapter on sensors, retired long ago, has been rewritten and restored&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;There is a new chapter on using &lt;strong&gt;&lt;code&gt;uiautomator&lt;/code&gt;&lt;/strong&gt; for UI testing&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;The book also has a new chapter on using the fused location provider, from the Play Services enhancements announced at Google I|O 2013&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;The advanced &lt;code&gt;ViewPager&lt;/code&gt; chapter was extended with a walkthrough of the usage and implementation of &lt;a href=&quot;https://github.com/commonsguy/cwac-pager&quot;&gt;&lt;code&gt;ArrayPagerAdapter&lt;/code&gt;, a more flexible fragment-based &lt;code&gt;PagerAdapter&lt;/code&gt; implementation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;The large-screen support chapter has a new version of the “EU4You” sample that uses &lt;code&gt;SlidingPaneLayout&lt;/code&gt; (also introduced at Google I|O 2013), and the sensor sample app also demonstrates &lt;code&gt;SlidingPaneLayout&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;The explanation of how resources are selected by the system was substantially overhauled&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;The coverage of Maps V2 was updated to reflect recent changes, such as being able to detect OpenGL ES 2.0 support at runtime (to fail over to another mapping option on older devices) and the deprecation of some location-tracking options&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;The book also sports various miscellaneous improvements and errata fixes, per usual&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, users of the book in APK format who were encountering problems using the action bar home affordance to return to the table of contents should no longer run into that issue.&lt;/p&gt;

&lt;p&gt;The next update (5.0!) is tentatively scheduled for mid-July.&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-10T12:57:43+00:00</dc:date>
	<dc:creator>Mark Murphy</dc:creator>
</item>
<item rdf:about="http://eurodroid.com/?p=8706">
	<title>EuroDroid: BBC Weather app hits Android</title>
	<link>http://eurodroid.com/2013/06/10/bbc-weather-app-hits-android/</link>
	<content:encoded>&lt;div style=&quot;float: right; margin-left: 10px;&quot; id=&quot;tweetbutton8706&quot; class=&quot;tw_button&quot;&gt;&lt;a href=&quot;http://redirectingat.com?id=1426X523712&amp;amp;xs=1&amp;amp;url=http%3A%2F%2Ftwitter.com%2Fshare%3Furl%3Dhttp%253A%252F%252Feurodroid.com%252F%253Fp%253D8706%26amp%3Bvia%3DEurodroid%26amp%3Btext%3DBBC%2520Weather%2520app%2520hits%2520Android%26amp%3Brelated%3DGaryCutlack%3A...wrote%2Bthis%2Bin%2B45%2Bseconds%2Bflat.%26amp%3Blang%3Den%26amp%3Bcount%3Dhorizontal%26amp%3Bcounturl%3Dhttp%253A%252F%252Feurodroid.com%252F2013%252F06%252F10%252Fbbc-weather-app-hits-android%252F&amp;amp;sref=rss&quot; class=&quot;twitter-share-button&quot;&gt;Tweet&lt;/a&gt;&lt;/div&gt;&lt;p&gt;The BBC has launched a new Android app today, bringing us its classic weather forecast icon set along with a full mobile weather outlook. The app is simpler than many other rammed weather apps, offering a stylish prediction for the moment, which can be scrolled sideways for an hourly idea of future conditions. It also predicts wind speed, covers five days and lets you edit widget refresh frequency.&lt;/p&gt;
&lt;p&gt;The app’s Home screen widget is particularly pretty, and we have already dedicated a permanent slot to it. The app also includes DashClock integration from the off, NFC location sharing and Daydream display for your docking pleasure. Here it all is:&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://eurodroid.com/wp3/wp-content/uploads/2013/06/wpid-Screenshot_2013-06-10-08-06-301.png&quot;&gt;&lt;img src=&quot;http://eurodroid.com/wp3/wp-content/uploads/2013/06/wpid-Screenshot_2013-06-10-08-06-301.png&quot; alt=&quot;image&quot; title=&quot;Screenshot_2013-06-10-08-06-30.png&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://eurodroid.com/wp3/wp-content/uploads/2013/06/wpid-Screenshot_2013-06-10-08-08-261.png&quot;&gt;&lt;img src=&quot;http://eurodroid.com/wp3/wp-content/uploads/2013/06/wpid-Screenshot_2013-06-10-08-08-261.png&quot; alt=&quot;image&quot; title=&quot;Screenshot_2013-06-10-08-08-26.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;a href=&quot;http://eurodroid.com/wp3/wp-content/uploads/2013/06/wpid-Screenshot_2013-06-10-08-06-481.png&quot;&gt;&lt;img src=&quot;http://eurodroid.com/wp3/wp-content/uploads/2013/06/wpid-Screenshot_2013-06-10-08-06-481.png&quot; alt=&quot;image&quot; title=&quot;Screenshot_2013-06-10-08-06-48.png&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://eurodroid.com/wp3/wp-content/uploads/2013/06/wpid-Screenshot_2013-06-10-08-07-391.png&quot;&gt;&lt;img src=&quot;http://eurodroid.com/wp3/wp-content/uploads/2013/06/wpid-Screenshot_2013-06-10-08-07-391.png&quot; alt=&quot;image&quot; title=&quot;Screenshot_2013-06-10-08-07-39.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s going to rain on Wednesday, but that’s OK as I’m already getting bored of watering the runner beans. The BBC Weather app is on Google Play &lt;a href=&quot;http://redirectingat.com?id=1426X523712&amp;amp;xs=1&amp;amp;url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dbbc.mobile.weather&amp;amp;sref=rss&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;div id=&quot;wp_rp_first&quot; class=&quot;wp_rp_wrap  wp_rp_vertical_m&quot;&gt;&lt;div class=&quot;wp_rp_content&quot;&gt;&lt;h3 class=&quot;related_post_title&quot;&gt;Related Posts&lt;/h3&gt;&lt;ul class=&quot;related_post wp_rp&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://eurodroid.com/2013/05/07/samsung-galaxy-note-jelly-bean-update-now-live-for-unlocked-phones/&quot; class=&quot;wp_rp_title&quot;&gt;Samsung Galaxy Note Jelly Bean update now live for unlocked phones&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://eurodroid.com/2013/05/16/segas-original-sonic-the-hedgehog-out-on-android/&quot; class=&quot;wp_rp_title&quot;&gt;Sega’s original Sonic The Hedgehog out on Android&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://eurodroid.com/2013/04/03/sound-search-for-google-play-now-accessible-in-the-uk/&quot; class=&quot;wp_rp_title&quot;&gt;Sound Search for Google Play now accessible in the UK&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://eurodroid.com/2013/03/26/bbc-creates-live-prediction-companion-app-for-the-voice/&quot; class=&quot;wp_rp_title&quot;&gt;BBC creates live prediction companion app for The Voice&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-06-10T06:50:57+00:00</dc:date>
	<dc:creator>Gary_C</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-6843566830671277353.post-303007291884925752">
	<title>Chet Haase: DevBytes: Custom Activity Animations</title>
	<link>http://graphics-geek.blogspot.com/2013/06/devbytes-custom-activity-animations.html</link>
	<content:encoded>It's Friday: time for another DevBytes.&lt;br /&gt;
&lt;br /&gt;
It's been a while, but they're back. At least until the queue runs out again and I write another glut of demos to talk about.&lt;br /&gt;
&lt;br /&gt;
This episode, and most of the upcoming ones (teaser alert!) are around demos/code that we showed in A Moving Experience, the animation talk that +Romain Guy and I gave at Google I/O 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Custom Activity Animations&lt;/b&gt;:&lt;br /&gt;
Window animations provide an easy way to animate transitions between activities. The animations can be customized to some extent, but there's only so much interaction between the launching and launched activities that you can take advantage of with the standard window animations.&lt;br /&gt;
This episode covers a different technique for fully customizable animations.&lt;br /&gt;
&lt;br /&gt;
Video: &lt;a href=&quot;http://www.youtube.com/watch?v=CPxkoe2MraA&quot;&gt;http://www.youtube.com/watch?v=CPxkoe2MraA&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Code: &lt;a href=&quot;http://developer.android.com/shareables/devbytes/ActivityAnimations.zip&quot;&gt;http://developer.android.com/shareables/devbytes/ActivityAnimations.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content:encoded>
	<dc:date>2013-06-07T16:28:00+00:00</dc:date>
	<dc:creator>Chet Haase</dc:creator>
</item>
<item rdf:about="http://mobilemoo.com/?p=28835">
	<title>Google And Blog: Android Stock Keyboard Now Available in Google Play</title>
	<link>http://mobilemoo.com/android/android-apps/android-stock-keyboard-now-available-in-google-play/</link>
	<content:encoded>&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://mobilemoo.com/wp-content/uploads/2013/06/androidstockkeyboard.jpg&quot; alt=&quot;androidstockkeyboard&quot; height=&quot;588&quot; class=&quot;aligncenter size-full wp-image-28836&quot; width=&quot;550&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It might not sound like a big deal, but for Android users who find themselves frustrated with the available keyboard options it’s a boon. When I first got the Nexus One three-plus years ago, I absolutely loved the stock keyboard. I tried out SwiftKey and some alternatives, but stock ruled the day. The stock keyboard has gotten even better since then. That’s bittersweet news to Galaxy S3 users, because the Samsung keyboard is, well, not that great.&lt;/p&gt;
&lt;p&gt;Earlier this year I raved about how &lt;a href=&quot;http://mobilemoo.com/android/android-apps/swiftkey-4-brings-the-best-android-keyboard-experience/&quot;&gt;SwiftKey is the best Android keyboard&lt;/a&gt;. What I meant was it was the best Android keyboard available for everyone (and for people who don’t like Swype, because people who like Swype &lt;em&gt;love&lt;/em&gt; Swype). At the time the stock keyboard was left to those who had Nexus units or rooted their phones and used the stock version available through ROMs like CyanogenMod. &lt;/p&gt;
&lt;p&gt;Yesterday Google mercifully released the stock keyboard in the Google Play Store, allowing anyone to download it in all its glory. Truth told, it’s not all that much better than Swiftkey, and it might not be any better at all. It will depend largely on user feel. But after typing away a few messages, I have a few notes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On SwiftKey I routinely misfire when trying to type A, hitting the caps lock button instead. That is not an issue with the stock Android keyboard.&lt;/li&gt;
&lt;li&gt;Almost everyone misfires occasionally when going for the space bar, hitting B or N instead. A good autocorrect, as you’ll find on Swype, will find two words with a B or N in between and insert the space there. So far the Android default keyboard has not done that yet.&lt;/li&gt;
&lt;li&gt;Two settings I suggest changing: flip autocorrect to “aggressive” if you type very quickly (yet even this did not fix the space bar misfire issue) and uncheck the filter for obscene words. I’m sure you use them, and am equally sure you hate getting the f-word (hey, this is a family site) autocorrected to duck for no good reason.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.inputmethod.latin&quot;&gt;get the Android stock keyboard&lt;/a&gt; at Google Play.&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;http://mobilemoo.com/android/android-apps/android-stock-keyboard-now-available-in-google-play/&quot;&gt;Android Stock Keyboard Now Available in Google Play&lt;/a&gt; appeared first on &lt;a href=&quot;http://mobilemoo.com&quot;&gt;MobileMoo&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=Jfq8wvLCShk:iXBslKSoQxI:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=Jfq8wvLCShk:iXBslKSoQxI:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?i=Jfq8wvLCShk:iXBslKSoQxI:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=Jfq8wvLCShk:iXBslKSoQxI:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=Jfq8wvLCShk:iXBslKSoQxI:l6gmwiTKsz0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?d=l6gmwiTKsz0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=Jfq8wvLCShk:iXBslKSoQxI:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?i=Jfq8wvLCShk:iXBslKSoQxI:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?a=Jfq8wvLCShk:iXBslKSoQxI:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/GoogleAndBlog?i=Jfq8wvLCShk:iXBslKSoQxI:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-06-07T12:30:58+00:00</dc:date>
	<dc:creator>Joe Pawlikowski</dc:creator>
</item>
<item rdf:about="http://slideme.org/3421536 at http://slideme.org">
	<title>SlideME: Streamline Your Application Distribution with SlideME’s AppDF Support</title>
	<link>http://slideme.org/blog/streamline-your-application-distribution-with-slideme-appdf-support</link>
	<content:encoded>&lt;span id=&quot;docs-internal-guid-35e05cd3-1946-ca80-0268-175dfe3ad7db&quot;&gt;&lt;p style=&quot;margin-top: 0pt; margin-bottom: 0pt;&quot; dir=&quot;ltr&quot;&gt;&lt;span style=&quot;line-height: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0pt; margin-bottom: 0pt;&quot; dir=&quot;ltr&quot;&gt;&lt;span style=&quot;line-height: 14px;&quot;&gt;&lt;a href=&quot;http://slideme.org&quot; target=&quot;_blank&quot; title=&quot;SlideME Marketplace&quot;&gt;SlideME&lt;/a&gt; has teamed up with the &lt;a href=&quot;http://onepf.org&quot; target=&quot;_blank&quot; title=&quot;One Platform Foundation&quot;&gt;One Platform Foundation&lt;/a&gt; to help developers distribute their applications across multiple stores. With the App Description File (&lt;a href=&quot;http://onepf.org/appdf&quot; target=&quot;_blank&quot; title=&quot;&quot;&gt;AppDF&lt;/a&gt;) format, you can create a single file that describes your app and can be uploaded to multiple app stores. Within the AppDF file, you can combine your application’s market description, screenshots, the APK, promo graphics, icons, and video files.This will not only save you time, but helps in part to reduce the fragmentation of the Android ecosystem.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0pt; margin-bottom: 0pt;&quot; dir=&quot;ltr&quot;&gt;&lt;span style=&quot;line-height: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; margin-top: 0pt; margin-bottom: 0pt;&quot; dir=&quot;ltr&quot;&gt;&lt;img src=&quot;http://slideme.org/files/appdf-580x383.png&quot; align=&quot;none&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;a href=&quot;http://slideme.org/blog/streamline-your-application-distribution-with-slideme-appdf-support&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-07T11:15:07+00:00</dc:date>
	<dc:creator>SlideME</dc:creator>
</item>
<item rdf:about="http://www.helloandroid.com/685146 at http://www.helloandroid.com">
	<title>Hello Android: Insights from Google I/O 2013: How to Make Money from Android App Development</title>
	<link>http://www.helloandroid.com/content/insights-google-io-2013-how-make-money-android-app-development</link>
	<content:encoded>&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.helloandroid.com/files/mobileplugin/180x180/0b2c94e222659c7f272335319d03ff46.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In comparison to iOS app, Android apps makes less money. Google may impress with its marketshare, but &lt;a href=&quot;http://tech.fortune.cnn.com/2013/04/08/apple-google-mobile-apps-canalys/&quot; target=&quot;_blank&quot;&gt;Apple is the leader&lt;/a&gt; when it comes to making money from apps. Google has been trying hard since a year and a half to create tools and systems to simplify the development and monetizing of Android apps. The Google Play Developer Console, launched in 2012, made the task of creating and publishing apps a little easier. But it was not enough.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.helloandroid.com/content/insights-google-io-2013-how-make-money-android-app-development&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-06T07:12:18+00:00</dc:date>
	<dc:creator>Guest</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-6755709643044947179.post-4924070098614596384">
	<title>Android Developers: Google Play Developer 8-Step Checkup</title>
	<link>http://feedproxy.google.com/~r/blogspot/hsDu/~3/jhn2IUQtHyU/google-play-developer-8-step-checkup.html</link>
	<content:encoded>&lt;div style=&quot;float: right; padding-right: 0;&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-LeK74UYY1eM/UbD8L-2DpFI/AAAAAAAACZA/YMjwndr-ZgM/s400/DoctorDroidV2.png&quot; alt=&quot;checkup_droid&quot; style=&quot;margin-bottom: 0; margin-right: 0em; padding: 0 1.5em 1.5em 1.5em;&quot; width=&quot;220&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Posted by &lt;a href=&quot;https://plus.google.com/100189531984607939401/posts&quot;&gt;Ellie Powers&lt;/a&gt;, Google Play team&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Google Play gives you tons of options on publishing your apps and connecting with users. But as you get started with new features like beta testing and staged rollouts, it’s a good idea to do a checkup and make sure you’ve covered the basics.&lt;/p&gt;

&lt;h3&gt;1. Boost your developer account security&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;If you take just one step today to protect your Google Play apps, enable &lt;a href=&quot;http://www.google.com/landing/2step/&quot;&gt;two-step authentication&lt;/a&gt; for your Google account, and encourage the rest of your team to do the same.&lt;/li&gt;
&lt;li&gt;Next, many developers first set up their Google Play account with their personal gmail account, but it’s actually a good idea to transfer your apps to a separate account. All of your installations and reviews remain intact. If you haven’t done this already, &lt;a href=&quot;https://support.google.com/googleplay/android-developer/answer/139626?hl=en&quot;&gt;transfer your apps&lt;/a&gt; to a new account today.&lt;/li&gt;
&lt;li&gt;Don’t share passwords. Instead, &lt;a href=&quot;https://support.google.com/googleplay/android-developer/answer/2528691?hl=en&quot;&gt;add each individual&lt;/a&gt; who needs access and only grant the minimum level of access they need — and encourage them to enable two-step authentication.&lt;/li&gt;
&lt;li&gt;Review the list of people with access regularly, and when people leave your project, make it a standard practice to remove their access. Learn more about &lt;a href=&quot;https://support.google.com/googleplay/android-developer/answer/2543765&quot;&gt;developer account security&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;margin-top: 1.25em;&quot;&gt;2. Protect your keystore&lt;/h3&gt;
&lt;p&gt;In order to publish an update to an existing app, you’ll need to sign it with the same keystore every time. If you lose your keystore, you’ll lose your history and reviews, so you’ll need to start over with new apps with new package name and a new key, so you’ll want to make sure you protect it. First, choose a secure password, and don’t use the same password that you use for your Google account. Next, back up your keystore somewhere, but don’t upload it to Google Drive with an account you use to publish on Google Play.&lt;/p&gt;

&lt;h3&gt;3. Check your email addresses&lt;/h3&gt;
&lt;p&gt;As a developer, you are responsible for checking two important email addresses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Account owner email address: Google uses the address used to register your Developer Console to contact you about your apps and account, so it is extremely important that someone is responsible for checking it regularly. If necessary, you can &lt;a href=&quot;https://support.google.com/mail/answer/10957?hl=en&quot;&gt;forward messages&lt;/a&gt; from this account via Gmail, or &lt;a href=&quot;https://support.google.com/googleplay/android-developer/answer/139626?hl=en&quot;&gt;transfer&lt;/a&gt; your apps to another account.&lt;/li&gt;
&lt;li&gt;Customer support email address: For each individual application, you can specify the best way for users to contact you for customer support. Ensure that a valid support email address for your product is specified. As a best practice, this should probably be a designated support account that is checked regularly and not the same email as the address used to login to the Developer Console.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;margin-top: 1.25em;&quot;&gt;4. Familiarize yourself with the policies&lt;/h3&gt;
&lt;p&gt;We recently launched some &lt;a href=&quot;http://developer.android.com/distribute/googleplay/policies/index.html&quot;&gt;new guides and examples&lt;/a&gt; for Google Play’s &lt;a href=&quot;http://play.google.com/about/developer-content-policy.html&quot;&gt;Developer Program Policies&lt;/a&gt; and &lt;a href=&quot;http://play.google.com/about/developer-distribution-agreement.html&quot;&gt;Developer Distribution Agreement&lt;/a&gt;. Note that once you publish an app as free, you can’t change it to a paid app later, though you can add in-app products. &lt;/p&gt;

&lt;h3&gt;5. Set up team processes&lt;/h3&gt;
&lt;p&gt;You may have many people involved with your Google Play apps. Make sure roles are clear in terms of whose job it is to publish updates, check statistics and &lt;a href=&quot;http://android-developers.blogspot.co.uk/2013/04/tablet-optimization-tips-in-google-play.html&quot;&gt;optimization tips&lt;/a&gt;, read and reply to user reviews, and track revenue. Make sure all of these people have the right access to the Developer Console. Many developers who are part of larger organizations also report to their larger teams about their apps’ performance. Designate someone to make sure your app description, graphics (including &lt;a href=&quot;http://android-developers.blogspot.co.uk/2012/12/localize-your-promotional-graphics-on.html&quot;&gt;localized&lt;/a&gt; and &lt;a href=&quot;http://android-developers.blogspot.co.uk/2013/04/update-on-tablet-app-guidelines-and.html&quot;&gt;tablet&lt;/a&gt; screenshots), and pricing are up to date.&lt;/p&gt;

&lt;h3&gt;6. Configure your Developer Console UI languages&lt;/h3&gt;
&lt;p&gt;To change the language you want to see the Developer Console in, &lt;a href=&quot;http://accounts.google.com/&quot;&gt;set your primary language&lt;/a&gt;. If you speak additional languages, configure those, too — user reviews in those languages won’t be translated automatically in the Developer Console. That was a popular request from developers.&lt;/p&gt;

&lt;h3&gt;7. Refresh your app’s marketing materials&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Optimize your Google Play image assets. Include a &lt;a href=&quot;http://android-developers.blogspot.com/2011/10/android-market-featured-image.html&quot;&gt;well designed feature graphic&lt;/a&gt; in your Google Play listing. &lt;a href=&quot;http://android-developers.blogspot.com/2012/12/localize-your-promotional-graphics-on.html&quot;&gt;Localize&lt;/a&gt; your feature graphic, screenshots and description to improve conversions globally. Create a great looking icon with the &lt;a href=&quot;http://android-ui-utils.googlecode.com/hg/asset-studio/dist/icons-launcher.html&quot;&gt;Launcher Icon Generator&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://android-developers.blogspot.com/2013/04/update-on-tablet-app-guidelines-and.html&quot;&gt;Provide screenshots&lt;/a&gt; specifically for phones and tablets showing both portrait and landscape layouts.&lt;/li&gt;
&lt;li&gt;Improve your app’s marketing. Users are 47% more likely to trust &amp;amp; download content when you use the &lt;a href=&quot;http://developer.android.com/distribute/googleplay/promote/badges.html&quot;&gt;official Google Play Badge&lt;/a&gt;. Also, make sure you are &lt;a href=&quot;http://developer.android.com/distribute/googleplay/promote/linking.html&quot;&gt;linking to your apps properly&lt;/a&gt;. Use the &lt;a href=&quot;http://developer.android.com/distribute/promote/device-art.html&quot;&gt;Device Art Generator&lt;/a&gt; to create beautiful marketing material.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;margin-top: 1.25em;&quot;&gt;8. Stay on top of developer news&lt;/h3&gt;
&lt;p&gt;To make sure you’re aware of the latest Google Play updates for developers, make sure you check the &lt;a href=&quot;http://android-developers.blogspot.com/&quot;&gt;Android Developers blog&lt;/a&gt; regularly, follow &lt;a href=&quot;https://plus.google.com/+AndroidDevelopers/posts&quot;&gt;+Android Developers&lt;/a&gt;, and check the &lt;a href=&quot;https://play.google.com/apps/publish/&quot;&gt;Developer Console&lt;/a&gt; regularly for announcements.&lt;/p&gt;
&lt;div style=&quot;display: inline-block; float: right; line-height: 0;&quot;&gt;&lt;div style=&quot;float: left;&quot;&gt;&lt;a style=&quot;color: #333333; text-decoration: none;&quot; href=&quot;https://plus.google.com/108967384991768947849/posts/XUpKTFdLioN&quot;&gt;&lt;span&gt;Join the discussion on&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a style=&quot;color: #333333; text-decoration: none;&quot; href=&quot;https://plus.google.com/108967384991768947849/posts/XUpKTFdLioN&quot;&gt;&lt;span&gt;+Android Developers&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;float: right;&quot;&gt;&lt;a style=&quot;color: #333333; text-decoration: none;&quot; href=&quot;https://plus.google.com/108967384991768947849/posts/XUpKTFdLioN&quot;&gt;&lt;img src=&quot;https://ssl.gstatic.com/images/icons/gplus-32.png&quot; style=&quot;border: 0;&quot; height=&quot;32&quot; width=&quot;32&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?a=jhn2IUQtHyU:jcbrc3FRFos:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?a=jhn2IUQtHyU:jcbrc3FRFos:-BTjWOF_DHI&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?i=jhn2IUQtHyU:jcbrc3FRFos:-BTjWOF_DHI&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/blogspot/hsDu/~4/jhn2IUQtHyU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-06T21:21:00+00:00</dc:date>
	<dc:creator>Android Developers</dc:creator>
</item>
<item rdf:about="http://www.helloandroid.com/685136 at http://www.helloandroid.com">
	<title>Hello Android: Google Play downloads look to overtake Apple by this fall</title>
	<link>http://www.helloandroid.com/content/google-play-downloads-look-overtake-apple-fall</link>
	<content:encoded>&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.helloandroid.com/files/mobileplugin/180x180/c3abb550e281701ba68f09c866c3ba5b.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We talk a lot of smack about Apple around here, and this time I’m going to try and be a little kinder. Let me begin by saying congrats to Apple as they recently celebrated their 50-billionth app download. Ok, the ability to be nice stops there as it has been announced that Android users are currently downloading 500-million more apps per month than Apple, and at that rate Andy will speed on by and be the most popular on the market by this fall.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.helloandroid.com/content/google-play-downloads-look-overtake-apple-fall&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-05T07:48:30+00:00</dc:date>
	<dc:creator>morta</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-6755709643044947179.post-7517804471679522815">
	<title>Android Developers: Bootstrap Your App's Cloud Services with Mobile Backend Starter</title>
	<link>http://feedproxy.google.com/~r/blogspot/hsDu/~3/GHcpSoJ9-8Q/bootstrap-your-apps-cloud-services-with.html</link>
	<content:encoded>&lt;em&gt;Posted by &lt;a href=&quot;https://plus.google.com/u/0/106920059607812615730/&quot;&gt;Brad Abrams&lt;/a&gt;, Product Manager, Google Cloud Platform&lt;/em&gt;

&lt;p&gt;Many of the best mobile app experiences are powered by services in the cloud. Top Android developers such as &lt;a href=&quot;https://cloud.google.com/files/Pulse.pdf&quot;&gt;Pulse&lt;/a&gt; and &lt;a href=&quot;http://googlecloudplatform.blogspot.com/2013/02/scaling-songpop-to-60-million-users.html&quot;&gt;SongPop&lt;/a&gt; have long taken advantage of the convenience and scalability of Google's cloud platform in their businesses.  Now with the Mobile Backend Starter, it's even easier to add cloud services to your apps.&lt;/p&gt;

&lt;h3&gt;Mobile Backend Starter&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.google.com/cloud/samples/mbs/&quot;&gt;Mobile Backend Starter&lt;/a&gt; is a one-click deployable, complete mobile backend that allows you to reap the benefits of a cloud backend with none of the headaches. It provides a ready-to-deploy, general purpose cloud backend and a general purpose client-side framework for Android.&lt;/p&gt;

&lt;p&gt;Mobile Backend Starter gives you everything you need to rapidly set up a backend for your app, without needing to write any backend code. It includes a server that stores your data with App Engine and a client library and sample app for Android that make it easy to access that data. You can also add support for &lt;a href=&quot;http://developer.android.com/google/gcm/index.html&quot;&gt;Google Cloud Messaging&lt;/a&gt; (GCM) and continuous queries that notify your app of events you are interested in. To keep user data secure, Mobile Backend Starter also includes built-in support for Google Authentication. &lt;/p&gt;

&lt;img src=&quot;http://1.bp.blogspot.com/-D8LYzm_37WY/UavHwpvzRyI/AAAAAAAACYY/zA6OcdPbx3o/s1600/mobile-backend-arch.png&quot; style=&quot;margin: 0 50px; padding: 0;&quot; border=&quot;0&quot; /&gt;

&lt;p style=&quot;margin-top: 0;&quot;&gt;Features of Mobile Backend Starter include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Cloud data storage&lt;/em&gt;: Users change devices and increasingly use multiple devices. Store any amount of data per user in the cloud to be accessed from anywhere.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Pub/Sub messaging&lt;/em&gt;: Send messages from one device, to any or all other devices. You can easily use 1:1 and 1:many messaging as well as broadcasting.  This feature is useful for various applications including social apps, forums, chat, gaming, and group collaborations.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Push notifications&lt;/em&gt;: Data updated on one device is automatically available on all devices with GCM for Android.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Continuous queries&lt;/em&gt;: Create queries that run continuously on the server, automatically feeding updates to the client.  These queries are powered by  &lt;a href=&quot;https://developers.google.com/appengine/docs/java/prospectivesearch/&quot;&gt;Prospective Search&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Google authentication and authorization&lt;/em&gt;: Keep data isolated per user or shared among users.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Free to get started, scales with your needs&lt;/em&gt;: You can start by handling hundreds of users for free, then grow to any scale.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 style=&quot;margin-top: 1.25em;&quot;&gt;Quick setup and integration&lt;/h3&gt;

&lt;p&gt;You can set up and run the Mobile Backend Starter in just few steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First, go to the &lt;a href=&quot;http://cloud.google.com/console&quot;&gt;Google Cloud Console&lt;/a&gt;, and create a project.  Then click &lt;strong&gt;Deploy&lt;/strong&gt;. 
&lt;img src=&quot;http://3.bp.blogspot.com/-N3SfWc2xc4M/Uauqu1JJwkI/AAAAAAAACYA/9b8f2wSh_kc/s1600/mobilebackend-crop.png&quot; style=&quot;border: 2px solid #ddd; padding: 0px; margin: 1em 0em; margin-left: 0em; width: 664px;&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Settings&lt;/strong&gt; to go to the admin control panel for your new backend. Under &lt;strong&gt;Authentication / Authorization&lt;/strong&gt;, select &quot;Open (for development use only)&quot; and save the changes.     
&lt;div style=&quot;float: right; padding-right: 0; margin: 1em 1em .5em 1em;&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-pOSygnEBT6s/Uau8T7czBiI/AAAAAAAACYM/eWaeVAQenV8/s1600/mobile-backend-app.png&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;&lt;/li&gt;


&lt;li&gt;Next, download the &lt;a href=&quot;https://developers.google.com/cloud/samples/mbs/&quot;&gt;Android client project&lt;/a&gt; and open it up in your Android IDE. Locate the &lt;code&gt;Consts.java&lt;/code&gt; file and set the &lt;code&gt;PROJECT_ID&lt;/code&gt; to the Project ID of the project you created in the Google Cloud Console.  &lt;/li&gt;
&lt;li&gt;Now just build and run the Android application and you have a cloud enabled Android application.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Check out the &lt;a href=&quot;https://developers.google.com/cloud/samples/mbs/getting_started&quot;&gt;complete docs&lt;/a&gt; for details on setup as well as information on how to enable authentication, send push notifications, and use standing queries. &lt;/p&gt;

&lt;p&gt;The best part is you can download the complete &lt;a href=&quot;https://github.com/GoogleCloudPlatform/solutions-mobile-backend-starter-java&quot;&gt;source code of the backend on GitHub&lt;/a&gt; and customize it however you want to meet your needs.&lt;/p&gt;

&lt;h3&gt;See Mobile Backend Starter in action at Google I/O&lt;/h3&gt;

&lt;p&gt;To see Mobile Backend Starter in action, check out our talk at Google I/O 2013 (embedded below) called &quot;From Nothing to Nirvana in Minutes: Cloud Backend for Your Android Application&quot;. The talk shows how to use Mobile Backend Starter to create a new backend server and integrate it with an Android app via Google Cloud Endpoints and the Google Plugin for Eclipse. &lt;/p&gt;

&lt;p&gt;We look forward to hearing your questions and learning about the amazing applications you have built.  You can find us lurking on the &lt;a href=&quot;http://stackoverflow.com/questions/tagged/google-cloud-endpoints&quot;&gt;Cloud Endpoints StackOverflow forum&lt;/a&gt;.&lt;/p&gt;

&lt;br /&gt;
    &lt;br /&gt;
&lt;div style=&quot;display: inline-block; float: right; line-height: 0;&quot;&gt;&lt;div style=&quot;float: left;&quot;&gt;&lt;a style=&quot;color: #333333; text-decoration: none;&quot; href=&quot;https://plus.google.com/108967384991768947849/posts/DiTmuUkzZPQ&quot;&gt;&lt;span&gt;Join the discussion on&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a style=&quot;color: #333333; text-decoration: none;&quot; href=&quot;https://plus.google.com/108967384991768947849/posts/DiTmuUkzZPQ&quot;&gt;&lt;span&gt;+Android Developers&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;float: right;&quot;&gt;&lt;a style=&quot;color: #333333; text-decoration: none;&quot; href=&quot;https://plus.google.com/108967384991768947849/posts/DiTmuUkzZPQ&quot;&gt;&lt;img src=&quot;https://ssl.gstatic.com/images/icons/gplus-32.png&quot; style=&quot;border: 0;&quot; height=&quot;32&quot; width=&quot;32&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?a=GHcpSoJ9-8Q:4QK87GNgW5o:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?a=GHcpSoJ9-8Q:4QK87GNgW5o:-BTjWOF_DHI&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/blogspot/hsDu?i=GHcpSoJ9-8Q:4QK87GNgW5o:-BTjWOF_DHI&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/blogspot/hsDu/~4/GHcpSoJ9-8Q&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-06-03T17:14:00+00:00</dc:date>
	<dc:creator>Android Developers</dc:creator>
</item>
<item rdf:about="http://sosiouxme.wordpress.com/?p=361">
	<title>Luke Meyer: Android and openness</title>
	<link>http://sosiouxme.wordpress.com/2011/06/11/android-and-openness/</link>
	<content:encoded>&lt;p&gt;On Thursday I gave a &lt;a href=&quot;http://trilug.org/2011-06-09/android&quot; target=&quot;_blank&quot;&gt;talk at TriLUG&lt;/a&gt;. The &lt;a href=&quot;https://docs.google.com/leaf?id=0B41WIpMINtBHYjdlOGE2OTUtMjJjZi00YjdkLWJkNTEtYzRlMzM5YmZmMjA3&amp;amp;hl=en_US&amp;amp;authkey=CI6BwvEE&quot; target=&quot;_blank&quot;&gt;slides I used are available&lt;/a&gt; but will probably be rather cryptic without my accompanying commentary.&lt;/p&gt;
&lt;p&gt;Although I understand that Google has had to contend with both the open source zealots and the closed-everything carriers, upon looking at the trend, I find Google’s actions getting more disturbing. Just as Android seems to be coming into its own and Google should have more power than ever to twist arms, Google seems to be wimping out – or turning evil. I hope I’m wrong and they’re just waiting for the right time.&lt;/p&gt;
&lt;p&gt;One thing I completely forgot to talk about is the abandoning of the Nexus One. When it came out, it was supposed to herald a new age of cross-carrier, stock-Android phones (with a built-in connection-sharing capability, no less). Only T-Mobile really picked it up – you could use it on AT&amp;amp;T but without 3G. Verizon and Sprint were supposed to be coming out with support for the same concept and just a different radio, but instead they released their own phones, with the usual modifications and constraints. So why did Google let them? They didn’t have to; the Skyhook case shows that Google can essentially pull their blessing from any phone for any reason. An Android phone without the Google apps isn’t going to be very attractive to consumers. Why didn’t Google force Verizon and Sprint to kowtow to the Nexus One before allowing them to release any more Android phones?&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/sosiouxme.wordpress.com/361/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/sosiouxme.wordpress.com/361/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=sosiouxme.wordpress.com&amp;amp;blog=10847948&amp;amp;post=361&amp;amp;subd=sosiouxme&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2011-06-12T00:59:54+00:00</dc:date>
	<dc:creator>Luke Meyer</dc:creator>
</item>
<item rdf:about="http://sosiouxme.wordpress.com/?p=353">
	<title>Luke Meyer: Is this thing on? ::feedback:: ouch…</title>
	<link>http://sosiouxme.wordpress.com/2011/03/31/is-this-thing-on-ouch/</link>
	<content:encoded>&lt;p&gt;Well – I don’t want to let the *entire* month of March go by without a post. I just haven’t done much with tech this month, though. It sucked. But evidently my absence has caused a surge in popularity, according to my stats. Less is more?&lt;/p&gt;
&lt;p&gt;If I remember correctly – is Honeycomb the first version of Android where we actually saw a preview, got to fiddle with the SDK platform preview before it was actually embodied in a device? If so, better late than never, and let’s hope it means we’re on the way to seeing more of a community effort. Hey, it took a while for Red Hat to learn with Fedora, too, and they didn’t have voracious proprietary partners to contend with.&lt;/p&gt;
&lt;p&gt;I have a meetup or two to arrange, but I hope I get some time to work further with ORMlite shortly.&lt;/p&gt;
&lt;p&gt;Happy April Fools Day tomorrow!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/sosiouxme.wordpress.com/353/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/sosiouxme.wordpress.com/353/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=sosiouxme.wordpress.com&amp;amp;blog=10847948&amp;amp;post=353&amp;amp;subd=sosiouxme&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2011-04-01T01:01:13+00:00</dc:date>
	<dc:creator>Luke Meyer</dc:creator>
</item>
<item rdf:about="http://marakana.com/s/post/1474/android_enterprise_security_at_andevcon">
	<title>Marakana: Android Enterprise Security at AnDevCon</title>
	<link>http://marakana.com/s/post/1474/android_enterprise_security_at_andevcon</link>
	<content:encoded>Android provides the plumbing to make it an enterprise-grade mobile platform of choice. This is a talk given at AnDevCon in Boston.</content:encoded>
	<dc:date>2013-05-29T14:36:00+00:00</dc:date>
	<dc:creator>Marko Gargenta</dc:creator>
</item>
<item rdf:about="http://marakana.com/s/post/1473/android_security_underpinnings_at_andevcon">
	<title>Marakana: Android Security Underpinnings at AnDevCon</title>
	<link>http://marakana.com/s/post/1473/android_security_underpinnings_at_andevcon</link>
	<content:encoded>Android Security Underpinnings explores how the Android security system is put together. This is a talk given at AnDevCon in Boston.</content:encoded>
	<dc:date>2013-05-29T14:31:00+00:00</dc:date>
	<dc:creator>Marko Gargenta</dc:creator>
</item>
<item rdf:about="http://www.curious-creature.org/?p=1796">
	<title>Romain Guy: Android sessions at Google I/O 2013</title>
	<link>http://www.curious-creature.org/2013/05/17/android-sessions-at-google-io-2013/</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;http://www.curious-creature.org/blog/wp-content/uploads/2013/05/Thumbnail-e1368822026925.png&quot; alt=&quot;Android IO&quot; class=&quot;aligncenter size-full wp-image-1798&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Google I/O 2013 is almost over but a lot of sessions are already available online. I gave three talks this year and you can watch them today on YouTube:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=NYtB6mlu7vA&quot;&gt;Writing Custom Views for Android&lt;/a&gt;, with Adam Powell&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=ihzZrS69i_s&quot;&gt;A Moving Experience&lt;/a&gt;, with Chet Haase&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=vQZFaec9NpA&quot;&gt;Android Graphics Performance&lt;/a&gt;, with Chet Haase&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition you can download the slide for the &lt;em&gt;Android Graphics Performance&lt;/em&gt; talk:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://dl.dropboxusercontent.com/u/16714463/Google%20IO%202013/Android%20Graphics%20Performance.zip&quot;&gt;Keynote&lt;/a&gt; (7MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dl.dropboxusercontent.com/u/16714463/Google%20IO%202013/Android%20Graphics%20Performance.pdf&quot;&gt;PDF&lt;/a&gt; (13MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dl.dropboxusercontent.com/u/16714463/Google%20IO%202013/Android%20Graphics%20Performance%20%28Notes%29.pdf&quot;&gt;PDF with notes&lt;/a&gt; (13MB)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And the slides for &lt;em&gt;A Moving Experience&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://sites.google.com/site/androidcontentfromchet/downloads/AMovingExperience.key&quot;&gt;Keynote&lt;/a&gt; (7MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sites.google.com/site/androidcontentfromchet/downloads/AMovingExperience.pdf&quot;&gt;PDF&lt;/a&gt; (13MB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sites.google.com/site/androidcontentfromchet/downloads/AMovingExperience-Notes.pdf&quot;&gt;PDF with notes&lt;/a&gt; (13MB)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have a copy of Keynote I recommend you choose this format to get both the notes and all the animations on the slides. Enjoy!&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-17T20:14:55+00:00</dc:date>
	<dc:creator>Romain Guy</dc:creator>
</item>
<item rdf:about="http://www.curious-creature.org/?p=1685">
	<title>Romain Guy: Launcher</title>
	<link>http://www.curious-creature.org/2013/01/02/launcher/</link>
	<content:encoded>&lt;p&gt;I recently discovered &lt;a href=&quot;http://mycolorscreen.com/&quot;&gt;MyColorScreen&lt;/a&gt; where Android users publish their beautiful home screen setups. I am impressed by the work and care that people put in customizing their home screen and I am also proud to see this because it’s exactly what we intended when we decided users could replace the default Launcher with their own.&lt;/p&gt;
&lt;p&gt;Since some of you asked to see my own setup, here it is. It’s basic and boring but very efficient for me.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.curious-creature.org/blog/wp-content/uploads/2013/01/launcher.png&quot;&gt;&lt;img src=&quot;http://www.curious-creature.org/blog/wp-content/uploads/2013/01/launcher_small.png&quot; alt=&quot;Launcher&quot; height=&quot;371&quot; class=&quot;aligncenter size-full wp-image-1686&quot; width=&quot;950&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-01-02T17:24:33+00:00</dc:date>
	<dc:creator>Romain Guy</dc:creator>
</item>
<item rdf:about="http://eurodroid.com/?p=8627">
	<title>EuroDroid: STATS: Android powers 58.4% of UK smartphone sales in 2013</title>
	<link>http://eurodroid.com/2013/04/29/stats-android-powers-58-4-of-the-uk-smartphone-market/</link>
	<content:encoded>&lt;div style=&quot;float: right; margin-left: 10px;&quot; id=&quot;tweetbutton8627&quot; class=&quot;tw_button&quot;&gt;&lt;a href=&quot;http://redirectingat.com?id=1426X523712&amp;amp;xs=1&amp;amp;url=http%3A%2F%2Ftwitter.com%2Fshare%3Furl%3Dhttp%253A%252F%252Feurodroid.com%252F%253Fp%253D8627%26amp%3Bvia%3DEurodroid%26amp%3Btext%3DSTATS%253A%2520Android%2520powers%252058.4%2525%2520of%2520UK%2520smartphone%2520sales%2520in%25202013%26amp%3Brelated%3DGaryCutlack%3A...wrote%2Bthis%2Bin%2B45%2Bseconds%2Bflat.%26amp%3Blang%3Den%26amp%3Bcount%3Dhorizontal%26amp%3Bcounturl%3Dhttp%253A%252F%252Feurodroid.com%252F2013%252F04%252F29%252Fstats-android-powers-58-4-of-the-uk-smartphone-market%252F&amp;amp;sref=rss&quot; class=&quot;twitter-share-button&quot;&gt;Tweet&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Analyst Kantar Worldpanel has issued some updated analysis of the UK and European smartphone scene, revealing that Android powered a whopping 58.4% of all smartphones sold in the UK during the three-month period to the end of March 2013. As in, the three months &lt;em&gt;before&lt;/em&gt; the Galaxy S4 and HTC One launched. It’s going higher.&lt;/p&gt;
&lt;p&gt;iOS is down as a result, dropping by 1.4% to take 28.9% of smartphone sales, while Windows Phone actually saw some GOOD NEWS for once – Microsoft’s mobile market share is up to 7% from the 2.9% it had in the same quarter of 2012. Smartphones accounted for 84% of all phone sales during the three-month period.&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://eurodroid.com/edpics3/galaxy_s4_official_13.jpg&quot;&gt;&lt;img src=&quot;http://eurodroid.com/edpics3/galaxy_s4_official_13-small.jpg&quot; alt=&quot;galaxy s4 official 13&quot; height=&quot;288&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bizarrely, Android’s absolutely SMASHING IT in Spain, where it holds an amazing 93.5% of the smartphone market according to Kantar’s stats. Good on you, Spain. Read more &lt;a href=&quot;http://redirectingat.com?id=1426X523712&amp;amp;xs=1&amp;amp;url=http%3A%2F%2Fwww.kantarworldpanel.com%2Fglobal%2FNews%2Fnews-articles%2FAndroid-set-to-spike-with-HTC-One-and-Samsung-Galaxy-S4-launches&amp;amp;sref=rss&quot;&gt;over at Kantar&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;wp_rp_wrap  wp_rp_vertical_m&quot;&gt;&lt;div class=&quot;wp_rp_content&quot;&gt;&lt;h3 class=&quot;related_post_title&quot;&gt;Related Posts&lt;/h3&gt;&lt;ul class=&quot;related_post wp_rp&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://eurodroid.com/2013/05/14/stats-samsung-dominant-in-q1-as-lg-doubles-smartphone-market-share/&quot; class=&quot;wp_rp_title&quot;&gt;STATS: Samsung dominant in Q1, LG doubles smartphone market share&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://eurodroid.com/2013/05/07/samsung-galaxy-note-jelly-bean-update-now-live-for-unlocked-phones/&quot; class=&quot;wp_rp_title&quot;&gt;Samsung Galaxy Note Jelly Bean update now live for unlocked phones&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://eurodroid.com/2013/04/01/android-took-58-3-of-mobile-os-sales-in-the-uk-last-quarter/&quot; class=&quot;wp_rp_title&quot;&gt;Android took 58.3% of smartphone sales in the UK last quarter&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://eurodroid.com/2013/03/14/gallery-samsung-galaxy-s-iv/&quot; class=&quot;wp_rp_title&quot;&gt;GALLERY: Samsung Galaxy S4&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-04-29T11:11:55+00:00</dc:date>
	<dc:creator>Gary_C</dc:creator>
</item>
<item rdf:about="http://cyrilmottier.com/2013/05/24/pushing-the-actionbar-to-the-next-level">
	<title>Cyril Mottier: Pushing the ActionBar to the next level</title>
	<link>http://cyrilmottier.com/2013/05/24/pushing-the-actionbar-to-the-next-level/</link>
	<content:encoded>&lt;p&gt;Back in November 2012, I wrote a blog post entitled ”&lt;a href=&quot;http://cyrilmottier.com/2012/11/27/actionbar-on-the-move/&quot;&gt;ActionBar on the Move&lt;/a&gt;”. This article was mainly dealing with a technique to nicely and uniquely animate your &lt;code&gt;ActionBar&lt;/code&gt;. Although I mentioned some of the  effect’s possible applications, I never had time to effectively add an &lt;code&gt;ActionBar&lt;/code&gt; animation to one of my own apps nor saw an application on the Play Store taking advantage of it.&lt;/p&gt;

&lt;p&gt;While being at Google I/O last week, I finally found an application using the &lt;code&gt;ActionBar&lt;/code&gt; animation technique. Let’s be honest, it literally blew my mind the first time I saw it. I felt in love with the nice, subtle and yet extremely useful animated effect probably more than the entire app itself! I am pretty sure you know the application I am talking about as it has been presented during the Google I/O keynote. You have also probably recently received an update of it: Play Music!&lt;/p&gt;




&lt;p&gt;The latest update of Play Music (v5.0) has been completely redesign and features a brand new artist/album detail screen. If you open such a detail screen, you’ll notice the &lt;code&gt;ActionBar&lt;/code&gt; is initially invisible and overlaps a large image describing the artist/album. Once you start scrolling down (if possible), the &lt;code&gt;ActionBar&lt;/code&gt; fades in gradually. The &lt;code&gt;ActionBar&lt;/code&gt; turns completely opaque when the large image has been scrolled out of the screen.&lt;/p&gt;

&lt;p&gt;Here are two main advantages of this &lt;code&gt;ActionBar&lt;/code&gt; animation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Polish the UI&lt;/strong&gt;: animations synchronized on an element you’re interacting with are generally appreciated by users because it makes them feel the UI is natural and reacts to their actions. The fading animation is a direct consequence of the per-pixel scrolling state and not a launched-once animation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Take advantage of the screen real estate&lt;/strong&gt;: while still preserving the UX of the platform, this pattern let the user primarily focus on the content rather than the controls. Used in addition to a nicely designed screen, it can be a game changer for your app’s interface.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;In this article, I will deep dive into the details of implementing the technique described in ”&lt;a href=&quot;http://cyrilmottier.com/2012/11/27/actionbar-on-the-move/&quot;&gt;ActionBar on the Move&lt;/a&gt;” to create an effect similar to the one used in the Play Music app.&lt;/p&gt;

&lt;p&gt;In order to better understand the goal we are targeting, you can have a look at the screenshots below or alternatively download the sample application.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://cyrilmottier.com/media/2013/05/pushing-the-actionbar-to-the-next-level/action_bar_alpha_animation.png&quot; class=&quot;center&quot; title=&quot;ActionBar alpha animation&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;button class=&quot;download-button&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;/span&gt;&lt;span class=&quot;title&quot;&gt;Download the sample APK&lt;/span&gt;&lt;/button&gt;&lt;/p&gt;

&lt;h2&gt;Application theming/styling&lt;/h2&gt;

&lt;p&gt;As you can easily notice, in order to reproduce such an effect, the &lt;code&gt;ActionBar&lt;/code&gt; must overlap the content of the screen. This can be easily done using the &lt;code&gt;android:windowActionBarOverlay&lt;/code&gt; XML attributes. The code below describes the definition of the themes we’ll use:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;values/themes.xml &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;style&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Theme.TranslucentActionBar&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;parent=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@android:style/Theme.Holo.Light.DarkActionBar&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nt&quot;&gt;&amp;lt;item&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;android:actionBarStyle&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;@style/Widget.ActionBar&lt;span class=&quot;nt&quot;&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;style&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Theme.TranslucentActionBar.ActionBar&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;style&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Theme.TranslucentActionBar.ActionBar.Overlay&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nt&quot;&gt;&amp;lt;item&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;android:actionBarStyle&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;@style/Widget.ActionBar.Transparent&lt;span class=&quot;nt&quot;&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nt&quot;&gt;&amp;lt;item&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;android:windowActionBarOverlay&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;true&lt;span class=&quot;nt&quot;&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Pretty logically, the style of the &lt;code&gt;ActionBar&lt;/code&gt; is defined in &lt;code&gt;values/styles.xml&lt;/code&gt; as follows:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;values/styles.xml &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;style&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Widget.ActionBar&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;parent=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nt&quot;&gt;&amp;lt;item&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;android:background&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;@drawable/ab_background&lt;span class=&quot;nt&quot;&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;style&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Widget.ActionBar.Transparent&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nt&quot;&gt;&amp;lt;item&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;android:background&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;@android:color/transparent&lt;span class=&quot;nt&quot;&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Finally, we can use these themes in order to style our &lt;code&gt;Activity&lt;/code&gt;.&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;AndroidManifest.xml &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;28&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;manifest&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;xmlns:android=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;http://schemas.android.com/apk/res/android&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;na&quot;&gt;package=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;com.cyrilmottier.android.translucentactionbar&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;na&quot;&gt;android:versionCode=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;1&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;na&quot;&gt;android:versionName=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;1.0&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;uses-sdk&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:minSdkVersion=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;14&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:targetSdkVersion=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;17&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;application&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:allowBackup=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;true&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:icon=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@drawable/ic_launcher&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:label=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@string/app_name&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:theme=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@style/Theme.TranslucentActionBar&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nt&quot;&gt;&amp;lt;activity&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;na&quot;&gt;android:name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;.HomeActivity&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;na&quot;&gt;android:theme=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@style/Theme.TranslucentActionBar.ActionBar.Overlay&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nt&quot;&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nt&quot;&gt;&amp;lt;action&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;android:name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;android.intent.action.MAIN&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nt&quot;&gt;&amp;lt;category&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;android:name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;android.intent.category.LAUNCHER&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nt&quot;&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nt&quot;&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/application&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/manifest&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Note that by using themes/styles we remove all potential flickering issues at startup (see &lt;a href=&quot;http://cyrilmottier.com/2013/01/23/android-app-launching-made-gorgeous/&quot;&gt;Android App Launching Made Gorgeous&lt;/a&gt; for more information).&lt;/p&gt;

&lt;h2&gt;Getting the content ready&lt;/h2&gt;

&lt;p&gt;As explained previously, the &lt;code&gt;ActionBar&lt;/code&gt; fading is synchronized on the per-pixel state scrolling of the scrolling container. In this example, we’ll simply use a &lt;code&gt;ScrollView&lt;/code&gt; as a scrolling container. One of the major drawback of this container is you can’t register a listener in order to be notified when the scroll has changed. This can be easily done be creating a &lt;code&gt;NotifyingScrollView&lt;/code&gt; extending the original &lt;code&gt;ScrollView&lt;/code&gt;:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;NotifyingScrollView.java &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;28&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;29&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;31&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;32&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;33&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;34&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;35&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;36&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;37&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;38&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;39&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;41&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;42&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;43&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;44&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;45&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;package&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;cyrilmottier&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;android&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;translucentactionbar&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.content.Context&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.util.AttributeSet&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.widget.ScrollView&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;/**&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; * @author Cyril Mottier&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;NotifyingScrollView&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ScrollView&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;cm&quot;&gt;/**&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     * @author Cyril Mottier&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;OnScrollChangedListener&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;onScrollChanged&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ScrollView&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;who&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldl&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;OnScrollChangedListener&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mOnScrollChangedListener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;NotifyingScrollView&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Context&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;kd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;NotifyingScrollView&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Context&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AttributeSet&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;kd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;NotifyingScrollView&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Context&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AttributeSet&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;defStyle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;kd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;defStyle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;onScrollChanged&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldl&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;kd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;onScrollChanged&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldl&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mOnScrollChangedListener&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;mOnScrollChangedListener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;onScrollChanged&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldl&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;setOnScrollChangedListener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;OnScrollChangedListener&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;listener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;n&quot;&gt;mOnScrollChangedListener&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;listener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Then, we can use this new scrolling container in an XML layout:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;layout/activity_home.xml &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;com.cyrilmottier.android.translucentactionbar.NotifyingScrollView&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;na&quot;&gt;xmlns:android=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;http://schemas.android.com/apk/res/android&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;na&quot;&gt;android:id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@+id/scroll_view&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;na&quot;&gt;android:layout_width=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;na&quot;&gt;android:layout_height=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;LinearLayout&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:layout_width=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:layout_height=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;wrap_content&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:orientation=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;vertical&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nt&quot;&gt;&amp;lt;ImageView&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;na&quot;&gt;android:id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@+id/image_header&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;na&quot;&gt;android:layout_width=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;na&quot;&gt;android:layout_height=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;wrap_content&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;na&quot;&gt;android:scaleType=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;centerCrop&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;na&quot;&gt;android:src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@drawable/daft_punk&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      &lt;span class=&quot;cp&quot;&gt;&amp;lt;! -- Some long content --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/LinearLayout&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/com.cyrilmottier.android.translucentactionbar.NotifyingScrollView&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;Fading in/out the ActionBar&lt;/h2&gt;

&lt;p&gt;Now most of the boilerplate is ready, we can plug all of these components together. The &lt;code&gt;ActionBar&lt;/code&gt; algorithm is rather simple and only consists on computing the alpha depending on the current per-pixel scrolling state of the &lt;code&gt;NotifyingScrollView&lt;/code&gt;. Note that the effective scrolled distance must be clamped to [0, &lt;em&gt;image_height - actionbar_height&lt;/em&gt;] in order to avoid weird values that may occur mainly because of the default over scroll behavior of scrolling containers on Android:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;HomeActivity.java &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;28&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;29&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;31&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;32&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;33&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;34&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;35&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;36&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;37&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;38&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;package&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;cyrilmottier&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;android&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;translucentactionbar&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.app.Activity&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.graphics.drawable.Drawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.os.Build&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.os.Bundle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.support.v4.view.GravityCompat&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.support.v4.widget.DrawerLayout&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.util.Log&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.view.Menu&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;android.widget.ScrollView&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;HomeActivity&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Activity&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Drawable&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mActionBarBackgroundDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;onCreate&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Bundle&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;savedInstanceState&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;kd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;onCreate&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;savedInstanceState&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;n&quot;&gt;setContentView&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;layout&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;activity_home&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;n&quot;&gt;mActionBarBackgroundDrawable&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;getResources&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;drawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;ab_background&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;n&quot;&gt;mActionBarBackgroundDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;setAlpha&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;n&quot;&gt;getActionBar&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;setBackgroundDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mActionBarBackgroundDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;o&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;NotifyingScrollView&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;findViewById&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;scroll_view&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;setOnScrollChangedListener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mOnScrollChangedListener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NotifyingScrollView&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;OnScrollChangedListener&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mOnScrollChangedListener&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NotifyingScrollView&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;OnScrollChangedListener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;onScrollChanged&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ScrollView&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;who&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldl&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;oldt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;kd&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headerHeight&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;findViewById&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;image_header&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getHeight&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;getActionBar&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getHeight&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;kd&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;float&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ratio&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headerHeight&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;headerHeight&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;kd&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;newAlpha&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ratio&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;mActionBarBackgroundDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;setAlpha&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;newAlpha&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;As described in ”&lt;a href=&quot;http://cyrilmottier.com/2012/11/27/actionbar-on-the-move/&quot;&gt;ActionBar on the Move&lt;/a&gt;”, this snippet of code above doesn’t work for pre-JELLY_BEAN_MR1 devices. Indeed, the &lt;code&gt;ActionBar&lt;/code&gt; isn’t invalidating itself when required because it isn’t registering itself as the &lt;code&gt;Drawable&lt;/code&gt;’s callback. You can workaround this issue simply be attaching the following &lt;code&gt;Callback&lt;/code&gt; in the &lt;code&gt;onCreate(Bundle)&lt;/code&gt; method:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;HomeActivity.java &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Drawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;Callback&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mDrawableCallback&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Drawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;Callback&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;invalidateDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Drawable&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;who&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;n&quot;&gt;getActionBar&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;setBackgroundDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;who&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;scheduleDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Drawable&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;who&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Runnable&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;what&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;when&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;unscheduleDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Drawable&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;who&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Runnable&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;what&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;o&quot;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;




&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;HomeActivity.java &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Build&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;VERSION&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;SDK_INT&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Build&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;VERSION_CODES&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;JELLY_BEAN_MR1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;mActionBarBackgroundDrawable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;setCallback&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mDrawableCallback&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;You can already run the code “as it”. Although the result looks alike the animation used in Play Music we can still continue to tweak it to make it better.&lt;/p&gt;

&lt;h2&gt;A final brush stroke&lt;/h2&gt;

&lt;h3&gt;Enforcing ActionBar contrast&lt;/h3&gt;

&lt;p&gt;Having an transparent &lt;code&gt;ActionBar&lt;/code&gt; may lead to design issues because you generally don’t know about the background you’ll be displayed on top of. For instance you may end up with a transparent &lt;code&gt;ActionBar&lt;/code&gt; displaying a white text on top of a white description image. No need to say it makes the &lt;code&gt;ActionBar&lt;/code&gt; invisible and useless.&lt;/p&gt;

&lt;p&gt;The easiest way to avoid such a problem consists on modifying the image to make it a little bit darker at the top. Thus, in a worse case scenario (i.e. white image) we would have a grey area on top of the image making the &lt;code&gt;ActionBar&lt;/code&gt; content (title, icons, buttons, etc.) visible.&lt;/p&gt;

&lt;p&gt;A simple way to do that is to overlay a translucent dark to transparent gradient on top of the image. This can be done in XML only with the &lt;code&gt;Drawable&lt;/code&gt; described below:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;drawable/gradient.xml &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;shape&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;xmlns:android=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;http://schemas.android.com/apk/res/android&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;       &lt;span class=&quot;na&quot;&gt;android:shape=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;rectangle&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;size&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;android:height=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;100dp&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;gradient&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:angle=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;270&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:startColor=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;#8000&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:endColor=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;#0000&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/shape&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;The gradient is overlaid using a wrapping &lt;code&gt;FrameLayout&lt;/code&gt;:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;layout/activity_home.xml &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;FrameLayout&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;na&quot;&gt;android:layout_width=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;na&quot;&gt;android:layout_height=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;wrap_content&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;ImageView&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@+id/image_header&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:layout_width=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:layout_height=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;wrap_content&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:scaleType=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;centerCrop&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@drawable/daft_punk&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;View&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:layout_width=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:layout_height=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;wrap_content&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;na&quot;&gt;android:background=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@drawable/gradient&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/FrameLayout&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h3&gt;Avoid over-scroll&lt;/h3&gt;

&lt;p&gt;In Gingerbread (API 9), Android introduced a brand new way to notify the user a scrollable container is being scrolled beyond the content bounds. First it introduced the notion of &lt;code&gt;EdgeEffect&lt;/code&gt; (available in the API starting API 14) and enabled over-scroll. While this is not a problem in general, it can be pretty annoying when one of the edge of your scrollable content is different from the background color.&lt;/p&gt;

&lt;p&gt;You can reproduce it be simply flinging the &lt;code&gt;ScrollView&lt;/code&gt; rapidly to the top and you’ll notice some white color (the background color) appears on top of the screen because the image is scrolling beyond the bounds. I personally consider this a a UI glitch and usually prefer disabling it in this rare cases.&lt;/p&gt;

&lt;p&gt;One could imagine the best way to avoid over-scroll is to use &lt;code&gt;View#setOverScrollMode(int)&lt;/code&gt; to change the mode to &lt;code&gt;View#OVER_SCROLL_NEVER&lt;/code&gt;. Although it works, it also remove the edge effect which can be visually disturbing&lt;sup&gt;1&lt;/sup&gt;. A simple way to do that is to modify the &lt;code&gt;NotifyingScrollView&lt;/code&gt; to force the maximum over scroll values to zero when necessary:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;NotifyingScrollView.java &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mIsOverScrollEnabled&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;setOverScrollEnabled&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;mIsOverScrollEnabled&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;isOverScrollEnabled&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mIsOverScrollEnabled&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kd&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;overScrollBy&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;deltaX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;deltaY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;scrollX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;scrollY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;scrollRangeX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;scrollRangeY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                               &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;maxOverScrollX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;maxOverScrollY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;isTouchEvent&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;overScrollBy&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;deltaX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;deltaY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;scrollX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;scrollY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;scrollRangeX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;scrollRangeY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;mIsOverScrollEnabled&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;maxOverScrollX&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;mIsOverScrollEnabled&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;maxOverScrollY&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;n&quot;&gt;isTouchEvent&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;I seriously don’t know if the team behind the Play Music application decided to implement the behavior based on my article. But it appears they brilliantly used the technique to both polish and emphasize the UI. It is clearly an awesome pattern to use whenever you need to design a screen which content is self-explanatory and is more important than the &lt;code&gt;ActionBar&lt;/code&gt; content itself.&lt;/p&gt;

&lt;hr /&gt;

&lt;ol&gt;
&lt;li&gt;Do not ask me why the naming of the constants/method is so ambiguous…&lt;/li&gt;
&lt;/ol&gt;</content:encoded>
	<dc:date>2013-05-24T12:29:00+00:00</dc:date>
</item>
<item rdf:about="http://cyrilmottier.com/2013/05/02/enhancing-google-maps-api-v2-with-polaris-v2">
	<title>Cyril Mottier: Enhancing Google Maps API v2 with Polaris v2</title>
	<link>http://cyrilmottier.com/2013/05/02/enhancing-google-maps-api-v2-with-polaris-v2/</link>
	<content:encoded>&lt;p&gt;In October 2012, I released a library called &lt;a href=&quot;https://github.com/cyrilmottier/Polaris&quot;&gt;Polaris&lt;/a&gt;. At that time, the library received quite a lot of success because it was really filling the mammoth blanks of the Google Maps external library (aka Google Maps Android API v1): effortless map annotation, gesture support, map callout support, built-in “user tracking” mode, etc. If you have never heard of Polaris feel free to checkout one of the links below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cyrilmottier/Polaris&quot;&gt;Polaris GitHub page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cyrilmottier.com/2012/10/12/meet-polaris-a-map-library-for-android/&quot;&gt;“Meet Polaris, a Map Library for Android” blog post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://speakerdeck.com/cyrilmottier/polaris-simple-mapping-library-for-android&quot;&gt;“Polaris, simple mapping library for Android” slides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;





&lt;p&gt;(Un)fortunately - the addition/removal of the ‘un’ obviously depends on the point of view - Google released a radically different and new version of the library in December 2012. In addition to this release they announced the deprecation of the first version of the API as of March 2013&lt;sup&gt;1&lt;/sup&gt;. Let’s be honest, at first I was pretty annoyed by this new release because it turned almost all of my work to a waste of time. On the other hand, I was quite happy to notice the new API were really close - functionaly and &lt;em&gt;API-ly&lt;/em&gt; speaking - to what I did on my own with Polaris.&lt;/p&gt;

&lt;p&gt;Back in December I gave my &lt;a href=&quot;http://cyrilmottier.com/2012/12/07/the-google-maps-android-api-v2-utopia/&quot;&gt;point of view&lt;/a&gt; about the new Google Maps Android API v2. After almost 6 months, the library has been updated only once (as part of the Google Play Service, it was supposed to be updated very often…) and is not a great starting base for building libraries on top of it (all of the classes are final and hence cannot be extended).&lt;/p&gt;

&lt;p&gt;With the release of AVélov 1.2, a lot of people were interested in the &lt;a href=&quot;http://www.youtube.com/watch?v=3R7cGxahDEk&quot;&gt;animated clustering algorithm&lt;/a&gt; I developed. Several companies asked me for the app source code and I was quite frustrated not being able to deliver a true library but only a sample code. That was true until I decided to find a way around the Google’s locked down library. I finally managed to by-pass the ‘final’ limitation fairly easily. I entirely wrapped the original Google’s library into my own library: Polaris v2.&lt;/p&gt;

&lt;h2&gt;Introducing Polaris v2&lt;/h2&gt;

&lt;p&gt;The main purpose of Polaris v2 is to act as the root component for creating library projects around the Google Maps Android API v2. Although I originally developed it for creating commercial library providing animated clustering, I extracted the essence of it and kept some basic features. As a consequence, Polaris v2 aims to fix some of the most frustrating bugs of the original library and provide additional features.&lt;/p&gt;

&lt;p&gt;For now, the code is mostly a wrapper but I’m releasing and open-sourcing the code so that the community can contribute to it and enhance it with some awesome new features and fixes. The current release includes just a few improvements (see the README file on GitHub for more information). Hopefully, some of the changes introduced in Polaris v2 will be backported into Google Maps Android API v2…&lt;/p&gt;

&lt;p&gt;&lt;button class=&quot;download-button&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;/span&gt;&lt;span class=&quot;title&quot;&gt;Go to Polaris v2 GitHub page&lt;/span&gt;&lt;/button&gt;&lt;/p&gt;

&lt;h3&gt;Using Polaris v2 in your projects&lt;/h3&gt;

&lt;p&gt;Using Polaris v2 in your projects is quite simple. The API exposed by Polaris v2 is a super-set of what the original Google Maps Android API v2 exposes. As a result, you only need to switch all of the imports from the Google Maps Android API v2 (&lt;code&gt;com.google.android.gms.maps.*&lt;/code&gt;) to Polaris v2 (&lt;code&gt;com.cyrilmottier.polaris2.maps.*&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;Finally you can start interacting with the underlying &lt;code&gt;GoogleMap&lt;/code&gt; by calling &lt;code&gt;getPolarisMap()&lt;/code&gt; (instead of &lt;code&gt;getMap()&lt;/code&gt;) on your &lt;code&gt;SupportMapFragment&lt;/code&gt;, &lt;code&gt;MapFragment&lt;/code&gt; or &lt;code&gt;MapView&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;While the original project at the root of Polaris was more featureful, this release is the perfect way for developers to start adding some missing features to the original Google-provided mapping library. Today, Polaris v2 is just a wrapper around the Google Maps Android API v2 but could easily become a must-use library in the future. The project is just waiting for the community to help it grow.&lt;/p&gt;

&lt;hr /&gt;

&lt;ol&gt;
&lt;li&gt;Having a deprecated API doesn’t mean it is not working anymore for all existing applications. Google only decided to prevent people from generating new API keys. As a consequence, it is now impossible to create new applications using the Google Maps external library except if you are signing your application with a certificate you already have assigned a map API key to.&lt;/li&gt;
&lt;/ol&gt;</content:encoded>
	<dc:date>2013-05-02T12:00:00+00:00</dc:date>
</item>
<item rdf:about="tag:chris.boyle.name,2005:Post/5">
	<title>Chris Boyle: Android keymaps</title>
	<link>http://chris.boyle.name/2010/08/android-keymaps</link>
	<content:encoded>&lt;p&gt;I recently bought a Bluetooth keyboard to use on Android; unfortunately some keys weren't recognised at all and others weren't quite mapped as I'd like. This is fairly easy to fix as an end user, as long as you have a rooted device (&lt;code&gt;adb remount&lt;/code&gt; must succeed). Here's a quick howto, since I couldn't find one.&lt;/p&gt;
&lt;p&gt;It shouldn't need saying, but you do this &lt;strong&gt;at your own risk&lt;/strong&gt;. You can easily break your device's response to keys, and possibly make your device unbootable too if the file is invalid.&lt;/p&gt;
&lt;p&gt;It's pretty much as described under &lt;a href=&quot;http://source.android.com/porting/keymaps_keyboard_input.html&quot;&gt;Keymaps and Keyboard Input&lt;/a&gt; in the porting documentation. What we're going to do is edit one file: &lt;code&gt;/system/usr/keylayout/qwerty.kl&lt;/code&gt;. This file maps &lt;a href=&quot;http://en.wikipedia.org/wiki/Scancode&quot;&gt;scancodes&lt;/a&gt; to &lt;a href=&quot;http://developer.android.com/reference/android/view/KeyEvent.html&quot;&gt;Android keycodes&lt;/a&gt;. For example: &lt;code&gt;key 30 A&lt;/code&gt; means scancode 30 (decimal) maps to &lt;code&gt;KEYCODE_A&lt;/code&gt; (29), the A key. As the porting docs say, a separate Key Character Map file deals with what characters, if any (e.g. &quot;a&quot;, &quot;A&quot;, &quot;#&quot;), should be generated given the keycode and the state of the modifiers (Shift, Fn/Sym, etc). A different KCM can be loaded for Bluetooth keyboards depending on their device name, but at least by default, the same key layout file (including your changes) is used for Bluetooth and the built-in keyboard (if any).&lt;/p&gt;
&lt;p&gt;So, first we need to fetch your current key layout, and it's a good idea to keep backups (both on the device and locally).&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; adb pull /system/usr/keylayout/qwerty.kl qwerty.kl
&lt;span class=&quot;no&quot;&gt;2&lt;/span&gt; cp qwerty.kl qwerty-orig.kl
&lt;span class=&quot;no&quot;&gt;3&lt;/span&gt; adb shell cp /system/usr/keylayout/qwerty.kl /sdcard/qwerty-orig.kl&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Now, edit &lt;code&gt;qwerty.kl&lt;/code&gt; as you like. It should look initially look similar to &lt;a href=&quot;http://android.git.kernel.org/?p=device/htc/passion-common.git;a=blob_plain;f=mahimahi-keypad.kl;hb=HEAD&quot;&gt;this Nexus One example&lt;/a&gt;. You might find it helpful at this point to see what scancodes your keyboard is sending. There really ought to be a tool for this in Dev Tools or Spare Parts, but it seems there isn't. I've made a &lt;a href=&quot;http://github.com/chrisboyle/keytest/downloads&quot;&gt;dirt-simple app&lt;/a&gt; to show you &lt;a href=&quot;http://developer.android.com/reference/android/view/KeyEvent.html#toString()&quot;&gt;KeyEvent.toString()&lt;/a&gt;, which was the work of 5 minutes and could certainly be improved.&lt;/p&gt;
&lt;p&gt;My particular keyboard is a white roll-up 87-key variety, that you can still &lt;a href=&quot;http://shop.ebay.co.uk/?_nkw=silicone+bluetooth+keyboard&amp;amp;_sacat=See-All-Categories&quot;&gt;find on eBay&lt;/a&gt;. It has F-keys doubling as media keys: if you get this model, be aware that the Fn key is really F-lock (toggles the state rather than acting as a modifier). Here is &lt;a href=&quot;http://chris.boyle.name/download/bluetooth-keyboard-layout.txt&quot;&gt;my layout file&lt;/a&gt; in case it's helpful. This layout mostly follows the principle of least surprise, except that the button with &quot;Home&quot; printed on it is Call, to mirror &quot;End&quot; being Hangup. F1 with F-lock on (Home symbol) is the Android &quot;Home&quot; keycode (goes to the home screen).&lt;/p&gt;
&lt;p&gt;Now copy the layout back onto the device:&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; adb remount
&lt;span class=&quot;no&quot;&gt;2&lt;/span&gt; adb push qwerty.kl /system/usr/keylayout/qwerty.kl&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;(If the remount fails, you probably don't have a rooted device.) It seems you need to reboot for the changes to take effect, so go ahead and do that, and your keys should then behave as you've specified. :-)&lt;/p&gt;

&lt;p style=&quot;font-size: 80%;&quot;&gt;
Comments preferred at &lt;a href=&quot;http://chris.boyle.name/2010/08/android-keymaps&quot;&gt;http://chris.boyle.name/2010/08/android-keymaps&lt;/a&gt; using OpenID/Facebook/Twitter (comments elsewhere are unlikely to reach me).
&lt;/p&gt;</content:encoded>
	<dc:date>2010-08-22T14:32:41+00:00</dc:date>
	<dc:creator>Chris Boyle</dc:creator>
</item>
<item rdf:about="tag:chris.boyle.name,2005:Post/4">
	<title>Chris Boyle: What next?</title>
	<link>http://chris.boyle.name/2010/07/what-next</link>
	<content:encoded>&lt;p&gt;Now that my various &lt;a href=&quot;http://chris.boyle.name/projects&quot;&gt;projects&lt;/a&gt; seem to be mostly behaving themselves, it's time to decide what to write next. I've had a few requests and a few ideas, so here's a rundown of possibilities.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;strong&gt;&lt;a href=&quot;http://www.twofortyfouram.com&quot;&gt;Locale&lt;/a&gt; condition: ping.&lt;/strong&gt;
    Let Locale ask &quot;is that machine awake?&quot; It could ping something in a private IP range, deduce that you're at home and your PC is on, and stop notifying you about things you're already likely to see on the PC. There seems to be a usable &lt;code&gt;ping&lt;/code&gt; command in Android's busybox, but for bonus points, allow a TCP ping, maybe check the banner on a service, to guard against collisions with private IPs in other places.
  &lt;/li&gt;
  &lt;li&gt;
    &lt;strong style=&quot;text-decoration: line-through;&quot;&gt;Locale action: K9 settings.&lt;/strong&gt;
    &lt;a href=&quot;http://code.google.com/p/k9plugin/&quot;&gt;It's been done&lt;/a&gt;.
  &lt;/li&gt;
  &lt;li&gt;
    &lt;strong&gt;Locale action: ConnectBot.&lt;/strong&gt;
    You can already configure a ConnectBot session to immediately run a command. Launching a remote shell script securely from Locale would add some nice flexibility: aggressive notification using PCs around the house, X10 home automation, &lt;a href=&quot;http://brad.livejournal.com/2394707.html&quot;&gt;garage doors&lt;/a&gt;… you could do this from &lt;a href=&quot;http://code.google.com/p/android-scripting/&quot;&gt;ASE&lt;/a&gt; with an ssh client binary, but that's a little harder to install, especially without root.
  &lt;/li&gt;
  &lt;li&gt;
    &lt;strong&gt;Locale condition: Timer.&lt;/strong&gt;
    My &lt;a href=&quot;http://chris.boyle.name/projects/timer&quot;&gt;timer&lt;/a&gt;, not yet formally released, could trigger the aforementioned aggressive notification if alarms have gone unanswered for half an hour.
    &lt;strong&gt;Update:&lt;/strong&gt;
    &lt;a href=&quot;http://github.com/chrisboyle/timer/issues/10&quot;&gt;Done&lt;/a&gt;.
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://github.com/chrisboyle/cbn/issues/27&quot;&gt;Port this site to Rails 3&lt;/a&gt;. This can wait until v3 is actually out.&lt;/li&gt;
  &lt;li&gt;Puzzles improvements. Some ideas languishing in the &lt;a href=&quot;http://github.com/chrisboyle/sgtpuzzles/issues&quot;&gt;bug tracker&lt;/a&gt;, including &lt;a href=&quot;http://github.com/chrisboyle/sgtpuzzles/issues/14&quot;&gt;multiplayer&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Set up &lt;a href=&quot;http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki&quot;&gt;mpd&lt;/a&gt; (with &lt;a href=&quot;http://code.google.com/p/neompc/&quot;&gt;neompc&lt;/a&gt; on an old Palm Treo) at home. Probably no new code needed, but included for completeness.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of these will probably happen eventually, but it's always useful to know which ideas are useful to a wider audience, so feel free to comment or &lt;a href=&quot;http://chris.boyle.name/contact&quot;&gt;contact me&lt;/a&gt; if you're keen to see one of these created, or if you can think of improvements or existing projects I ought to be aware of. I'll also be writing up any interesting aspects of these projects as I implement them, and suggestions for posts of that kind that you'd like to see are also welcome.&lt;/p&gt;

&lt;p style=&quot;font-size: 80%;&quot;&gt;
Comments preferred at &lt;a href=&quot;http://chris.boyle.name/2010/07/what-next&quot;&gt;http://chris.boyle.name/2010/07/what-next&lt;/a&gt; using OpenID/Facebook/Twitter (comments elsewhere are unlikely to reach me).
&lt;/p&gt;</content:encoded>
	<dc:date>2010-10-09T21:18:57+00:00</dc:date>
	<dc:creator>Chris Boyle</dc:creator>
</item>
<item rdf:about="http://www.thepowerbase.com/?p=6818">
	<title>The Powerbase: PhoneSats in Orbit, Transmitting Data To Listeners Worldwide</title>
	<link>http://www.thepowerbase.com/2013/04/phonesats-in-orbit-transmitting-data-to-listeners-worldwide/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.thepowerbase.com/2013/04/antares-rocket-launch-scrubbed-at-t-12-minutes/&quot;&gt;After a few delays&lt;/a&gt;, the inaugural mission of the Orbital Sciences Antares mission successfully made it into orbit on April 21st. While the mission didn’t carry the actual spacecraft Antares is designed to lift (that’s currently slated for June), it didn’t go up there empty handed.&lt;/p&gt;
&lt;p&gt;The Antares rocket safely delivered &lt;a href=&quot;http://www.thepowerbase.com/2012/08/can-android-revolutionize-spacecraft-design/&quot; title=&quot;Can Android Revolutionize Spacecraft Design?&quot;&gt;all three of NASA’s PhoneSats&lt;/a&gt; into their intended orbit, and according to amateur radio operators all over the world, the three micro-satellites are performing as expected.&lt;/p&gt;
&lt;div style=&quot;width: 218px;&quot; id=&quot;attachment_6820&quot; class=&quot;wp-caption alignright&quot;&gt;&lt;a href=&quot;http://www.thepowerbase.com/wp-content/uploads/2013/04/phonesat_hw.png&quot;&gt;&lt;img src=&quot;http://www.thepowerbase.com/wp-content/uploads/2013/04/phonesat_hw.png&quot; alt=&quot;NASA's PhoneSat&quot; height=&quot;278&quot; class=&quot; wp-image-6820  &quot; width=&quot;208&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;NASA’s PhoneSat&lt;/p&gt;&lt;/div&gt;
&lt;h2&gt;Global Effort&lt;/h2&gt;
&lt;p&gt;As the PhoneSat satellites have rather limited transmission capability, NASA is relying on a global network of amateur (AKA ham) radio operators to keep an ear out for these tiny little craft.&lt;/p&gt;
&lt;p&gt;By openly documenting the &lt;a href=&quot;http://phonesat.org/packet_description.php&quot;&gt;spacecraft’s packet protocols&lt;/a&gt;, listing the frequencies they will be transmitting on, and even displaying an animated map to show where each PhoneSat is in the sky, NASA has given the public everything they need to receive regular downlinks.&lt;/p&gt;
&lt;p&gt;Once a radio operator has received one of these broadcasts, he or she can upload it to the &lt;a href=&quot;http://phonesat.org/&quot;&gt;PhoneSat.org&lt;/a&gt; site, where it will be cataloged. When enough data has been collected, NASA will (hopefully) be able to piece together information spanning the entire mission, including the sensor data and images the PhoneSats are constantly sending out.&lt;/p&gt;
&lt;h2&gt;Listen Up&lt;/h2&gt;
&lt;p&gt;Interested in trying your hand at receiving signals from these Android-powered spacecraft?&lt;/p&gt;
&lt;p&gt;It’s not nearly as complex as you probably think, as there are now multiple &lt;a href=&quot;http://www.thepowerbase.com/2012/10/funcube-dongle-pro-when-rtl-sdr-isnt-enough/&quot; title=&quot;FUNcube Dongle Pro+: When RTL-SDR Isn’t Enough&quot;&gt;low-cost USB radios&lt;/a&gt; which can be used to receive satellite transmissions. All you need is a decent antenna, and some patience.&lt;/p&gt;
&lt;p&gt;Take a look at our &lt;a href=&quot;http://www.thepowerbase.com/2012/06/getting-started-with-rtl-sdr/&quot; title=&quot;Getting Started With RTL-SDR&quot;&gt;guide on RTL-SDR&lt;/a&gt; for some ideas on how you can get started in the fascinating world of amateur radio for around $30 USD.&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-06T23:57:35+00:00</dc:date>
	<dc:creator>Tom Nardi</dc:creator>
</item>
<item rdf:about="http://www.thepowerbase.com/?p=6776">
	<title>The Powerbase: Reimagining Play: Interview with PlayMG’s Taylor Cavanah</title>
	<link>http://www.thepowerbase.com/2013/04/reimagining-play-interview-with-playmgs-taylor-cavanah/</link>
	<content:encoded>&lt;p&gt;Last month, we &lt;a href=&quot;http://www.thepowerbase.com/2013/03/a-new-way-to-play-mg-handheld-review/&quot; title=&quot;A New Way to Play: MG Handheld Review&quot;&gt;brought you a review of the MG&lt;/a&gt;, an Android powered handheld gaming system designed for casual games. The combination of vanilla Android and the MG’s custom parental controls made the device a compelling option for gamers young and old alike, and its comparatively low price combined with the vast Android software library offered an unbeatable value.&lt;/p&gt;
&lt;p&gt;The team behind the MG had obviously done their homework and targeted the product to a very specific market which was otherwise being ignored. Rather than throwing out a half-realized device that didn’t resonate with any particular use case, the team engineered the hardware and software experience to their target audience to great effect.&lt;/p&gt;
&lt;div style=&quot;width: 124px;&quot; id=&quot;attachment_6779&quot; class=&quot;wp-caption alignright&quot;&gt;&lt;a href=&quot;http://www.thepowerbase.com/wp-content/uploads/2013/04/taylor_cavanah.jpg&quot;&gt;&lt;img src=&quot;http://www.thepowerbase.com/wp-content/uploads/2013/04/taylor_cavanah.jpg&quot; alt=&quot;Taylor Cavanah&quot; height=&quot;118&quot; class=&quot;size-full wp-image-6779&quot; width=&quot;114&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Taylor Cavanah&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;To learn more about the focus and vision which made the device a reality, we got in touch with MG’s physicist turned meta-gamer Taylor Cavanah.&lt;/p&gt;
&lt;h2&gt;Creating the MG&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; Taylor, thanks for taking the time to talk with us. Can you start by telling our readers a bit about yourself and your background?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor&lt;/strong&gt;: I’m a physicist and started my career in Nanotechnology at &lt;a href=&quot;http://www.zyvex.com/&quot;&gt;Zyvex&lt;/a&gt;.  After finding some success in developing the nanoprobing market for the semiconductor industry I decided to strike out on my own.  My buddies and I started our own software company – &lt;a href=&quot;http://www.locai.com/&quot;&gt;Locai&lt;/a&gt; – and a year ago we combined forces with the hardware and business guys from &lt;a href=&quot;http://www.actscom.co.kr/&quot;&gt;ACTScom&lt;/a&gt; to launch PlayMG.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; What exactly is your role at PlayMG? What are your day to day responsibilities like?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; My specific role involves game/app design, platformsoftware design, business development, innovation, and as is the case with all start ups – many more roles.  Day to day I was either talking with game houses, working with the hardware guys to design the user experience, writing the story behind our game within the gaming device app Origins, looking for interesting apps to work with, working with marketing to craft the messaging behind these features we were building, and testing devices in every possible way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; PlayMG has no qualms about the fact it has targeted the MG to younger gamers. Why do you think the younger gamer is so important? What makes the MG a better option than, say, mom’s old smartphone?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; Every one has a slightly different opinion on this but for me the younger gamers make the most sense because they can’t have phones.  Whether their parents don’t want them or can’t afford the data plans, there are a lor of younger gamers who love apps but can’t get access to them.  The “hand me down” argument is definitely valid.  I can hand down my phone and just remove the plan and then they have a smart device.  That’s where our added benefits factor in to the equation.  You can’t get Family Collaboration, SpendSmart, or the Origins game in a hand me down.  And sometimes more importantly, you can’t get that “awe” moment when your son or daughter opens up your repackaged device from 2 years ago.&lt;/p&gt;
&lt;h2&gt;Android and the MG&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; Its differences aside, the majority of the MG’s software is straight Android. Would it be safe to say that, if it wasn’t for the open nature of Android, the MG wouldn’t exist in its current form? Would have putting this same hardware out with a proprietary operating system have gotten you as far as Android has?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; There is no way we would exist without Android.  The barrier of entry previously was just too high.  We got a solid and awe inspiring product to market in 9 months.  Core to that was not having to build an entire OS.  Not just in terms of getting something to market but that greatly helped us focus our time and money where it mattered – on the added benefits like Family Collaboration and Origins.  This is what I love about open source – you get to make products with extremely well designed experiences where it matters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; One of the biggest selling points early on was that the MG would be a vanilla Android device, meaning it would be as close to AOSP as possible. In the end the MG delivered on that promise, and is one of the few non-Nexus devices available running stock Android. Why was running stock Android so important for the MG?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; Part of that answer has to do with my previous answer – it’s just easier to not build stuff you don’t need.  I think everyone can point to some larger companies that have large engineering staffs that have to build stuff because those salaries are being spent no matter what.  Then you get a lot of customization away from stock.  But most of that is useless and provides no value to the customer experience.  A lot of engineers also like the job security that building all of this custom stuff gives them.  They will always be needed because only they know how this version of flavored Android operates.  For us it was exactly that overhead that we didn’t want.  If we build our own flavor of Android then every new app or platform we create down the road has to take that into account.  We had to keep our focus on what mattered for the end user.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; From a development perspective, stock Android is generally preferable to manufacturer modified builds, but what about the end user? It’s no secret that the most popular Android devices (such as Samsung’s Galaxy line) make use of manufacturer modifications to their interface and applications, so the public doesn’t seem to mind. Do you ever worry that shipping with stock Android rather than a build with more visual flair and streamlined functionality pleases the developers at the expense of the end users?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; I have never believed that popularity of a device has anything to do with how well it is designed or received by customers.  The large software guys have proven time and again that being big in a space and having a ton of money can make up for a lot of deficiencies.  I say this because I don’t believe customers buy the Galaxy line because of the manufacturer improvements – most customers have never seen stock Android so they don’t know any better.  My guess is the commercial bashing the iPhone (hilariously with the parents in line) did a lot more than the user experience.  From what I’ve seen all of the added modifications make little difference to the real end users (not us tech types who are too deep in the space).  We found you could do an amazing amount of things just using the widget system in Android to change the user experience – without huge teams to build and then manage modifications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt;  Some would say that shipping the device with vanilla Android only makes sense if it’s kept up to date with AOSP (such as the Nexus line), but the MG is still on 4.0.4. Why hold the MG back? Are there plans on updating to Jelly Bean (and beyond)?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; We will update to Jelly Bean.  But with such a low saturation of Jelly Bean and many apps still not upgraded for the experience it doesn’t make sense to expend the effort.  Again we’ve got to focus on that end user experience and the only people ever asking for Jelly Bean are analysts or the random parent who just saw some article that mentioned the new Jelly Bean thingy for Android.&lt;/p&gt;
&lt;h2&gt;Expanding Android Gaming&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; One of the best features of the MG, at least for parents, is unquestionably the Family Collaboration System. While it currently sets the MG apart from the competition, would PlayMG consider bringing it to generic Android devices? Perhaps charging a monthly subscription fee when used on non-MG hardware?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; We are always weighing the pros and cons of releasing some of the proprietary apps to the Play Store.  Right now we only have to manage one device, we get to ignore fragmentation, and we have a competitive advantage.  I don’t see us releasing the apps until we are much more established.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; An advantage of putting out an Android based gaming system is, of course, that you aren’t responsible for developing or publishing games for it (unlike traditional game consoles). That said, are there plans to talk to developers about MG optimized games? Is that already happening?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; Nothing that I can talk about but we definitely have plans and some preliminary talks about using our PlayMG IP to create games.  Any game developers interested (especially if they want to do something outside of the normal bounds of gaming) should get in touch with us.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase: &lt;/strong&gt;You can’t talk about Android gaming anymore without mentioning the &lt;a href=&quot;http://www.thepowerbase.com/tag/ouya/&quot;&gt;OUYA&lt;/a&gt;; while it’s aiming for a completely different market than the MG, are there any parallels you draw between them? Do you see families owning both devices in the future?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; Mine arrives in 3 weeks (if I had more time and money I would have gotten a developer version).  I would love to work with OUYA in the future and I do believe that console gaming and portable gaming will always be with us.  Where the hardware, software, and interfaces end up who knows but for now there are many opportunities that could be explored between the two companies.  For the next year though I’m guessing both of us will be too busy to pursue them.&lt;/p&gt;
&lt;h2&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; A common criticism of the MG is that it lacks physical controls. This was a design decision based on the intended userbase for the MG, but it’s also undeniable that there are hardcore gamers out there that would appreciate an MG-like device with physical input. Is this a challenge PlayMG might take up in the future? Perhaps a device like the &lt;a href=&quot;http://en.wikipedia.org/wiki/Xperia_Play&quot;&gt;Sony Xperia Play&lt;/a&gt;, but in a non-contract form like the MG?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; I don’t see that happening.  Our target user is not hardcore and in fact probably did not grow up with a game system that had controllers.  But at an even deeper philosophical level (get ready for the fan boy to come out) I think the portable gaming systems with controls aren’t just missing the mark but don’t really have a mark to hit.  Portable gaming is about the casual experience on the go or that little block of entertainment that you carry around in your pocket.  I have so many different serious game devices where I can have mind blowingly immersive experiences – but that’s not what you want in a portable gaming device.  At the end of the day we talked to a bunch of “gamers” in our demographic and they wanted a device they could put in their pocket versus a device that let them play games designed for pre-touch devices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Powerbase:&lt;/strong&gt; If it’s not giving too much away, what can you say about the future of PlayMG and the MG itself? Anything current or future owners should be looking out for?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taylor:&lt;/strong&gt; We have some great plans for the Family Collaboration System – making it much more collaborative.  A lot of parents and even kids have asked for expanded features here.  I’m most excited about expanding the portable fun in the device.  The entire industry as a whole is barely scratching the surface of what you can do with portable gaming.  We have some very interesting things planned for making shared portable gaming experiences like no one has seen before.  Unfortunately I can’t say much more than that.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thanks to Taylor and the entire PlayMG team for their assistance and professionalism while we worked on the original hardware review and this interview. We’re very interested in seeing where the future takes PlayMG, &lt;a href=&quot;http://www.thepowerbase.com/tag/playmg/&quot;&gt;keep an eye out here on The Powerbase for future coverage&lt;/a&gt; of this unique company and its products.&lt;/em&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-06T23:57:35+00:00</dc:date>
	<dc:creator>Tom Nardi</dc:creator>
</item>
<item rdf:about="http://www.gushikustudios.com/45 at http://www.gushikustudios.com">
	<title>Gushiku Studios: Box2D video tutorials on collision filtering</title>
	<link>http://www.gushikustudios.com/content/box2d-video-tutorials-collision-filtering</link>
	<content:encoded>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Gushiku Studios has posted three Box2D tutorials to Youtube.  They primarily deal with applying collision filtering for interesting effects for games and apps.&lt;/p&gt;
&lt;p&gt;The first video is a tutorial detailing how collision filtering works via category and mask bits in Box2D.  You can find that video &lt;a href=&quot;http://www.youtube.com/watch?v=cS8yeyCHj5A&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The next video demonstrates an approach to implementing one-sided platforms using sensor fixtures.  You can find that video &lt;a href=&quot;http://www.youtube.com/watch?v=g7zkiOE7NT4&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, the last video demonstrates how to implement a railway switch type construct, similar to what you might create for a pinball game.  You can find that video &lt;a href=&quot;http://www.youtube.com/watch?v=yHvIdAaK3jk&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i4.ytimg.com/vi/g7zkiOE7NT4/mqdefault.jpg&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above clearfix&quot;&gt;&lt;h3 class=&quot;field-label&quot;&gt;Tags: &lt;/h3&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/box2d&quot;&gt;box2d&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;taxonomy-term-reference-1&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/rube&quot;&gt;rube&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;taxonomy-term-reference-2&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/physics&quot;&gt;physics&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;taxonomy-term-reference-3&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/game&quot;&gt;game&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;taxonomy-term-reference-4&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/pinball&quot;&gt;pinball&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;taxonomy-term-reference-5&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/collision-filtering&quot;&gt;collision filtering&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-04-06T22:21:41+00:00</dc:date>
	<dc:creator>gushikuadmin</dc:creator>
</item>
<item rdf:about="http://www.gushikustudios.com/44 at http://www.gushikustudios.com">
	<title>Gushiku Studios: RUBE + RubeLoader + libgdx + Box2d video = FTW</title>
	<link>http://www.gushikustudios.com/content/rube-rubeloader-libgdx-box2d-video-ftw</link>
	<content:encoded>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Gushiku Studios has posted a &lt;a href=&quot;http://www.youtube.com/watch?v=hgo7Pxtcoyk&quot;&gt;Youtube tutorial&lt;/a&gt; on using RUBE with the RubeLoader for the cross-platform development frameworks libgdx.  What is RUBE?  It stands for &quot;Really Useful Box2D Editor&quot; and the name definitely fits!  You can check out more information about RUBE on &lt;a href=&quot;http://www.iforce2d.net/rube&quot;&gt;iforce2d's website&lt;/a&gt;.  The &lt;a href=&quot;http://github.com/tescott/RubeLoader&quot;&gt;RubeLoader  repo on Github&lt;/a&gt; provides a loader that will read in .JSON data generated by RUBE for &lt;a href=&quot;http://box2d.org&quot;&gt;Box2D&lt;/a&gt; worlds using &lt;a href=&quot;http://libgdx.badlogicgames.com&quot;&gt;libgdx&lt;/a&gt;.  Included in the repo is a self-contained example demoing the capabilities of the loader along with a sample rendering approach.&lt;/p&gt;
&lt;p&gt;See ALL of Gushiku Studios releases on &lt;a href=&quot;https://play.google.com/store/apps/developer?id=Gushiku+Studios+LLC&quot;&gt;Google Play&lt;/a&gt;, &lt;a href=&quot;http://slideme.org/user/gushikustudios&quot;&gt;Slide Me &lt;/a&gt; and &lt;a href=&quot;http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dmobile-apps&amp;amp;field-keywords=gushiku+studios&quot;&gt;the Amazon App Store&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=hgo7Pxtcoyk&quot;&gt;&lt;img src=&quot;https://raw.github.com/tescott/RubeLoader/master/youtubescreenshot.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above clearfix&quot;&gt;&lt;h3 class=&quot;field-label&quot;&gt;Tags: &lt;/h3&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/rube&quot;&gt;rube&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;taxonomy-term-reference-1&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/rubeloader&quot;&gt;rubeloader&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;taxonomy-term-reference-2&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/libgdx&quot;&gt;libgdx&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;taxonomy-term-reference-3&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/box2d&quot;&gt;box2d&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;taxonomy-term-reference-4&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;http://www.gushikustudios.com/tags/game-development&quot;&gt;game development&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-03-23T18:20:09+00:00</dc:date>
	<dc:creator>gushikuadmin</dc:creator>
</item>
<item rdf:about="http://droiddevelop.tumblr.com/post/18130546943">
	<title>DroidDevelop Stream: P145: Fragments p5: Communicating events</title>
	<link>http://droiddevelop.tumblr.com/post/18130546943</link>
	<content:encoded>&lt;p&gt;In your Fragment class, if you create listener on a particular interface, and make the parent implement that interface, you can communicate via events.&lt;/p&gt;
&lt;p&gt;First create the interface:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;interface&lt;/span&gt; OnNewFragmentPressed {&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;void&lt;/span&gt; onNewFragmentPressed();&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;}&lt;/p&gt;

&lt;/blockquote&gt;
&lt;p&gt;Then create a listener method of that interface.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;class&lt;/span&gt; NewFragment &lt;span class=&quot;s1&quot;&gt;extends&lt;/span&gt; Fragment {&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;    private&lt;/span&gt; OnNewFragmentPressed &lt;span class=&quot;s2&quot;&gt;mListener&lt;/span&gt;;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;…&lt;/p&gt;

&lt;/blockquote&gt;
&lt;p&gt;Then in the onAttach() method of your Fragment, use the passed in Activity to make sure it implements the interface, and set the listener to that.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class=&quot;p1&quot;&gt;@Override&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;    &lt;span class=&quot;s2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;void&lt;/span&gt; onAttach(Activity activity) {&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;        &lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;super&lt;/span&gt;.onAttach(activity);&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;        &lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;try&lt;/span&gt; {&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;          &lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;mListener&lt;/span&gt; = (OnNewFragmentPressed) activity;&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;        &lt;span&gt; &lt;/span&gt;} &lt;span class=&quot;s2&quot;&gt;catch&lt;/span&gt;(ClassCastException e) {&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;          &lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;ClassCastException&lt;/span&gt;(activity.toString() + &lt;span class=&quot;s5&quot;&gt;” didn’t implement OnNewFragmentPressed”&lt;/span&gt;);&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;        &lt;span&gt; &lt;/span&gt;}&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;   }        &lt;/p&gt;

&lt;/blockquote&gt;
&lt;p&gt;Now you can call methods of that interface, thereby interacting with your parent Activity.&lt;/p&gt;</content:encoded>
	<dc:date>2012-02-23T15:12:17+00:00</dc:date>
</item>
<item rdf:about="http://droiddevelop.tumblr.com/post/18129487586">
	<title>DroidDevelop Stream: P144: Fragments p4: Communicating between FragmentActivity and Fragment</title>
	<link>http://droiddevelop.tumblr.com/post/18129487586</link>
	<content:encoded>&lt;p&gt;In your FragmentActivity, you can call getSupportFragmentManager().findFragmentByTag(“tag”), or findFragmentById(R.id.frag), to access the child Fragment. From there you can call its methods.&lt;/p&gt;
&lt;p&gt;Similarly, in the Fragment, you can call getActivity() to get access to the parent FragmentActivity().&lt;/p&gt;</content:encoded>
	<dc:date>2012-02-23T14:36:50+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-9132631689994782545.post-7319296623181559758">
	<title>Stripeymilk: The long road of becoming an Android 'Top Developer'</title>
	<link>http://stripeymilk.blogspot.com/2011/06/long-road-of-becoming-android-top.html</link>
	<content:encoded>Hello there! Nearly no mortal on the interwebs knows my work, but that's about to change pretty soon. I'm here with only two goals: to bring more high quality apps to the Android Market and to earn this nice &quot;Top Developer&quot; badge.&lt;br /&gt;&lt;br /&gt;To reach those goals, I'll be spending lots of time in front of the notebook, working hard on research, coding, gfx / ui design and marketing. All of that as a single indie developer.&lt;br /&gt;&lt;br /&gt;I started out by making my own clone of snake (Yeah, I can hear you sigh right there. Another one? ;) ). The snakes are mostly just for testing the waters though. Eventually I'm going to get at the more original ideas. There's lots of 'em in my notebook for sure and I'm really curious to find out what people think of it!&lt;br /&gt;&lt;br /&gt;You can find my current apps at the following url: &lt;a href=&quot;https://market.android.com/developer?pub=Stripeymilk&quot;&gt;https://market.android.com/developer?pub=Stripeymilk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let's get thing started!&lt;br /&gt;&lt;br /&gt;ps. Please don't mind the pink colors on this blog. It's the closest to what I'm currently having in mind for the actual design, but it's obviously not going to stay this way :)</content:encoded>
	<dc:date>2011-06-20T03:42:00+00:00</dc:date>
	<dc:creator>Stripeymilk</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-9132631689994782545.post-6401137781080424431">
	<title>Stripeymilk: How not to develop your games for Android - part 1</title>
	<link>http://stripeymilk.blogspot.com/2011/06/how-not-to-develop-your-games-for.html</link>
	<content:encoded>Every once in a while you'll get this genious idea for an app or game. And really, in your own mind, the idea usually is a pure stroke of genious. But some times, that's exactly the point where geniality is about to turn into something completely different...&lt;br /&gt;&lt;br /&gt;You're starting to think about how you're going to approach the idea in terms of software development. Is this toolkit the right one for your app? Might that toolkit be the perfect match? Should you rather write your app without any toolkit at all? Will it be native? Will it be Java or C++? Will you want it to be available across different platforms?&lt;br /&gt;&lt;br /&gt;Those are the questions that need to be answered on the very first day. For myself, I think cross platform compatibility is quite important because it's a lot easier to use one common code base for multiple platforms. When you fix a bug here on Android, it should often get automatically fixed on iOS as well. Or whatever other system you'd like to write your app for. It can bring down the burden on the indie developer or a small team of developers, which is a great feat if you don't have an unlimited amount of time to spare.&lt;br /&gt;&lt;br /&gt;As for native apps, I think the general idea behind it is clear; native can equal less bloat, thus it should be faster and everyone could be happy when they use your app. Right?&lt;br /&gt;&lt;br /&gt;..well, not necessarily so much!&lt;br /&gt;&lt;br /&gt;I wanted to make my app available on multiple platforms. This includes (obviously) Android, iOS, and maybe even WP7 if the guys and gals from Redmond were to allow for ordinary 3rd party developers to use C/C++. But as with WP7, each of these platforms comes with its own set of limitations.&lt;br /&gt;&lt;br /&gt;When starting development on &quot;&lt;a href=&quot;https://market.android.com/details?id=com.stripeymilk.turn&quot;&gt;Turn&lt;/a&gt;&quot; I was looking for a way to get my feet wet in multiple areas: markets and app stores, game development and how to get great ratings by delivering (I hope!) on quality.&lt;br /&gt;&lt;br /&gt;Luckily, the first person ever to rate my little app gave me all out of the full five stars (actually, it used to be four, but after fixing a little annoyance it suddenly turned into five stars :)). Woah! Now that's how you can truly movitate a developer to keep bringing on the good stuff, thank you so much!&lt;br /&gt;&lt;br /&gt;More people started to download the game and more people added five star ratings. One day, I woke up to check out the ratings again. After a bunch of full five star ratings, the worst thing happened: someone rated my game with only one star, without leaving any email, tweet or comment in the Market at all. Oh my.. how was I supposed to figure out why this person did that? Really, it's quite hard to predict why someone would think an app is worth one star when there's not a message coming along with it. I know, it can be a matter of taste and perhaps he or she just did not like the app, but I'm working hard to get my apps as stable and as nice looking as possible within the design. Is it really worth one star, even when a person just doesn't appreciate what it looks like but didn't see it crash or anything?&lt;br /&gt;&lt;br /&gt;Then, I started to look into how well my app performed on a multitude of devices. I mean, it did absolutely great on my HTC Desire, but who knows it could run very slowly on other devices. This is where I figured that some devices out there are cheap. Not only are they cheap, they're missing out on a number of very useful features as well. What came most as a shock, is that some recent devices are sold without the ability to render using the hardware, falling back to software rendering. As some of you might already know, software rendering can make things very slow, so there's probably the reason why I got my one star rating. Of course, that's still an educational guess, but I'm hoping it is.&lt;br /&gt;&lt;br /&gt;In the end there are two reasons why this could ever happen:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You're using OpenGL ES to render the graphics and specified GLES 1.0 as the minimum requirement. Bad choice. Really bad. It appears that some devices are using a software renderer called PixelFlinger, which doesn't seem to have have any 1.1 or 2.0 features and renders slowly using the cpu instead of the gpu. If PixelFlinger is there, performance is going to be very bad.&lt;/li&gt;&lt;li&gt;You're not (re)drawing only the updated parts of the screen with either OpenGL or the Android Canvas, making the device draw lots more than what would be necessary. Unfortunately, if you're going for cross platform compatibility, it's not possible to use Canvas here because it's not available through the NDK (on Android 2.0, 2.1 &amp;amp; 2.2). Drawing inside selective areas with OpenGL is not a usable option either, because there are so many Android devices out there with different implementations of OpenGL ES. On top of that, Android 2.2 and lower versions do not have support for everything needed to get things working the right way. I'll write more about that in another blog item, as it can become quite a complex issue to tackle.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;In the end, if you're going for cross platform compatibility and would like to use OpenGL ES for your app; think again. It might be a better choice to use the native Canvas API instead when you'd like your app to run on as many Android devices as possible.&lt;br /&gt;&lt;br /&gt;If you're on a reasonably fast device (that's almost any device out there, with the exception of a few), you might want to check out the result: &lt;a href=&quot;https://market.android.com/details?id=com.stripeymilk.turn&quot;&gt;Turn&lt;/a&gt;.</content:encoded>
	<dc:date>2011-06-20T04:13:00+00:00</dc:date>
	<dc:creator>Stripeymilk</dc:creator>
</item>
<item rdf:about="http://snctln.com/?p=287">
	<title>Sean Catlin: jMdns and Android 4.0</title>
	<link>http://snctln.com/2012/08/03/jmdns-and-android-4-0/</link>
	<content:encoded>&lt;p&gt;I wanted to post a quick note just in case anyone else runs into this issue or I forget it later on.&lt;/p&gt;
&lt;p&gt;jMdns is a great java library to provide zeroconf/bonjour capabilities to your Android application.  I was successfully using this in a project up until Android 4.0 “Ice Cream Sandwich” aka ICS, once Android 4.0 devices were starting to be used more often I was receiving user reports that the application was not working.  I knew it was a jmdns issue, I just didn’t have an ICS device to be able to track down the issue.&lt;/p&gt;
&lt;p&gt;Well I was at Google I/O this year and picked up a few Jelly Bean (Android 4.1) devices.  Both of these devices have the same issue that was being reported by Android 4.0 devices, basically the zeroconf functionality was not working.&lt;/p&gt;
&lt;p&gt;It took me quite a while to track down but I figured out the problem.&lt;/p&gt;
&lt;p&gt;Most jmdns Android tutorials instruct you to create your jmdns object by calling “jmdn.create();”.  This works fin in Android 2.x and 3.x, but does not always work with Android 4.x&lt;/p&gt;
&lt;p&gt;To fix the issue use the “jmdns.create(String Hostname);” constructor passing in the ip address of your wifi connection which can be obtained from a WifiInfo object from the Android WifiManager service.&lt;/p&gt;
&lt;p&gt;Hopefully this helps people in the future, it seems something changed between Android 2.x/3.x and Android 4.x where the default jmdns.create() function is no longer bound to the regular wifi interface.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;


&lt;div style=&quot;text-align: center; margin: 12px;&quot; class=&quot;adsense adsense-leadout&quot;&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2012-08-04T00:56:05+00:00</dc:date>
	<dc:creator>snctln</dc:creator>
</item>
<item rdf:about="http://snctln.com/?p=247">
	<title>Sean Catlin: snctlnSoftware is Back!</title>
	<link>http://snctln.com/2012/03/27/snctlnsoftware-is-back/</link>
	<content:encoded>&lt;p&gt;snctlnSoftware is Back!&lt;/p&gt;
&lt;p&gt;The truth is that I never really went anywhere.  I have been staying busy with Android development and have more or less learned what I need to know for iPhone development.&lt;/p&gt;
&lt;p&gt;I maintain a full time job as a Mobile Software Engineer at a company where I have been employed either full time or as a contractor for the past 6+ years.  I wrote our Android app and I maintain our iPhone app.  Objective C and Xcode is a beast, it feels very different that developing Java with eclipse or even C++ with Visual Studio, but that isn’t a problem.  Over the past year and a half I have become comfortable doing whatever it is I need to do with iOS programming and have released some good updates to our app.&lt;/p&gt;
&lt;p&gt;I have not released a new Android app under snctlnSoftware in years, that will be changing very soon.  However, I have been keeping busy with Android programming beyond my day job.  Last year I took a contract to develop a port of an iOS program and I find the finished product to be a very usable and handy utility.&lt;/p&gt;
&lt;p&gt;Recently I started a new project for my friends over at &lt;a href=&quot;http://thepowerbase.com&quot; target=&quot;_blank&quot; title=&quot;The Powerbase&quot;&gt;ThePowerbase&lt;/a&gt;, an Android app that lists their stories, basically a nice looking wordpress RSS feed reader.  It is shaping up to be a good project, and as always with my code I am implementing it as an Android library.  The current state of the library is that it works with just about any WordPress site, just add a few images and use the library t compile a good looking Android app that presents your WordPress site content in a visually appealing manner.  I even plan to make use of the library to produce an app for this site, snctln.com&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</content:encoded>
	<dc:date>2012-03-27T19:52:26+00:00</dc:date>
	<dc:creator>snctln</dc:creator>
</item>
<item rdf:about="http://www.roosmaa.net/?p=71">
	<title>Mart Roosmaa: Entry/exit animations</title>
	<link>http://feedproxy.google.com/~r/roosmaa-net-android/~3/nIVejVlmxQc/</link>
	<content:encoded>&lt;p&gt;When writing &lt;a href=&quot;http://fun2learn.roosmaa.net/&quot;&gt;FUN2Learn&lt;/a&gt; I was presented with a challenge: how to make views animate at the start and end of the activity without creating a big mess in the code. So I created a helper class to negotiate the animations for registered views and have a central place to trigger them.&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)&quot; target=&quot;_blank&quot;&gt;Activity.onCreate()&lt;/a&gt; you need to register the views that have entry/exit animations and start the entry animation if the activity is just started:&lt;/p&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;  View v1, v2, v3;
  AnimationNegotiator negotiator;
  // ...

  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    animator.register(v1, negotiator);
    animator.register(v2, negotiator);
    animator.register(v3, negotiator);
    // ...
    if (savedInstanceState == null)
      animator.animate(GroupAnimator.ANIMATION_IN);
  }
&lt;/pre&gt;
&lt;p&gt;The GroupAnimator.animate() function can also take a callback as a second argument, which is called when animations end. This is useful for using the GroupAnimator to do exit animations.&lt;/p&gt;
&lt;p&gt;To do the exit animation you need to override the &lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onKeyDown(int, android.view.KeyEvent)&quot;&gt;Activity.onKeyDown()&lt;/a&gt; method and intercept the &lt;a href=&quot;http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK&quot; target=&quot;_blank&quot;&gt;KeyEvent.KEYCODE_BACK&lt;/a&gt; key code, starting the exit animations with the callback to actually close the activity when the animations have ended. You do however want to make the implementation so that when pressing the back button twice it would exit immediately.&lt;/p&gt;
&lt;p&gt;The AnimationNegotiator is a simple callback that is used to determine the animation used for each of the visible views. When called, it receives the view in question and the animation type (in/out) as arguments and is expected to return the animation to be used. For instance a simple implementation of this could be:&lt;/p&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;public class MyActivity extends Activity implements AnimationNegotiator
{
  // ...
  public Animation negotiateAnimation(View v, int animType)
  {
    if (animType == GroupAnimator.ANIMATION_IN)
      return AnimationUtils.loadAnimation(this, R.anim.fade_in);
    if (animType == GroupAnimator.ANIMATION_OUT)
      return AnimationUtils.loadAnimation(this, R.anim.fade_out);

    return null;
  }
  // ...
}
&lt;/pre&gt;
&lt;p&gt;And finally the code for GroupAnimator itself:&lt;/p&gt;
&lt;pre class=&quot;brush: java; collapse: true; light: false; title: ; toolbar: true; notranslate&quot;&gt;package net.roosmaa.types;

import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.Iterator;

import android.view.View;
import android.view.ViewParent;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;

public class GroupAnimator
{
  public static final int ANIMATION_IN = 0;
  public static final int ANIMATION_OUT = 1;

  public interface AnimationNegotiator
  {
    Animation negotiateAnimation(View v, int animType);
  };

  public interface AnimationProgress
  {
    void animationEnded(View v, int type, int stillRunning);
  }

  private class RegInfo
  {
    public View view;
    public AnimationNegotiator negotiator;
  }

  private final ArrayList&amp;lt;RegInfo&amp;gt; regViews = new ArrayList&amp;lt;RegInfo&amp;gt;();
  private Animation defaultIn;
  private Animation defaultOut;

  public void register(View view, AnimationNegotiator negotiator)
  {
    RegInfo inf = new RegInfo();
    inf.view = view;
    inf.negotiator = negotiator;

    regViews.add(inf);
  }

  public void setDefaultAnimation(int type, Animation animation)
  {
    switch (type)
    {
    case ANIMATION_IN:
      defaultIn = animation;
      break;
    case ANIMATION_OUT:
      defaultOut = animation;
      break;
    default:
      throw new InvalidParameterException(&quot;Received an invalid type.&quot;);
    }
  }

  public void animate(int type)
  {
    animate(type, null);
  }

  private boolean checkTreeVisible(View v)
  {
    if (v.getVisibility() != View.VISIBLE)
      return false;

    ViewParent vp = v.getParent();
    if (!(vp instanceof View))
      return true;

    View p = (View) vp;
    if (p.getId() == android.R.id.content)
      return true;

    return checkTreeVisible(p);
  }

  public void animate(int type, AnimationProgress monitor)
  {
    AnimationTracker animTrk = null;

    if (monitor != null)
      animTrk = new AnimationTracker(type, monitor);

    for (RegInfo inf : regViews)
    {
      if (!checkTreeVisible(inf.view))
        continue;

      Animation anim = null;
      // Negotiate animation for the current view:
      if (inf.negotiator != null)
        anim = inf.negotiator.negotiateAnimation(inf.view, type);
      // Use default if no animation set:
      if (anim == null)
        anim = type == ANIMATION_IN ? defaultIn : defaultOut;
      // If still no animation, don't animate:
      if (anim == null)
        continue;

      if (animTrk != null)
        animTrk.track(inf.view, anim);

      inf.view.startAnimation(anim);
    }
  }

  private class AnimationTracker implements AnimationListener
  {
    private class TrackInf
    {
      public View view;
      public Animation anim;
    }

    private final int type;
    private final AnimationProgress monitor;
    private final ArrayList&amp;lt;TrackInf&amp;gt; inactive = new ArrayList&amp;lt;TrackInf&amp;gt;();
    private final ArrayList&amp;lt;TrackInf&amp;gt; active = new ArrayList&amp;lt;TrackInf&amp;gt;();

    public AnimationTracker(int type, AnimationProgress monitor)
    {
      this.type = type;
      this.monitor = monitor;
    }

    public void track(View view, Animation anim)
    {
      TrackInf inf = new TrackInf();
      inf.view = view;
      inf.anim = anim;
      inactive.add(inf);

      anim.setAnimationListener(this);
    }

    public void onAnimationStart(Animation animation)
    {
      Iterator&amp;lt;TrackInf&amp;gt; iter = inactive.iterator();
      TrackInf inf;
      while (iter.hasNext())
      {
        inf = iter.next();
        if (inf.anim != animation)
          continue;

        iter.remove();
        active.add(inf);
      }
    }

    public void onAnimationEnd(Animation animation)
    {
      Iterator&amp;lt;TrackInf&amp;gt; iter = active.iterator();
      TrackInf inf;
      while (iter.hasNext())
      {
        inf = iter.next();
        if (inf.anim != animation)
          continue;

        iter.remove();
        monitor.animationEnded(inf.view, type, active.size());
      }

      if (active.size() &amp;lt; 1)
      {
        // Active animations over, remove pending inactive;
        // (if the animation doesn't start that most likelly means that the widget is hidden)

        iter = inactive.iterator();
        while (iter.hasNext())
        {
          inf = iter.next();
          if (inf.view.getAnimation() == inf.anim)
            inf.view.setAnimation(null);
        }
        inactive.clear();
      }
    }

    public void onAnimationRepeat(Animation animation)
    {
    }
  }
}
&lt;/pre&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/roosmaa-net-android/~4/nIVejVlmxQc&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2009-09-20T13:49:14+00:00</dc:date>
	<dc:creator>Mart</dc:creator>
</item>
<item rdf:about="http://www.roosmaa.net/?p=297">
	<title>Mart Roosmaa: Thoughts for mobile in 2013 and beyond</title>
	<link>http://feedproxy.google.com/~r/roosmaa-net-android/~3/Vm9SIK_xUQ0/</link>
	<content:encoded>&lt;p&gt;Today Canonical &lt;a href=&quot;http://www.engadget.com/2013/01/02/ubuntu-for-smartphones/&quot; target=&quot;_blank&quot; title=&quot;Engadget: Canonical announces Ubuntu for smartphones, we go hands-on&quot;&gt;announced&lt;/a&gt; the &lt;a href=&quot;http://www.ubuntu.com/devices/phone&quot; target=&quot;_blank&quot; title=&quot;Ubuntu for phones&quot;&gt;mobile version&lt;/a&gt; of Ubuntu. For me as a Linux fan this is very exciting news, however, the developer in me screams: “Not another phone I need to target when writing mobile apps”. I’m surely not the only one thinking that.&lt;/p&gt;
&lt;p&gt;Currently the major smartphone OSes on the market are Apple iOS, Google Android (and Microsoft Windows Phone). Upcoming OSes that I know of and follow are: Mozilla’s &lt;a href=&quot;http://www.mozilla.org/en-US/firefoxos/&quot; target=&quot;_blank&quot; title=&quot;Firefox OS&quot;&gt;Firefox OS&lt;/a&gt;, &lt;a href=&quot;http://jolla.com/&quot; target=&quot;_blank&quot; title=&quot;Jolla&quot;&gt;Jolla’s&lt;/a&gt; &lt;a href=&quot;https://sailfishos.org/&quot; target=&quot;_blank&quot; title=&quot;Sailfish OS&quot;&gt;Sailfish&lt;/a&gt;, Blackberry’s &lt;a href=&quot;http://global.blackberry.com/blackberry-10.html&quot; target=&quot;_blank&quot; title=&quot;Blackberry 10&quot;&gt;BB10&lt;/a&gt;, Samsung’s &lt;a href=&quot;https://www.tizen.org/&quot; target=&quot;_blank&quot; title=&quot;Tizen&quot;&gt;Tizen&lt;/a&gt; and Canonical’s Ubuntu. Some of those will be released this year, other in the following years. Some might not be released at all and new ones will also try to enter the market.&lt;/p&gt;
&lt;p&gt;The current generation of devices mostly have a OS specific user experience (with an exception of Android where manufacturers can somewhat customise the experience). The clear trend is that device manufacturers and operators want to differentiate themselves with different user experiences and we (as consumers) also want to have a unique device that separates us from our friends, which fits with our personalities – meaning there is demand and room for different operating systems.&lt;/p&gt;
&lt;p&gt;If a new device is to succeed it has to have quite a large repository of apps that the user can use. That can be a taunting task for the newcomers as getting developers to make an app for their device is next to impossible due to the huge costs associated with it. In most cases that process involves rewriting the application from scratch in a different language.&lt;/p&gt;
&lt;p&gt;Here is a list of the official languages and native (UI) frameworks for each of the platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Android – Java w/ Android framework&lt;/li&gt;
&lt;li&gt;iOS – objC w/ Cocoa&lt;/li&gt;
&lt;li&gt;Windows Phone – C# w/ Silverlight&lt;/li&gt;
&lt;li&gt;Sailfish – C++ w/ QML&lt;/li&gt;
&lt;li&gt;Firefox OS – JavaScript w/ HTML5&lt;/li&gt;
&lt;li&gt;BB10 – C++ w/ QML&lt;/li&gt;
&lt;li&gt;Tizen – C w/ &lt;a href=&quot;http://www.enlightenment.org/&quot; target=&quot;_blank&quot; title=&quot;E17&quot;&gt;Enlightenment Foundation Libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu – C++ w/ QML&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As anyone who has been involved in the app developing process knows, it’s a major headache developing two mostly identical apps, but it’s more or less manageable. Developing the app for even more platforms would be infeasible (especially financially).&lt;/p&gt;
&lt;p&gt;We need tools, which would enable us to stop writing the same code over and over again for multiple platforms. There are various technologies available which do just that and can be used to create 3rd party apps, the most popular of which is the over-hyped HTML5. Others include Flash (for iOS, Android), .NET with Xamarin’s Mono products (for Android, iOS), various JavaScript based abstraction layers (&lt;a href=&quot;http://phonegap.com/&quot; target=&quot;_blank&quot; title=&quot;PhoneGap&quot;&gt;PhoneGap&lt;/a&gt;, &lt;a href=&quot;http://www.appcelerator.com/&quot; target=&quot;_blank&quot; title=&quot;Titanium&quot;&gt;Titanium&lt;/a&gt;, etc) and the list goes on.&lt;/p&gt;
&lt;p&gt;Many see HTML5 as the silver bullet here, but I tend to disagree for a couple of reasons. First the bar for performance was set really high by Apple when they released iOS and currently HTML5 cannot get anywhere near it. It is also quite difficult to get a single sane way of integrating with the device user experience due to the fragmented nature of HTML and browser technologies.&lt;/p&gt;
&lt;p&gt;Flash based apps do run fine on iOS and Android, but they lack integration with the look and feel of the underlying device. Meaning the technology is only useful for games, where the user doesn’t expect them to integrate well with the system. There is also a problem of being locked into the platform more than with other technologies – when Adobe decides to discontinue their Flash products (or export to iOS/Android feature) that’s that.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://xamar.in/r/Roosmaa/xamarin.com&quot; target=&quot;_blank&quot; title=&quot;Xamarin&quot;&gt;Xamarin&lt;/a&gt; team has brought the powerful C# language and .NET framework to both &lt;a href=&quot;http://xamar.in/r/Roosmaa/xamarin.com&quot; target=&quot;_blank&quot; title=&quot;Xamarin&quot;&gt;iOS and Android platforms&lt;/a&gt;. They have created bindings for almost 100% of the platform provided APIs, so the applications written using their technologies are as good as the ones written with the official platform frameworks. This means that when targeting multiple platforms (Andorid, iOS or Windows Phone) most of the code, which doesn’t deal with the UI directly, can be reused – resulting in fewer bugs, faster development time and decreased costs while still providing the user with a native performance and look-n-feel they’ve grown accustomed to. And because it’s all based on the open-source &lt;a href=&quot;http://www.mono-project.com/&quot; target=&quot;_blank&quot; title=&quot;Mono&quot;&gt;Mono project&lt;/a&gt; it is all true and tested, it’s fast and stable – even &lt;a href=&quot;http://unity3d.com/&quot; target=&quot;_blank&quot; title=&quot;Unity - Game engine&quot;&gt;Unity&lt;/a&gt;, the powerful gaming engine, uses Mono as it’s internal game logic engine.&lt;/p&gt;
&lt;p&gt;The last technology, which promises extensive code reuse, native performance and device specific UX is Digia’s &lt;a href=&quot;http://doc.qt.digia.com/qt/qtquick.html&quot; target=&quot;_blank&quot; title=&quot;Qt Quick&quot;&gt;Qt Quick&lt;/a&gt; (QML). Most of the new upcoming mobile OS’es use this technology and Digia &lt;a href=&quot;http://qt.digia.com/About-us/News/Digia-to-Acquire-Qt-from-Nokia/&quot; target=&quot;_blank&quot; title=&quot;Digia to Acquire Qt from Nokia&quot;&gt;is committed&lt;/a&gt; to enabling the use of this technology on iOS, Android and even Windows 8 devices. The power of Qt Quick is that it separates app code and UI very well, enabling designers to quickly create and experiment with UIs for different form factors and devices. The moment it is available on more than one smartphone platform, this technology will become a serious contender when developing apps for more than one platform, which is one of the reasons why most of the upcoming OSes are using it for their native apps.&lt;/p&gt;
&lt;p&gt;And now for some predictions for 2013.&lt;/p&gt;
&lt;p&gt;Instead of having to write and maintain several versions for the app in objC, Java and .NET companies and developers will be looking for technologies like .NET/Mono and QML to write performance critical apps and JS/HTML5 to write not-so performance critical apps. Reusing code enables more innovation on the UI side for multiple platforms.&lt;/p&gt;
&lt;p&gt;This means that when currently objC/iOS and Java/Android developers are very valuable to companies creating mobile apps, their value will decrease towards the end of the year and .NET/iOS+Android+WP and C++/QML developers will become a sought-after employee in 2014.&lt;/p&gt;
&lt;p&gt;There will be many more smartphones which aren’t iOS or Android devices and which will look and feel awesome, they will have access to most Android apps in addition to apps optimised for those devices. The hardware manufacturers, most of whom currently have almost no way to differentiate their offerings, can regain market share and release cool products that the consumers will want to buy. (Except Nokia. Sorry, but you dance to Microsoft’s slow and steady beat now. Maybe next year. Probably 2015 though.)&lt;/p&gt;
&lt;p&gt;This also means that the user experience will range vastly from device to device. Giving room for experimentation and much more choice. Apps will be available everywhere and they will fit in and be of better quality. The overall application store concept will transcend platforms and a competition of who can provide the best analytical and developer tooling will start.&lt;/p&gt;
&lt;p&gt;And now, lets wait and see what the next 12 months brings us; whatever it is, it won’t be boring!&lt;/p&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/roosmaa-net-android/~4/Vm9SIK_xUQ0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-01-02T22:32:12+00:00</dc:date>
	<dc:creator>Mart</dc:creator>
</item>
<item rdf:about="http://notionink.wordpress.com/?p=1263">
	<title>Notion Ink: Camera and More</title>
	<link>http://notionink.wordpress.com/2012/04/07/camera-and-more/</link>
	<content:encoded>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;For a change, it’s not Rohan here. Work on Camera is still a WIP. Code for the camera libraries are closed source with NVidia and getting around the camera sub-system is taking longer than expected.&lt;/p&gt;
&lt;p&gt;Having said that, if you are waiting for the camera update, voicing at Tegra &lt;a href=&quot;http://forums.nvidia.com/index.php?showforum=250&quot; target=&quot;_blank&quot;&gt;Forum&lt;/a&gt; might help though most of the questions are either deleted or never replied. &lt;a href=&quot;http://forums.developer.nvidia.com/devforum/discussion/2951/tegra-vicsi-interface&quot; target=&quot;_blank&quot;&gt;Here&lt;/a&gt; is one of the dev for Adam voicing for support, but even the last suggestion suggests to move on to OMAP&lt;/p&gt;
&lt;p&gt;As the lead for the sw, it is extremely important for us to make sure that the roadmap doesn’t break anything on Adam 1. The only option (and better one) was to opt for RenderScript.&lt;/p&gt;
&lt;p&gt;RenderScript is hardware independent (though can be tweaked) and development on RS will make sure that Adam 1 stays in SW support for at least 2 more years.&lt;/p&gt;
&lt;p&gt;RenderScript and SVG are going to be in out focus for next two-year here at Notion Ink. Below is a very small sample of RenderScript rendering an A3D model of simple sphere, with Earth Map (from Nasa), bump map created using GIMP, couple of lights and animation (not obvious from an image).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://notionink.files.wordpress.com/2012/04/device-2012-04-07-110323.png&quot;&gt;&lt;img src=&quot;http://notionink.files.wordpress.com/2012/04/device-2012-04-07-110323.png?w=720&amp;amp;h=421&quot; title=&quot;RenderScript on Eden 1.9&quot; height=&quot;421&quot; width=&quot;720&quot; alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-1268&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://notionink.files.wordpress.com/2012/04/device-2012-04-07-110353.png&quot;&gt;&lt;img src=&quot;http://notionink.files.wordpress.com/2012/04/device-2012-04-07-110353.png?w=720&amp;amp;h=421&quot; title=&quot;RenderScript on Eden 1.9 - In Motion&quot; height=&quot;421&quot; width=&quot;720&quot; alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-1269&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Frankly sharing anything on development on next versions of Eden doesn’t make sense till the camera issue is resolved. That’s the last piece of puzzle, and if you can help sport your voice on that forum, possibly we can fix things faster.&lt;/p&gt;
&lt;p&gt;As an ex developer of a leading brand you all know about, it is really fascinating to even absorb the idea of how community has made more than 200 ROM variants for Adam. Unlike Adam 1, there will be no short-cuts for 2. If something not working, it won’t go out. Our roadmap is built for next 4 years, so there will be speed differences. But one thing is clear and that’s what I bring here at NI, great products needs stronger fundamentals, and that’s what we will build first.&lt;/p&gt;
&lt;p&gt;Last words on the next generation SW approach. We are approaching the era of micro-apps. Every app cannot be tuned in for a particular user. A doctor may have 15 years of formal education and 25 years of practice, but when it comes to sw, he can’t possible build one. But if see clearly, IDEs and APIs like Android SDK and iOS SDK have worked till now to ease the development of the programmers to attract more developers, making things sometimes as easy as making a “task flow” like an accountant would do, “refer” a value in one cell of a sheet to another cell. There is a truck load of information yet to come, but first things first.&lt;/p&gt;
&lt;p&gt;Best&lt;/p&gt;
&lt;p&gt;V&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/notionink.wordpress.com/1263/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/notionink.wordpress.com/1263/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=notionink.wordpress.com&amp;amp;blog=7514688&amp;amp;post=1263&amp;amp;subd=notionink&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2012-04-07T05:55:55+00:00</dc:date>
	<dc:creator>vikramdutt9</dc:creator>
</item>
<item rdf:about="http://notionink.wordpress.com/?p=1258">
	<title>Notion Ink: Back from Hibernation!</title>
	<link>http://notionink.wordpress.com/2012/04/05/back-from-hibernation/</link>
	<content:encoded>&lt;p&gt;Hello All,&lt;/p&gt;
&lt;p&gt;We are back from hibernation now! Sorry for the break (much-needed on our end).&lt;/p&gt;
&lt;p&gt;Let me know what is flowing across your minds and I will keep you busy reading on weekends!&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #888888;&quot;&gt;Rohan Shravan&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/notionink.wordpress.com/1258/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/notionink.wordpress.com/1258/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=notionink.wordpress.com&amp;amp;blog=7514688&amp;amp;post=1258&amp;amp;subd=notionink&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2012-04-05T10:58:46+00:00</dc:date>
	<dc:creator>Rohan Shravan</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-2132734556151395676.post-5774366065025740185">
	<title>NeatPIX: Version 0.1.0.2 is out</title>
	<link>http://android-neatpix.blogspot.com/2010/01/version-0102-is-out.html</link>
	<content:encoded>This is still a preview version. We've incorporated the support to view pictures from any folder available on the SD card. There's also some improvement on the load time for the first time you run the app.</content:encoded>
	<dc:date>2010-01-30T10:28:51+00:00</dc:date>
	<dc:creator>NeatPIX Team</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-2132734556151395676.post-4340131944623343639">
	<title>NeatPIX: First Day in the Market</title>
	<link>http://android-neatpix.blogspot.com/2010/01/first-day-in-market.html</link>
	<content:encoded>So this was the first day of the app in the market and we got some feedback on the fact that the application is not loading all the images in the SD card. That's interesting because that actually happens by design. We'll let me explain that... When we were designing the application we had to prioritize some features over the others and we really though at that time that the need to load images out of the images library folder (DCIM) was not going to be a very usual condition, well, turns out we were wrong. So please rest assured that we're moving things around and this is going to be available pretty soon.</content:encoded>
	<dc:date>2010-01-26T01:29:00+00:00</dc:date>
	<dc:creator>NeatPIX Team</dc:creator>
</item>
<item rdf:about="http://androiddevblog.wordpress.com/?p=72">
	<title>Skyler Slade: A simple introduction to the Android framework</title>
	<link>http://androiddevblog.wordpress.com/2011/03/04/my-best-attempt-at-a-thorough-simple-introduction-to-the-android-framework/</link>
	<content:encoded>&lt;p&gt;	Some of the more common questions that I see posted to various Android development forums are from developers curious about, or new to the platform, and looking for a good, light introduction to it all. This is my best attempt at a thorough, simple summary.&lt;/p&gt;
&lt;p&gt;	An Android application should be thought of as a &lt;em&gt;package&lt;/em&gt; comprised of separate, loosely-coupled components connected at runtime, not as a single executable. These components work together by responding to events, or &lt;a href=&quot;http://developer.android.com/reference/android/content/Intent.html&quot;&gt;&lt;code&gt;Intents&lt;/code&gt;&lt;/a&gt;, that are broadcast by other components included in an application, or by the Android system. Each Android app has a “manifest” file, &lt;code&gt;AndroidManifest.xml&lt;/code&gt;, that lists each component that an app includes, and which &lt;code&gt;Intents&lt;/code&gt;, if any, will trigger these components to do work.&lt;/p&gt;
&lt;h3&gt;Intents&lt;/h3&gt;
&lt;p&gt;In its simplest form, an &lt;code&gt;Intent&lt;/code&gt; contains an “action” string, which is usually represented as a Java package name prefixed to something like “action.COMMAND_NAME.” An &lt;code&gt;Intent&lt;/code&gt; action might be “com.example.action.DOWNLOAD_LATEST_WEATHER,” for example. Many framework components are capable of broadcasting an &lt;code&gt;Intent&lt;/code&gt;, and likewise many framework components are capable of registering to receive these broadcasts. To be notified when a particular Intent is broadcast, an application can create a &lt;code&gt;BroadcastReceiver&lt;/code&gt; that listens for the broadcast of a specific &lt;code&gt;Intent&lt;/code&gt; action. &lt;code&gt;Intents&lt;/code&gt; are really just a way of connecting callbacks.&lt;/p&gt;
&lt;p&gt;An &lt;code&gt;Intent&lt;/code&gt; can also contain a &lt;code&gt;Map&lt;/code&gt; of key-value pairs that is sent along as “&lt;em&gt;extras&lt;/em&gt;” when the &lt;code&gt;Intent&lt;/code&gt; is broadcast. Like the value 32601 for the extra “userZipcode.”&lt;/p&gt;
&lt;h3&gt;Services and BroadcastReceivers&lt;/h3&gt;
&lt;p&gt;These separate framework components work together to support Android’s multitasking model because - among other things - they allow parts of an application to do work even when the user is doing other things, like checking his email or browsing a web page. &lt;/p&gt;
&lt;p&gt;To give an example, &lt;code&gt;BroadcastReceivers&lt;/code&gt; allow apps to be notified when the phone’s SD card is mounted, or when a text message is received, even when the app, or &lt;em&gt;package&lt;/em&gt;, to which the component belongs is not in the foreground. Likewise, &lt;code&gt;Services&lt;/code&gt; allow an app to perform long-running tasks in the background, like playing music. &lt;code&gt;Services&lt;/code&gt; and &lt;code&gt;BroadcastReceivers&lt;/code&gt; can be combined to create an application that performs a task triggered by a system event, like downloading the latest weather report when the phone’s location changes.&lt;/p&gt;
&lt;p&gt;Note that &lt;code&gt;Services&lt;/code&gt; allow applications to do work in the background only in the sense that an application is doing work without any of its &lt;code&gt;Activities&lt;/code&gt; being open and visible to the the user in the foreground, though this work is still being done on the app’s main, or UI, thread. It’s important to understand that all framework components, and almost all SDK-provided framework component instances, run on the main thread. One exception that I’m aware of is &lt;a href=&quot;http://developer.android.com/reference/android/app/IntentService.html&quot;&gt;&lt;code&gt;IntentService&lt;/code&gt;&lt;/a&gt;, which is useful if you want to perform a task in the background, on a background thread.&lt;/p&gt;
&lt;h3&gt;Activities&lt;/h3&gt;
&lt;p&gt;As alluded to, &lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html&quot;&gt;&lt;code&gt;Activities&lt;/code&gt;&lt;/a&gt; are the parts of an app that users can see and with which they may interact. An &lt;code&gt;Activity&lt;/code&gt; has a view which is built from xml that you create, and it can contain widgets like buttons, text input fields, date pickers, and other common user-interface components. It also contains these views’ click-listeners and any other supporting code. &lt;code&gt;Activities&lt;/code&gt; allow an application to show &lt;code&gt;AlertDialogs&lt;/code&gt;, &lt;code&gt;ProgressDialogs&lt;/code&gt;, &lt;code&gt;Toast&lt;/code&gt; notifications, and other things that can be used to grab a user’s attention or prompt him for input. Using callbacks that you may override, &lt;code&gt;Activities&lt;/code&gt; can have menus that are activated by the phone’s “menu” hard-key, and list items can have long-press, or context, menus.&lt;/p&gt;
&lt;h3&gt;ContentProviders&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://developer.android.com/reference/android/content/ContentProvider.html&quot;&gt;&lt;code&gt;ContentProviders&lt;/code&gt;&lt;/a&gt; are used to make an application’s data available to other apps on a user’s phone. A scheduling app might make its appointments available to be read by other applications, using a &lt;code&gt;ContentProvider&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Putting it together&lt;/h3&gt;
&lt;p&gt;You can use as many of these components in your application, or &lt;em&gt;package&lt;/em&gt;, as you like: there’s nothing in the framework that restricts you to using one single &lt;code&gt;Activity&lt;/code&gt;, or even one single &lt;code&gt;Service&lt;/code&gt;, and there’s nothing in the framework that requires you to use any components that you don’t need. For example, the Grooveshark app has 31 &lt;code&gt;Activities&lt;/code&gt;, 3 &lt;code&gt;Services&lt;/code&gt;, many &lt;code&gt;BroadcastReceivers&lt;/code&gt;, but no &lt;code&gt;ContentProviders&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;As a person uses an Android app, they navigate from &lt;code&gt;Activity&lt;/code&gt; to &lt;code&gt;Activity&lt;/code&gt;, just as they might browse a series of pages on a web site. And just like URL arguments or forms are used to send information from page-to-page, Android apps use &lt;code&gt;Intent&lt;/code&gt; &lt;em&gt;extras&lt;/em&gt; to send things between &lt;code&gt;Activities&lt;/code&gt;. Just as a person might leave a web site at any time, a user of an Android app might leave, or pause, the app at any time by pressing the phone’s “home” hard key. The framework provides callbacks that you may override in your &lt;code&gt;Activity&lt;/code&gt; instances, letting you save and resume state when this happens.&lt;/p&gt;
&lt;p&gt;Undoubtedly, parts of the Android framework documentation can be overwhelming and confusing, but the basics don’t have to be. The SDK documentation has improved immensely over the past year, and I’ve no doubt that it will continue to get better going forward.&lt;/p&gt;
&lt;p&gt;For a more in-depth discussion of framework components and their usage, the SDK Application Fundamentals doc is an absolutely fantastic resource, which you can read at &lt;a href=&quot;http://developer.android.com/guide/topics/fundamentals.html&quot;&gt;http://developer.android.com/guide/topics/fundamentals.html&lt;/a&gt;. If you’re still curious about Android development, read through this a few times and really be sure that you’ve got a good understanding of the basics before you move on to any advanced concepts.&lt;/p&gt;
&lt;p&gt;Good luck writing apps!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/androiddevblog.wordpress.com/72/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/androiddevblog.wordpress.com/72/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=androiddevblog.wordpress.com&amp;amp;blog=18879061&amp;amp;post=72&amp;amp;subd=androiddevblog&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2011-03-04T06:18:39+00:00</dc:date>
	<dc:creator>Skyler Slade</dc:creator>
</item>
<item rdf:about="http://androiddevblog.wordpress.com/?p=7">
	<title>Skyler Slade: Sharing complex Dialog interactions across multiple Activities</title>
	<link>http://androiddevblog.wordpress.com/2011/02/09/sharing-complex-dialog-interactions-across-multiple-activities/</link>
	<content:encoded>&lt;p&gt;One of the more common problems that I have run into in Android application development is how to reuse complex, multi-step dialog actions across multiple activities while avoiding code duplication.&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&quot;http://www.grooveshark.com&quot;&gt;Grooveshark&lt;/a&gt; &lt;a href=&quot;https://market.android.com/details?id=com.grooveshark.android.v1&quot;&gt;Android app&lt;/a&gt;, several instances of &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; and &lt;span style=&quot;font-family: courier;&quot;&gt;ListActivity&lt;/span&gt; give the user the option to add a song to a playlist. Choosing to add to a playlist starts a multi-step series of &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; actions: the user is asked if they want to add the song to an existing playlist, or to create a new playlist. If the user chooses to add to an existing playlist, they’re presented with a radio-list of their playlists, otherwise they’re asked to enter a name for their new playlist. After entering a name and pressing save, a &lt;span style=&quot;font-family: courier;&quot;&gt;ProgressDialog&lt;/span&gt; is shown while a network request is made to create the playlist through Grooveshark’s API. If the user chooses to add a song to an existing playlist, a network request is then made to the Grooveshark API to add the song to the playlist, spawning a &lt;span style=&quot;font-family: courier;&quot;&gt;ProgressDialog&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;As a rule, when making any network requests from the app, a “cancelable” indeterminate &lt;span style=&quot;font-family: courier;&quot;&gt;ProgressDialog&lt;/span&gt; must be shown. If the user cancels the operation by pressing their phone’s “back” hard-key, the network request should be canceled immediately, and any resources freed. Additionally, all dialogs must respond to application configuration changes—like an orientation change—and any ongoing network requests must survive these configuration changes, too.&lt;/p&gt;
&lt;p&gt;This “add to playlist” interaction requires eight dialogs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;“Create new playlist or add to existing” &lt;span style=&quot;font-family: courier;&quot;&gt;AlertDialog&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;An AlertDialog for entering a new playlist name, or&lt;/li&gt;
&lt;li&gt;A &lt;span style=&quot;font-family: courier;&quot;&gt;ProgressDialog&lt;/span&gt; shown when loading a user’s list of playlists, and,&lt;/li&gt;
&lt;li&gt;An &lt;span style=&quot;font-family: courier;&quot;&gt;AlertDialog&lt;/span&gt; with single-choice items for picking a playlist from the user’s list of playlists&lt;/li&gt;
&lt;li&gt;A &lt;span style=&quot;font-family: courier;&quot;&gt;ProgressDialog&lt;/span&gt; shown when creating a new playlist and saving a song to this playlist, or&lt;/li&gt;
&lt;li&gt;A &lt;span style=&quot;font-family: courier;&quot;&gt;ProgressDialog&lt;/span&gt; shown when adding a song to an existing playlist&lt;/li&gt;
&lt;li&gt;An &lt;span style=&quot;font-family: courier;&quot;&gt;AlertDialog&lt;/span&gt; shown when creating a new playlist fails, or&lt;/li&gt;
&lt;li&gt;An &lt;span style=&quot;font-family: courier;&quot;&gt;AlertDialog&lt;/span&gt; shown when adding a song to an existing playlist fails&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This process uses three separate &lt;span style=&quot;font-family: courier;&quot;&gt;AsyncTask&lt;/span&gt; instances:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Loading the logged-in user’s complete list of playlist names either from a network request or from the local database&lt;/li&gt;
&lt;li&gt;Creating a new playlist and adding a song to it&lt;/li&gt;
&lt;li&gt;Adding a song to an existing playlist&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a complex set of interactions that totals around 600 lines of code, and this set of interactions needs to be launched from nearly every &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; in the Grooveshark application.&lt;/p&gt;
&lt;p&gt;Most of these activities are instances of ListActivity—the user’s list of favorite songs, popular songs, cached songs, playlist songs, song search results, etc.—so this &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; and &lt;span style=&quot;font-family: courier;&quot;&gt;AsyncTask&lt;/span&gt; code could live in a base &lt;span style=&quot;font-family: courier;&quot;&gt;ListActivity&lt;/span&gt; class from which all other list activities derive. The Grooveshark application does make use of a base &lt;span style=&quot;font-family: courier;&quot;&gt;ListActivity&lt;/span&gt; class that provides a common context and option menu, but not all activities needing the “Add to Playlist” feature are instances of &lt;span style=&quot;font-family: courier;&quot;&gt;ListActivity&lt;/span&gt; but not all activities needing the “Add to Playlist” feature are instances of &lt;span style=&quot;font-family: courier;&quot;&gt;ListActivity&lt;/span&gt;;  “NowPlaying”—our player and queue &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt;—is a notable example.&lt;/p&gt;
&lt;p&gt;Composition could be used to give each &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; needing “Add to Playlist” functionality these dialogs and &lt;span style=&quot;font-family: courier;&quot;&gt;AsyncTask&lt;/span&gt; instances, but this would require a litany of cumbersome callbacks to connect the host activity’s lifecycle callbacks to our proxy object—callbacks like &lt;span style=&quot;font-family: courier;&quot;&gt;onCreateDialog()&lt;/span&gt; to create our eight dialogs, and &lt;span style=&quot;font-family: courier;&quot;&gt;onRetainNonConfigurationInstance()&lt;/span&gt; to keep a reference to any active &lt;span style=&quot;font-family: courier;&quot;&gt;AsyncTask&lt;/span&gt; instances across &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; configuration changes.&lt;/p&gt;
&lt;p&gt;My ideal solution to this problem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does not unnecessarily duplicate code&lt;/li&gt;
&lt;li&gt;Does not use object inheritance&lt;/li&gt;
&lt;li&gt;Does not use object composition&lt;/li&gt;
&lt;li&gt;Encapsulates all &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; creation and display code&lt;/li&gt;
&lt;li&gt;Encapsulates all relevant &lt;span style=&quot;font-family: courier;&quot;&gt;AsyncTask&lt;/span&gt; code&lt;/li&gt;
&lt;li&gt;Can be launched from any application &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Can respond to all &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; lifecycle methods&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The solution I’ve found that fulfills all of our requirements uses a single transparent &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; instance to handle all related &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; steps. This host &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; contains all &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; code in &lt;span style=&quot;font-family: courier;&quot;&gt;onCreateDialog()&lt;/span&gt;—and &lt;span style=&quot;font-family: courier;&quot;&gt;onPrepareDialog()&lt;/span&gt;, if necessary—and encapsulates all of its network requests and database interactions in member &lt;span style=&quot;font-family: courier;&quot;&gt;AsyncTask&lt;/span&gt; instances. I call this the “transparent dialog-host activity” pattern, and the Grooveshark app uses this for its “Add to Playlist” feature, and in other places.&lt;/p&gt;
&lt;h3&gt;Transparent Dialog-Host Activity&lt;/h3&gt;
&lt;p&gt;I’ve put together a demo application to demonstrate how to use this pattern. It’s a simple to-do list app that let’s you create and edit to-do items. The demo app has two &lt;span style=&quot;font-family: courier;&quot;&gt;ListActivity&lt;/span&gt; instances and one transparent &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; instance that hosts its dialogs. We’ll walk through the important parts, and you can grab the entire source from the &lt;a href=&quot;https://github.com/skyler/transparentdialog-hostactivity&quot;&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Getting Started&lt;/h3&gt;
&lt;p&gt;First create the &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; to contain your &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; instances. In the demo application I linked to, this is the &lt;span style=&quot;font-family: courier;&quot;&gt;DialogTasks.java&lt;/span&gt; file. All dialogs are activity-managed, which means that on configuration change, Android handles dismissing and reopening any dialogs that were open before the configuration changed occurred.&lt;/p&gt;
&lt;p&gt;It is always best to use managed dialogs; do not create and show dialogs on your own, always use &lt;span style=&quot;font-family: courier;&quot;&gt;onCreateDialog()&lt;/span&gt;, &lt;span style=&quot;font-family: courier;&quot;&gt;onPrepareDialog()&lt;/span&gt;, &lt;span style=&quot;font-family: courier;&quot;&gt;showDialog()&lt;/span&gt; and &lt;span style=&quot;font-family: courier;&quot;&gt;dismissDialog()&lt;/span&gt; or &lt;span style=&quot;font-family: courier;&quot;&gt;removeDialog()&lt;/span&gt;. Showing and dismissing dialogs without knowledge of and the ability to respond to lifecycle and configuration changes can be extremely error-prone and will crash your entire application if you do it wrong.&lt;/p&gt;
&lt;p&gt;In &lt;span style=&quot;font-family: courier;&quot;&gt;DialogTasks.java&lt;/span&gt; we first define our dialog id constants:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush: java;&quot;&gt;private static final int EDIT_NAME_DIALOG = 0;
private static final int EDIT_DATE_DIALOG = 1;
private static final int CREATE_NEW_DIALOG = 2;
private static final int SAVING_DIALOG = 3;
private static final int DATE_PICKER_DIALOG = 4;
private static final int CONFIRM_DELETE_DIALOG = 5;
private static final int DELETING_DIALOG = 6;
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And we define our dialogs in our activity’s &lt;span style=&quot;font-family: courier;&quot;&gt;onCreateDialog()&lt;/span&gt; method. Our demo program uses seven dialogs: a &lt;span style=&quot;font-family: courier;&quot;&gt;DatePickerDialog&lt;/span&gt; for choosing your to-do item’s due date, four &lt;span style=&quot;font-family: courier;&quot;&gt;AlertDialog&lt;/span&gt; instances for collecting input and showing a confirmation prompt, and two &lt;span style=&quot;font-family: courier;&quot;&gt;ProgressDialog&lt;/span&gt; instances that we show when saving changes.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush: java; wrap-lines: false;&quot;&gt;/**
 * Lifecycle method invoked to create a dialog shown via showDialog()
 * NOTE: we override the older, deprecated method so that we can work
 * on older sdk versions.
 */
@Override
public Dialog onCreateDialog(int which)
{
    if (which == EDIT_NAME_DIALOG) {
        final View dialogView = getLayoutInflater().inflate(R.layout.new_task_dialog, null);
        AlertDialog dialog = new AlertDialog.Builder(this)
            .setView(dialogView)
            .setTitle(R.string.edit_task_title)
            .setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id)
                {
                    String name = ((EditText) dialogView.findViewById(R.id.task_name_edit)).getText().toString();
                    ToDoList.ToDoItem toDoItem = new ToDoList.ToDoItem(name,
                            currentToDoItem.year,
                            currentToDoItem.monthOfYear,
                            currentToDoItem.dayOfMonth);
                    ToDoList.getInstance().remove(currentToDoItem);
                    ToDoList.getInstance().add(editedToDoItem);
                    showDialog(SAVING_DIALOG);
                    // Normally this would start an AsyncTask to make a network request or
                    // to write to a local database, but for this demo I'm using a Handler
                    // on the main thread to simulate the delay of sending a network request
                    // and waiting for its response.
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run()
                        {
                            Toast.makeText(DialogTasks.this, R.string.task_updated,
                                    Toast.LENGTH_SHORT).show();
                            setResult(RESULT_OK);
                            finish();
                        }
                    }, 3000);
                }
            })
            .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id)
                {
                    setResult(RESULT_CANCELED);
                    finish();
                }
            }).create();
        return dialog;
    }
}
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Rather than post the entire &lt;span style=&quot;font-family: courier;&quot;&gt;onCreateDialog()&lt;/span&gt; implementation from the demo, which is a bit lengthy, I’ve only posted an excerpt so that I can point out a few key things. Note that for both the “save” and “cancel” buttons, in their on-click listeners we set an activity result code via &lt;span style=&quot;font-family: courier;&quot;&gt;setResult()&lt;/span&gt; and we call &lt;span style=&quot;font-family: courier;&quot;&gt;finish()&lt;/span&gt; to end our containing &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt;. &lt;span style=&quot;font-family: courier;&quot;&gt;DialogTasks.java&lt;/span&gt; can be launched with &lt;span style=&quot;font-family: courier;&quot;&gt;startActivityForResult()&lt;/span&gt;, as it is from our demo’s &lt;span style=&quot;font-family: courier;&quot;&gt;ToDoListActivity.java&lt;/span&gt;, and in this instance, the result code from &lt;span style=&quot;font-family: courier;&quot;&gt;DialogTasks.java&lt;/span&gt; is used to update its list.&lt;/p&gt;
&lt;p&gt;It’s important to &lt;span style=&quot;font-family: courier;&quot;&gt;finish()&lt;/span&gt; your dialog activity from any “last step” of your dialog actions. If you do not invoke &lt;span style=&quot;font-family: courier;&quot;&gt;finish()&lt;/span&gt; when the last &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; closes, a user of your application will be able to see whatever activity instance was open before the dialog activity launched, but they will not be able to interact with it–it will not receive any touch or menu events until the phone’s “back” hard-key is pressed.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;DialogTasks.java&lt;/span&gt; supports four work-flows: creating a new to-do item, editing its name, editing its due date, and deleting a to-do item. To pick which work-flow, or task, to start, we use extras in the &lt;span style=&quot;font-family: courier;&quot;&gt;Intent&lt;/span&gt; used to start our activity.&lt;/p&gt;
&lt;p&gt;These &lt;span style=&quot;font-family: courier;&quot;&gt;Intent&lt;/span&gt; extras are defined in &lt;span style=&quot;font-family: courier;&quot;&gt;DialogTasks.java&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush: java;&quot;&gt;/**
 * Extra sent to create a new ToDo item
 */
public static final String CREATE_TODO_EXTRA = &quot;createToDo&quot;;
/**
 * Extra sent to edit an existing ToDo item's name
 */
 public static final String EDIT_TODO_NAME_EXTRA = &quot;editToDoName&quot;;
/**
 * Extra sent to delete an existing ToDo item
 */
public static final String DELETE_TODO = &quot;deleteToDo&quot;;
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And &lt;span style=&quot;font-family: courier;&quot;&gt;DialogTasks.java&lt;/span&gt; can be launched from any other &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; like so:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush: java; gutter: false;&quot;&gt;Intent i = new Intent(this, DialogTasks.class);
i.putExtra(DialogTasks.CREATE_TODO_EXTRA, true);
i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(i);
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Note that when starting our dialog-host activity, we disable Android’s transition animation with the &lt;span style=&quot;font-family: courier;&quot;&gt;Intent.FLAG_ACTIVITY_NO_ANIMATION&lt;/span&gt; flag. Without disabling the transition animation, the first &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; opened from our transparent &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; would appear to open with an activity’s animation rather than the usual &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; animation. On stock Android 2.x—API level 5—the dialog would appear as it slid-in from the right. This flag is only available on API levels 5 and higher, but luckily on stock Android versions prior to API level 5, the &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; transition animation is the same zoom-in effect used when opening activities, so the extra animation isn’t noticeable.&lt;/p&gt;
&lt;p&gt;In &lt;span style=&quot;font-family: courier;&quot;&gt;DialogTasks.java&lt;/span&gt; we check which extras are set, and start the specified work-flow by displaying the first dialog of the task.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush: java;&quot;&gt;@Override
public void onCreate(Bundle inState)
{
    super.onCreate(inState);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        currentToDoItem = extras.getParcelable(ToDoList.ToDoItem.TODO_EXTRA);
        if (extras.containsKey(CREATE_TODO_EXTRA)) {
            showDialog(CREATE_NEW_DIALOG);
        } else if (extras.containsKey(EDIT_TODO_NAME_EXTRA)) {
            showDialog(EDIT_NAME_DIALOG);
        } else if (extras.containsKey(DELETE_TODO)
                &amp;amp;&amp;amp; extras.containsKey(ToDoList.ToDoItem.TODO_EXTRA)) {
            showDialog(CONFIRM_DELETE_DIALOG);
        } else {
            finish();
        }
        /*
         * Overwrite our Intent's original extras so that on configuration
         * change we do not create duplicate, overlapping dialogs. Recall that
         * on configuration change, Android will re-create and show any
         * already-open managed dialogs.
         */
        Intent intent = getIntent();
        if (intent != null) {
            intent.replaceExtras((Bundle) null);
        }
    }
}
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Note that we replace our activity’s &lt;span style=&quot;font-family: courier;&quot;&gt;getIntent()&lt;/span&gt; extras with an empty &lt;span style=&quot;font-family: courier;&quot;&gt;Bundle.&lt;/span&gt; As mentioned in the source code comments, it’s important to replace these extras because on configuration change, the original &lt;span style=&quot;font-family: courier;&quot;&gt;Intent&lt;/span&gt; is re-delivered to our new &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; instance.&lt;/p&gt;
&lt;p&gt;Recall that when using activity-managed dialogs, Android handles removing and re-displaying any open &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; instances on configuration change. If we do not replace our activity’s &lt;span style=&quot;font-family: courier;&quot;&gt;Intent&lt;/span&gt; extras, when this event occurrs, overlapping dialogs will be shown: both the initial dialog opened in &lt;span style=&quot;font-family: courier;&quot;&gt;onCreate()&lt;/span&gt; by one of our &lt;span style=&quot;font-family: courier;&quot;&gt;Intent&lt;/span&gt; extras, and the re-displayed &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; that was previously closed by Android.&lt;/p&gt;
&lt;p&gt;Finally we make our &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; transparent and and remove its title bar by specifying styling options in &lt;span style=&quot;font-family: courier;&quot;&gt;AndroidManifest.xml&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;activity android:name=&quot;DialogTasks&quot;
          android:theme=&quot;@android:style/Theme.Translucent.NoTitleBar&quot;
          android:noHistory=&quot;true&quot; /&amp;gt;
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;A Caveat&lt;/h3&gt;
&lt;p&gt;So far the only thing that doesn’t work as you would expect it to when displaying dialogs in this way is that the underlying activity’s options menu is not shown when the phone’s “menu” hard-key is pressed. This is because the foreground, transparent &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; has focus, so all key events are delivered to it. This hasn’t yet been a problem in the Grooveshark app.&lt;/p&gt;
&lt;h3&gt;When to use this pattern&lt;/h3&gt;
&lt;p&gt;Any time you have a set of dialogs that are part of a “wizard-like” process–moving from step 1.) to step 2.), collecting user input and showing different dialogs in response to user input—if this functionality is needed from multiple &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; instances, it’s a good place to use transparent dialog-host activities. If you only need to show these dialogs from a single place in your app, this pattern isn’t a good fit. Additionally if you need to display only a single &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; from multiple &lt;span style=&quot;font-family: courier;&quot;&gt;Activity&lt;/span&gt; instances, you should bite the bullet and define all of your &lt;span style=&quot;font-family: courier;&quot;&gt;Dialog&lt;/span&gt; code from within each individual activity’s &lt;span style=&quot;font-family: courier;&quot;&gt;onCreateDialog()&lt;/span&gt; method.&lt;/p&gt;
&lt;p&gt;Don’t forget to grab the &lt;a href=&quot;https://github.com/skyler/transparentdialog-hostactivity&quot;&gt;source code&lt;/a&gt; and have fun!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/androiddevblog.wordpress.com/7/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/androiddevblog.wordpress.com/7/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=androiddevblog.wordpress.com&amp;amp;blog=18879061&amp;amp;post=7&amp;amp;subd=androiddevblog&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2011-02-09T02:31:42+00:00</dc:date>
	<dc:creator>Skyler Slade</dc:creator>
</item>
<item rdf:about="http://android.opensourceror.org/?p=8">
	<title>Android from Scratch: My emulator looks different than in the examples!</title>
	<link>http://android.opensourceror.org/2009/12/08/my-emulator-looks-different-than-in-the-examples/</link>
	<content:encoded>&lt;div&gt;
&lt;p&gt;Illustrations of emulator usage &lt;a href=&quot;http://www.manning.com/ableson/&quot; target=&quot;_blank&quot;&gt;in books&lt;/a&gt; and &lt;a href=&quot;http://blogspot.fluidnewmedia.com/2009/04/displaying-google-maps-in-the-android-emulator/&quot; target=&quot;_blank&quot;&gt;on the web&lt;/a&gt; have emulator skins that look like devices, but if your SDK is at all recent, the emulator doesn’t look like that – the screen is bare. This is a seemingly insignificant thing, but strangely no one seems to talk about it. I didn’t find any documentation explaining this – I had to ask like a n00b on the IRC channel. Well, to save you the embarrassment – it’s pretty simple. For the API 1.5 and before, the emulator looks like a device. For 1.6 and after, it doesn’t. If you really want your emulator to look like that, you need to use an emulator targeted at 1.5 or before – as far as I can tell, there’s no setting you can use to configure 1.6 or 2.0 to show the device skin from 1.5.&lt;/p&gt;
&lt;div style=&quot;width: auto; height: auto;&quot;&gt;
&lt;div style=&quot;width: 1034px;&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;img height=&quot;577&quot; src=&quot;https://wave.googleusercontent.com/wave/attachment/emulator-skins.png?id=bVzvsH3f13&amp;amp;key=AH0qf5x26L6IQH5VA7Gj1QLzbYw-TfgOjw&quot; alt=&quot;Emulators for versions 1.5 and 1.6&quot; title=&quot;Emulator skins&quot; width=&quot;1024&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Emulators for versions 1.5 and 1.6&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-12-09T00:22:28+00:00</dc:date>
	<dc:creator>luke</dc:creator>
</item>
<item rdf:about="http://android.opensourceror.org/?p=60">
	<title>Android from Scratch: Attaching Android platform source in Eclipse</title>
	<link>http://android.opensourceror.org/2010/01/18/android-source/</link>
	<content:encoded>&lt;div style=&quot;text-align: left;&quot; class=&quot;mceTemp mceIEcenter&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot; class=&quot;mceTemp mceIEcenter&quot;&gt;Are you tired of seeing this when you look at your platform JAR in Eclipse?&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot; class=&quot;mceTemp mceIEcenter&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;width: 810px;&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;img height=&quot;549&quot; src=&quot;http://www.mediafire.com/imgbnc.php/f55363afb5cae0909f019e1a3cc1e43b6g.jpg&quot; alt=&quot;&quot; title=&quot;Platform class with no source in the editor&quot; width=&quot;800&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Dude, where's my source? &lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;span id=&quot;more-60&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Or how about this when you’re debugging?&lt;/p&gt;
&lt;div style=&quot;width: 710px;&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;img height=&quot;457&quot; src=&quot;http://www.mediafire.com/imgbnc.php/22f99041712cbe59d8d47a94b1af9d8c5g.jpg&quot; alt=&quot;&quot; title=&quot;Debugging platform class with no source&quot; width=&quot;700&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;How am I supposed to debug this?&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Android is open source, right? So how do we see the source?&lt;/p&gt;
&lt;h1&gt;Some background&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: #993300;&quot;&gt;&lt;em&gt;&lt;strong&gt;Tip: If you’re just here to get it working and don’t care where it came from, you can skip on a bit.&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article summarizes and augments three other posts that spelled out how to get the source and use it. It is surprisingly difficult to get your hands on the correct version of the source you need for this purpose, so in addition to describing that process I’m providing the end result for your convenience.&lt;/p&gt;
&lt;h2&gt;My sources&lt;/h2&gt;
&lt;p&gt;My three source posts are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.michael-forster.de/2008/12/view-android-source-code-in-eclipse.html&quot;&gt;View Android Source Code in Eclipse&lt;/a&gt; by &lt;a href=&quot;http://blog.michael-forster.de/&quot; target=&quot;_blank&quot;&gt;Dr. Michael Forster&lt;/a&gt; of Google&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://stuffthathappens.com/blog/2008/11/01/browsing-android-source-in-eclipse/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Browsing Android Source in Eclipse&quot;&gt;Browsing Android Source in Eclipse&lt;/a&gt; by &lt;a href=&quot;http://stuffthathappens.com/blog/&quot; target=&quot;_blank&quot;&gt;Eric Burke&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;sites-page-title&quot; dir=&quot;ltr&quot;&gt;&lt;a href=&quot;http://source.android.com/download/&quot; target=&quot;_blank&quot;&gt;Get source&lt;/a&gt; from the &lt;a href=&quot;http://source.android.com/&quot; target=&quot;_blank&quot;&gt;Android Open Source Project&lt;/a&gt;&lt;/span&gt;&lt;span id=&quot;sites-page-title&quot; dir=&quot;ltr&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both the posts and the comments were very helpful, but somewhat out of date now. How to put it all together?&lt;/p&gt;
&lt;h2&gt;Getting the right code&lt;/h2&gt;
&lt;p&gt;The source is all available, but it’s spread out among several projects which put together constitute the Android Open Source Project. Thus I needed to install the repo tool (as described on the “&lt;span id=&quot;sites-page-title&quot; dir=&quot;ltr&quot;&gt;&lt;a href=&quot;http://source.android.com/download/&quot; target=&quot;_blank&quot;&gt;Get source&lt;/a&gt;&lt;/span&gt;” page) in order to pull down all of the relevant git repositories. The articles describe getting the latest code – the trick is getting the code specific to the platform version you’re working on; at the time everyone was working with 1.0!&lt;/p&gt;
&lt;p&gt;When you sync the Android repos, you’ll see output describing the available branches and tags something like this:&lt;/p&gt;
&lt;pre&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt; * [new branch]      cupcake    -&amp;gt; korg/cupcake
 * [new branch]      cupcake-release -&amp;gt; korg/cupcake-release
 * [new branch]      donut      -&amp;gt; korg/donut
 * [new branch]      donut-release -&amp;gt; korg/donut-release
 * [new branch]      eclair     -&amp;gt; korg/eclair
 * [new branch]      master     -&amp;gt; korg/master
 * [new branch]      release-1.0 -&amp;gt; korg/release-1.0
 * [new tag]         android-1.0 -&amp;gt; android-1.0
 * [new tag]         android-1.5 -&amp;gt; android-1.5
 * [new tag]         android-1.5r2 -&amp;gt; android-1.5r2
 * [new tag]         android-1.5r3 -&amp;gt; android-1.5r3
 * [new tag]         android-1.5r4 -&amp;gt; android-1.5r4
 * [new tag]         android-1.6_r1 -&amp;gt; android-1.6_r1
 * [new tag]         android-1.6_r1.1 -&amp;gt; android-1.6_r1.1
 * [new tag]         android-1.6_r1.2 -&amp;gt; android-1.6_r1.2&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;This list generally contains some other random stuff and varies by project. The tags seem to be logically named and standardized across projects, but I couldn’t find how to get the repo tool to pull source based on a tag (if someone knows, by all means comment below). Repo takes the -b option to specify a branch however, and the cupcake / donut / eclair branches are universal, so those are what I used to make the source archives linked in this article, e.g.:&lt;/p&gt;
&lt;pre&gt;repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
repo sync&lt;/pre&gt;
&lt;p&gt;Of course, branches are generally moving targets, so caveat emptor.&lt;/p&gt;
&lt;h2&gt;Assembling the code as Eclipse expects it&lt;/h2&gt;
&lt;p&gt;If you follow the above and have a good connection and some patience, you’ll eventually have a directory full of some 2GiB of “stuff,” some of which is the source code you’re looking for. But Eclipse needs just the source, in just the right place. Forster’s post “&lt;a href=&quot;http://blog.michael-forster.de/2008/12/view-android-source-code-in-eclipse.html&quot;&gt;View Android Source Code in Eclipse&lt;/a&gt;” provides a python script for rounding up the source code and creating a nice zip archive out of it, and Burke’s post “&lt;a href=&quot;http://stuffthathappens.com/blog/2008/11/01/browsing-android-source-in-eclipse/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Browsing Android Source in Eclipse&quot;&gt;Browsing Android Source in Eclipse&lt;/a&gt;” describes how to figure out where to put it – in a “sources” directory created underneath the SDK platform directory. Other comments on those posts are helpful for coercing Eclipse to recognize that the source is available.&lt;/p&gt;
&lt;h1&gt;What you came here for&lt;/h1&gt;
&lt;p&gt;Without further ado, here’s how you attach source to your platform classes. N.B. all screenshots are from Eclipse 3.5 “Galileo” – other versions may differ significantly.&lt;/p&gt;
&lt;h2&gt;Download source&lt;/h2&gt;
&lt;p&gt;Download the zipped source code that I’ve gathered for each platform you are developing for.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mediafire.com/file/mywjymazt3m/sources-1.5-cupcake.zip&quot; target=&quot;_blank&quot;&gt;Cupcake (1.5)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mediafire.com/file/r0uzq1f0e0m/sources-1.6-donut.zip&quot; target=&quot;_blank&quot;&gt;Donut (1.6)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mediafire.com/file/mninnmzznxc/sources-2.1-eclair.zip&quot; target=&quot;_blank&quot;&gt;Eclair (2.1)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Put the source in place&lt;/h2&gt;
&lt;p&gt;For each platform, create a folder “sources” under that platform (e.g. sdk/platforms/android-1.5/sources) and unzip the source code into it. Then refresh your project (select project and press F5 or right-click and select “Refresh”).&lt;/p&gt;
&lt;div style=&quot;width: 338px;&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;img height=&quot;432&quot; src=&quot;http://www.mediafire.com/imgbnc.php/b3f31b95ec48a4440101ee6efd3c81025g.jpg&quot; alt=&quot;&quot; title=&quot;Right click menu for a project&quot; width=&quot;328&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Right click on the project and refresh&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Voila, you should see the source!&lt;/p&gt;
&lt;div style=&quot;width: 765px;&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;img height=&quot;459&quot; src=&quot;http://www.mediafire.com/imgbnc.php/13faa32467218450994fe9c32d1b6a4a6g.jpg&quot; alt=&quot;&quot; title=&quot;Editor now showing platform source&quot; width=&quot;755&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;YES, I SEE the SOURCE!&lt;/p&gt;&lt;/div&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;
&lt;/p&gt;&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;Getting the debugger on board&lt;/h2&gt;
&lt;p&gt;I found that even after I’d placed sources in the platform, if I was debugging and ended up deep in the platform (In this case, with an exception), the debugger might not show the code:&lt;/p&gt;
&lt;div style=&quot;width: 810px;&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;img height=&quot;309&quot; src=&quot;http://www.mediafire.com/imgbnc.php/1022934b3972a7d015e216a6d1cb4e566g.jpg&quot; alt=&quot;&quot; title=&quot;Debugger, still not seeing the source&quot; width=&quot;800&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Sometimes the debugger still won't show the source&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;However, it’s fairly straightforward to fix this. Just click on that “Edit Source Lookup Path” button to add a source lookup path. In that dialog leave “Default” selected and click “Add.”&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.mediafire.com/imgbnc.php/57b1e1bf69249f124d3f3b133b4f55bc5g.jpg&quot; title=&quot;&amp;quot;Edit Source Lookup Path&amp;quot; dialog&quot; height=&quot;448&quot; width=&quot;613&quot; alt=&quot;&quot; class=&quot;aligncenter&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the following “Add Source” dialog choose “File System Directory” and hit the OK button:&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.mediafire.com/imgbnc.php/8306ac5e78409595881bce3f57e300265g.jpg&quot; title=&quot;&amp;quot;Add Center&amp;quot; dialog&quot; height=&quot;346&quot; width=&quot;613&quot; alt=&quot;&quot; class=&quot;aligncenter&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then choose the source directory where you unzipped the code. The debugger should now show all the code you can debug into.&lt;/p&gt;
&lt;div style=&quot;width: 810px;&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;img src=&quot;http://www.mediafire.com/imgbnc.php/f705ffc1214d009cad09eb6e376e2ddf6g.jpg&quot; title=&quot;Debug dialog now showing the source&quot; height=&quot;548&quot; width=&quot;800&quot; alt=&quot;&quot; class=&quot; &quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Source in the debugger... which may or may not help you figure out what went wrong; in this case, a layout error caught at runtime.&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;A word of caution, though: Eclipse’s debugger seems to think that once you’ve set a source lookup for one project, it’s relevant for all of them. If you’re using different platforms for different projects, you’ll want to change the source it uses. You can do that by right-clicking on the project in the debugger and choosing “Edit Source Lookup” to repeat this process.&lt;/p&gt;
&lt;div style=&quot;width: 411px;&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;img height=&quot;386&quot; src=&quot;http://www.mediafire.com/imgbnc.php/c85b1944faabd790c474affdbc5fb6676g.jpg&quot; alt=&quot;&quot; title=&quot;Getting back to source lookup in the debugger&quot; width=&quot;401&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Getting back to source lookup in the debugger&lt;/p&gt;&lt;/div&gt;
&lt;h1&gt;Patches welcome&lt;/h1&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Hopefully this guide makes attaching source easy for you. If the code provided here seems out of sync with the platform when you’re debugging, let me know. If someone knows a better way to pick out the exact code for the different platform versions, comment below. If I’ve slightly (or utterly) misrepresented something, correct me. If you’re just happy to finally see your source, I’d be glad to hear about it!&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;http://source.android.com/download/&lt;/div&gt;</content:encoded>
	<dc:date>2010-01-18T17:19:26+00:00</dc:date>
	<dc:creator>luke</dc:creator>
</item>
<item rdf:about="http://boltingupandroid.wordpress.com/?p=91">
	<title>Bolting Android Apps Together: The Android Vertical Line Problem</title>
	<link>http://boltingupandroid.wordpress.com/2012/12/06/the-android-vertical-line-problem/</link>
	<content:encoded>&lt;p&gt;Getting a thin vertical line to use as a divider or other indicator is surprisingly difficult. Various solutions to this problem have been offered at Stackoverflow, e.g. “&lt;a href=&quot;http://stackoverflow.com/questions/2658772/android-vertical-line-xml&quot; target=&quot;_blank&quot;&gt;Android vertical line XML&lt;/a&gt;“. Recently I needed a vertical line to use as a divider between items in an open source &lt;a href=&quot;http://www.londatiga.net/it/how-to-create-quickaction-dialog-in-android/&quot; target=&quot;_blank&quot;&gt;tooltip&lt;/a&gt; component. The default divider was provided as a narrow Textview with a gray background and no text, which was contained within a RelativeLayout. That’s a rather heavyweight implementation, and the divider did not extend the full height of the tooltip, either.&lt;/p&gt;
&lt;p&gt;I tried several of the approaches outlined in the Stackoverflow post referenced above and elsewhere. These included a rotated shape drawable and a view with a layout width of 2 pixels, but these did not work. Usually I got a result like below, where the gray divider view caused the tooltip to expand in size and the divider crowded the remaining items out of the tooltip. (An item is made up of text and an icon, like the “Next” and down arrow, although each is optional. See below.)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://boltingupandroid.wordpress.com/2012/12/06/the-android-vertical-line-problem/tooltip_wrong/&quot; rel=&quot;attachment wp-att-93&quot;&gt;&lt;img src=&quot;http://boltingupandroid.files.wordpress.com/2012/12/tooltip_wrong.png?w=240&amp;amp;h=108&quot; alt=&quot;tooltip_wrong&quot; height=&quot;108&quot; class=&quot; wp-image-93 alignleft&quot; width=&quot;240&quot; /&gt;&lt;/a&gt; I then adapted a technique we’d used before to get a divider appearing in TextViews used as table cells. We subclassed the TextView and overrode the onDraw method. We drew a narrow vertical line at the left edge to make a nice divider between adjacent table cells. Here’s the (somewhat condensed) code:&lt;/p&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;private Paint paint = new Paint();
private void init(Context context) {
	paint.setColor(context.getResources().getColor(
			R.color.cell_divider_line));
	paint.setStrokeWidth(0f);
	paint.setStyle(Paint.Style.FILL);
}
protected void onDraw(Canvas canvas) {
	super.onDraw(canvas);
	canvas.drawLine(0, 0, 0, getHeight(), paint);
}
&lt;/pre&gt;
&lt;p&gt;This tooltip component supports both horizontal and vertical orientations so dividers are needed for both cases. The original views for each orientation had a RelativeLayout as the outer view that contains a single tooltip item (an icon and text), so I subclassed RelativeLayout, as below (condensed). This RelativeLayoutWithDivider class provides for a right divider, a bottom divider or no divider.&lt;/p&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;public enum DividerOrientation  {RIGHT, BOTTOM, NONE}
private Paint paint ;
private Context context;
private DividerOrientation orientation = DividerOrientation.NONE;

private void init() {
	paint = new Paint();
	paint.setColor(context.getResources().getColor(
		R.color.cell_divider_line));
	paint.setStrokeWidth(3f);
	paint.setStyle(Paint.Style.FILL);
}

@Override
protected void onDraw(Canvas canvas) {
	super.onDraw(canvas);
	switch (orientation) {
           case RIGHT:
         	init();
            	canvas.drawLine(getWidth(), 0, getWidth(), getHeight(), paint);
                break;
         case BOTTOM:
        	init();
           	canvas.drawLine(0, getHeight(), getWidth(), getHeight(), paint);
         	break;
           default:
         //no divider line
              break;
	}
}

public void setDividerOrientation(DividerOrientation orientation) {
	this.orientation = orientation;
}
&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;http://boltingupandroid.wordpress.com/2012/12/06/the-android-vertical-line-problem/tooltip5cropped/&quot; rel=&quot;attachment wp-att-98&quot;&gt;&lt;img src=&quot;http://boltingupandroid.files.wordpress.com/2012/12/tooltip5cropped.png?w=101&amp;amp;h=168&quot; alt=&quot;vertical tooltip&quot; height=&quot;168&quot; class=&quot; wp-image-98 alignright&quot; width=&quot;101&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Logic in the method the populates the items in the tooltip determines which enum to pass on a call to setDividerOrientation such that single items don’t show a divider nor does the last item. (That method is found in the QuickAction class of the open-source project.)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://boltingupandroid.wordpress.com/2012/12/06/the-android-vertical-line-problem/tooltip4cropped/&quot; rel=&quot;attachment wp-att-97&quot;&gt;&lt;img src=&quot;http://boltingupandroid.files.wordpress.com/2012/12/tooltip4cropped.png?w=168&amp;amp;h=77&quot; title=&quot;Horizontal tooltip&quot; height=&quot;77&quot; width=&quot;168&quot; alt=&quot;tooltip4cropped&quot; class=&quot; wp-image-97 alignleft&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
This will make more sense when I show the layout XML for a horizontal tooltip item. Here the parent view is our subclassed RelativeLayout. Nothing had to change in this XML save the class name in the outermost tag.&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;
&lt;/pre&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/boltingupandroid.wordpress.com/91/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/boltingupandroid.wordpress.com/91/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=boltingupandroid.wordpress.com&amp;amp;blog=37194254&amp;amp;post=91&amp;amp;subd=boltingupandroid&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2012-12-06T18:58:29+00:00</dc:date>
	<dc:creator>Todd Folsom</dc:creator>
</item>
<item rdf:about="http://boltingupandroid.wordpress.com/?p=85">
	<title>Bolting Android Apps Together: Fixing The Command File For Android’s uiautomatorviewer Tool</title>
	<link>http://boltingupandroid.wordpress.com/2012/11/27/fixing-the-command-file-for-androids-uiautomatorviewer-tool/</link>
	<content:encoded>&lt;p&gt;The &lt;a href=&quot;http://developer.android.com/tools/testing/testing_ui.html&quot; target=&quot;_blank&quot; title=&quot;uiautomatorviewer&quot;&gt;uiautomatorviewer&lt;/a&gt; is a “GUI tool to scan and analyze the UI components”, and was made available in Revision 21 of the Android SDK Tools. The instructions for running the tool tell us to open a terminal window, navigate to &amp;lt;android-sdk&amp;gt;/tools and run the “uiautomatorviewer” command. On Windows, that is a command file with a “bat” extension.&lt;/p&gt;
&lt;p&gt;The UI for the tool opens up and the instructions tell us next to capture a screen for analysis. Unfortunately this failed for me. The error message implied that the Android adb tool is not installed. It most certainly is installed, so I began a search for a solution. I didn’t find a solution initially, although I did find that other developers were seeing the same problem.&lt;/p&gt;
&lt;p&gt;It was when I decided to search on Google+ that I found this &lt;a href=&quot;https://plus.google.com/u/0/108487870030743970488/posts/2TrMqs1ZGQv&quot; target=&quot;_blank&quot;&gt;post by Endian Ogino&lt;/a&gt;. He worked out that the com.android.uiautomator.bindir property, being passed as a Java argument, was blank. Once he edited  uiautomatorviewer.bat to supply the path to the &amp;lt;android-sdk&amp;gt;/tools folder, the screenshot action started working. Since his solution did not appear in a traditional Google search, I thought I’d write about it in this blog so that, hopefully, it could turn up in searches more often.&lt;/p&gt;
&lt;p&gt;Now, can anyone help me understand why many of the attempts at screenshotting  various views in my application fail to generate any XML for display? I’ve searched on the error message and the exception name without any luck.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/boltingupandroid.wordpress.com/85/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/boltingupandroid.wordpress.com/85/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=boltingupandroid.wordpress.com&amp;amp;blog=37194254&amp;amp;post=85&amp;amp;subd=boltingupandroid&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2012-11-27T15:26:16+00:00</dc:date>
	<dc:creator>Todd Folsom</dc:creator>
</item>
<item rdf:about="http://eclipsesource.com/blogs/?p=16023">
	<title>Eclipse Source: Post Google I/O: The State of Android Development [UPDATED]</title>
	<link>http://eclipsesource.com/blogs/2013/05/28/post-google-io-the-state-of-android-development/</link>
	<content:encoded>&lt;p&gt;A few weeks ago i posted an analysis of the current &lt;a href=&quot;http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/&quot;&gt;state of the gradle based Android build system&lt;/a&gt;. Today we are living in a post Google I/O 2013 world and several things have changed. Time for an update. The most prominent change is the new Android development environment: &lt;a href=&quot;http://developer.android.com/sdk/installing/studio.html&quot;&gt;Android Studio&lt;/a&gt;.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://developer.android.com/images/tools/android-studio.png&quot; title=&quot;Post Google I/O: The State of Android Development [UPDATED]&quot; height=&quot;330&quot; width=&quot;400&quot; alt=&quot;android studio Post Google I/O: The State of Android Development [UPDATED]&quot; class=&quot;aligncenter&quot; /&gt;&lt;/div&gt;
&lt;h2&gt;Android Studio&lt;/h2&gt;
&lt;p&gt;Currently in its infancy at version 0.1, the new IDE is based on the (free) community edition of &lt;a href=&quot;http://www.jetbrains.com/idea/&quot;&gt;IntelliJ IDEA&lt;/a&gt;. IntelliJ is widely accepted as a very good Java IDE and has lots of followers. IntelliJ provided Android support itself but this has now been replaced with the “official” extensions provided by Google. Watch the &lt;a href=&quot;https://developers.google.com/events/io/sessions/324603352&quot;&gt;Google I/O talk about Android Studio&lt;/a&gt; for more details. The interesting question is: Why did Google invest in yet another development environment next to the &lt;a href=&quot;http://developer.android.com/tools/sdk/eclipse-adt.html&quot;&gt;Eclipse ADT&lt;/a&gt;? After all you were able to download a standalone runnable version of the ADT as well. “People close to the matter” cite several reasons for such a step.&lt;/p&gt;
&lt;h3&gt;IntelliJ is a great IDE&lt;/h3&gt;
&lt;p&gt;Obviously i am working for a very Eclipse centric company. Nonetheless i must admit that there is a lot to love about IntelliJ. While the Eclipse Java development components have not seen a lot of innovation lately, IntelliJ keeps on pushing usable features. Better autocompletion, better suggestion prediction and a more flexible editor system helps to boost productivity. In addition several features of IntelliJ/Android Studion go beyond what Eclipse/ADT offers. To name a few:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Resource Inlining (Also works for images)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/as_resource.png&quot;&gt;&lt;img height=&quot;117&quot; src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/as_resource.png&quot; alt=&quot;as resource Post Google I/O: The State of Android Development [UPDATED]&quot; title=&quot;Post Google I/O: The State of Android Development [UPDATED]&quot; width=&quot;387&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Implementation folding (Similar to Lambda expression in Java 8)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/as_code_folding.png&quot;&gt;&lt;img height=&quot;138&quot; src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/as_code_folding.png&quot; alt=&quot;as code folding Post Google I/O: The State of Android Development [UPDATED]&quot; title=&quot;Post Google I/O: The State of Android Development [UPDATED]&quot; width=&quot;577&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Parameter prediction (Correct constants are proposed for int parameter)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/as_prediction1.png&quot;&gt;&lt;img height=&quot;213&quot; src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/as_prediction1.png&quot; alt=&quot;as prediction1 Post Google I/O: The State of Android Development [UPDATED]&quot; title=&quot;Post Google I/O: The State of Android Development [UPDATED]&quot; width=&quot;598&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The features described here will eventually become part of the Eclipse/ADT framework but at the moment this is not the case. In addition Android Studio offers superior visual layout editing and preview features, full gradle project configuration, support for build flavors etc.&lt;/p&gt;
&lt;p&gt;On the other hand, many features that developers are used to from the ADT are not yet (natively) in Android Studio: All DDMS tools, dumping the layout hierarchy for the UI Automator etc. These features will be implemented in future releases.&lt;/p&gt;
&lt;h3&gt;The Android build story is broken (on Eclipse)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/broken-android.jpg&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/broken-android.jpg&quot; title=&quot;Post Google I/O: The State of Android Development [UPDATED]&quot; height=&quot;126&quot; width=&quot;126&quot; alt=&quot;broken android Post Google I/O: The State of Android Development [UPDATED]&quot; class=&quot;alignleft  wp-image-16037&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While Eclipse is able to compile and export an Android app, it has no idea of a build system. Building Android projects was and still is a mess. Google realized that and started developing a &lt;a href=&quot;http://tools.android.com/tech-docs/new-build-system&quot;&gt;new build infrastructure based on gradle&lt;/a&gt;. The new build system strives to unify the project setup in a development environment as well as on a build server. Both scenarios should be driven by one configuration that is very customizable for various product scenarios (free vs paid app etc.). Gradle provides a great foundation for this undertaking and the build system it is on its way to maturity.&lt;/p&gt;
&lt;p&gt;While the approach is great in theory, it posed a problem when integrating the system into Eclipse. Since gradle is supposed to completely build the project, the continuous incremental compiler of Eclipse had to be circumvented. This turned out to be a technical challenge that was hard to overcome.&lt;/p&gt;
&lt;p&gt;With IntelliJ, the compiler only kicks in when you “make” an application, which made the IntelliJ integration simpler. In addition gradle (and maven) are already first class citizen and so it was much easier to integrate the build hooks into IntelliJ. Side note: In Android Studio gradle runs on hot-standby so it kicks in much quicker than simply invoking a build manually.&lt;/p&gt;
&lt;p&gt;Jetbrains (the company behind IntelliJ) supported Google in the integration process and made adjustments for them when necessary. The result is build story which is able to cover the entire round trip from project creation to a release build on the build server. On the way you get: import and setup in the ide, dependency management, awareness of build types and product flavors, export from the IDE and the ability to query your build scripts (a gradle feature).&lt;/p&gt;
&lt;h2&gt;Gradle Build&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/gardle-android.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/gardle-android.png&quot; title=&quot;Post Google I/O: The State of Android Development [UPDATED]&quot; height=&quot;78&quot; width=&quot;176&quot; alt=&quot;gardle android Post Google I/O: The State of Android Development [UPDATED]&quot; class=&quot;alignright  wp-image-15613&quot; /&gt;&lt;/a&gt;Okay, the Android Studio is new and is fully compatible with the the gradle build. But is there anything new in regards to the gradle build itself? In fact there is:&lt;/p&gt;
&lt;p&gt;The most interesting feature is the creation of the “Android SDK Build-tools” as part of the Android SDK. The Build-tools contain the commands to compile and package an Android application. The Build-tools are versioned so you can specify what version of the tools you want to use right inside your gradle build script. No more broken builds because you updated your Android SDK.&lt;/p&gt;
&lt;p&gt;Another addition is the support for ProGuard. Obfuscating your code is now part of the build tasks.&lt;/p&gt;
&lt;p&gt;While more and more features are being supported, there are still features missing like support for the &lt;a href=&quot;http://developer.android.com/tools/sdk/ndk/index.html&quot;&gt;NDK&lt;/a&gt; to build native code or support for &lt;a href=&quot;http://www.eclemma.org/&quot;&gt;ecl emma&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Android Library Dependencies&lt;/h2&gt;
&lt;p&gt;Since hardly any app is an island of solitude you will want to use external libraries to help you with common tasks. An Android library project allows you to do just that. But keeping external dependencies in your ide is cumbersome and obtaining your dependencies from maven is much more elegant. With the aid of the m2e and android-m2e Eclipse plugins this also works reasonably well in Eclipse. Where this approach falls short is when consuming Android libraries via maven. Maven packages those artifacts into “apklibs”. They can be consumed when “mvn install”ing your app without a problem but inside eclipse the apklib format is not supported. This leads to the problem that you have to keep the source project in the ide as well.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/android-aar1.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/android-aar1.png&quot; title=&quot;Post Google I/O: The State of Android Development [UPDATED]&quot; height=&quot;259&quot; width=&quot;300&quot; alt=&quot;android aar1 Post Google I/O: The State of Android Development [UPDATED]&quot; class=&quot;alignnone  wp-image-16059&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;In a gradle build, dependencies can be both local files or maven/ivy artifacts. The gradle build introduces a new packaging format for Android library projects called the Android Archive (.aar). This format is pretty new (imo not fully finalized) and not widely adopted yet. While the .aar is the future, the maven apklib is the present and this leads to the following problem: The gradle build does not support the apklib format. So for now you can not consume any Android libraries from maven central in your gradle build. Regular java jar dependencies can be consumed without a problem.&lt;/p&gt;
&lt;p&gt;Another problem that has not been solved in the gradle build yet is the ability to consume libraries from the Android SDK. The Android SDK ships with many useful libraries from Google like the support-library, admob, analytics, play services etc. Several of these artifacts ship as Android Library projects that can only be consumed in a gradle build when copying the entire project with source. When using maven, one can use the  &lt;a href=&quot;https://github.com/mosabua/maven-android-sdk-deployer&quot;&gt;maven-android-sdk-deployer&lt;/a&gt; to copy these resources into the local maven repository but no such thing exists for gradle. The solution that Google is planning to implement is to upload these artifacts to maven central in the .aar format. Thereby they can easily be consumed by a gradle build. Why this hasn’t happened yet is hard to say. Maybe because the .aar format is not finalized? Or maybe Google has other priorities?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[UPDATE]&lt;/strong&gt; As of 30.05.2013, the &lt;a href=&quot;https://plus.google.com/u/0/+TorNorbye/posts/QnCgxgs2fzR&quot;&gt;support library and the google services are bundled in the Android SDK&lt;/a&gt; as .aar maven dependencies. They can be easily consumed within your gradle build script like any other maven dependency.&lt;/p&gt;
&lt;h2&gt;Wrap Up&lt;/h2&gt;
&lt;p&gt;Google I/O 2013 brought a lot of new stuff into the Android development landscape. Surely the Android Studio is the star of the show but at the end of the day the gradle build is more important. It provides the underpinnings to unify the Android development story. In that regards one important feature of the gradle build story is still missing: Google has to publish the core components of the Android SDK to maven central as .aar archives. This will be a strong signal for other libraries to also publish as .aar archives. Until that happens the gradle build will remain a patchwork project.&lt;/p&gt;
&lt;p&gt;The Android Studio is an impressive new part of the Android development story – many people had been asking for IntelliJ support. The multitude of features that already go beyond what Eclipse/ADT offers makes for some exciting prospects. At version 0.1 it is very early to adopt it fully for existing larger projects but for smaller endeavours it feels very usable. Google plans to push weekly updates of the Android Studio so glitches will get ironed out pretty quickly. Where does that leave Eclipse/ADT? Google has committed to maintaining both development platforms in parallel but it remains to be seen how long that promise keeps up. At least the gradle build support will be integrated soonish.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;display: inline-block;&quot;&gt;&lt;a style=&quot;margin-right: 5px;&quot; href=&quot;https://twitter.com/intent/tweet?source=webclient&amp;amp;text=Post+Google+I%2FO%3A+The+State+of+Android+Development+%5BUPDATED%5D&amp;amp;via=eclipsesource&amp;amp;url=http://eclipsesource.com/blogs/2013/05/28/post-google-io-the-state-of-android-development/&quot; target=&quot;_blank&quot; title=&quot;Share on Twitter&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png&quot; alt=&quot;Twitter&quot; title=&quot;Twitter&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-right: 5px;&quot; href=&quot;https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/28/post-google-io-the-state-of-android-development/&quot; target=&quot;_blank&quot; title=&quot;+1&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png&quot; alt=&quot;Google+&quot; title=&quot;Google+&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-right: 5px;&quot; href=&quot;http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/28/post-google-io-the-state-of-android-development/&quot; target=&quot;_blank&quot; title=&quot;Share on LinkedIn&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png&quot; alt=&quot;LinkedIn&quot; title=&quot;LinkedIn&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-right: 5px;&quot; href=&quot;https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/28/post-google-io-the-state-of-android-development/&amp;amp;t=Post+Google+I%2FO%3A+The+State+of+Android+Development+%5BUPDATED%5D&quot; target=&quot;_blank&quot; title=&quot;Facebook&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png&quot; alt=&quot;Facebook&quot; title=&quot;Facebook&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/2013/05/28/post-google-io-the-state-of-android-development/#comments&quot;&gt;Leave a Comment&lt;/a&gt;. Tagged with &lt;a href=&quot;http://eclipsesource.com/blogs/tag/android/&quot; title=&quot;android Tag&quot;&gt;android&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/android-studio/&quot; title=&quot;android studio Tag&quot;&gt;android studio&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/gradle/&quot; title=&quot;Gradle Tag&quot;&gt;Gradle&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/intellij/&quot; title=&quot;intellij Tag&quot;&gt;intellij&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/android/&quot; title=&quot;android Tag&quot;&gt;android&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/android-studio/&quot; title=&quot;android studio Tag&quot;&gt;android studio&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/gradle/&quot; title=&quot;Gradle Tag&quot;&gt;Gradle&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/intellij/&quot; title=&quot;intellij Tag&quot;&gt;intellij&lt;/a&gt;&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-28T10:36:48+00:00</dc:date>
	<dc:creator>Moritz Post</dc:creator>
</item>
<item rdf:about="http://galaxytabreview.com/?p=188">
	<title>Galaxy Tab Review: Download Galaxy Tab Plus CM10.1 P6200, P6210, T869</title>
	<link>http://galaxytabreview.com/7-0-plus/download-plus-cm10-1-p6200-p6210-t869/</link>
	<content:encoded>&lt;p&gt;CyanogenMod 10.1, more popularly known as CM10.1 has been successfully ported to Galaxy Tab Plus. There are some issues though. For example – USB mounting of internal storage does not work. Other things that does not work include HDMI, IR blaster, Bluetooth and phone calls crash often. In short, CM10.1 is far from reliable and [...]&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;http://galaxytabreview.com/7-0-plus/download-plus-cm10-1-p6200-p6210-t869/&quot;&gt;Download Galaxy Tab Plus CM10.1 P6200, P6210, T869&lt;/a&gt; appeared first on &lt;a href=&quot;http://galaxytabreview.com&quot;&gt;Galaxy Tab Reviews, News, Updates&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-27T10:23:13+00:00</dc:date>
	<dc:creator>Galaxy Tab Review</dc:creator>
</item>
<item rdf:about="http://blahti.wordpress.com/?p=1783">
	<title>Bill Lahti: Two Progress Bars for Android</title>
	<link>http://blahti.wordpress.com/2013/05/23/two-progress-bars-for-android/</link>
	<content:encoded>I built two different views to show progress bars in Android. One is a horizontal progress bar and the other is a vertical progress bar, made up of a stack of horizontal bars. Here they are displayed in a demo app, running on a Galaxy Nexus phone.

For the horizontal progress, you can control the colors used, the width and height of the bar, and the number of divisions. For the vertical progress bar, I wanted it to look like a stack of bars. When you run the demo app, you can see the values change by touching a progress bar. Complete source code is provided below.
&lt;img src=&quot;http://stats.wordpress.com/b.gif?host=blahti.wordpress.com&amp;amp;blog=9753530&amp;amp;post=1783&amp;amp;subd=blahti&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-23T10:19:33+00:00</dc:date>
	<dc:creator>blahti</dc:creator>
</item>
<item rdf:about="http://slideme.org/2955458 at http://slideme.org">
	<title>SlideME: SlideME has launched the newly designed SlideME Market app v5</title>
	<link>http://slideme.org/blog/slideme-has-launched-the-newly-designed-slideme-market-app-sam-v5</link>
	<content:encoded>&lt;div&gt;&lt;img src=&quot;http://s.slideme.org/files/slidemegreylogo180w.png&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;p class=&quot;p1&quot;&gt;We have launched our newly designed Android &lt;span style=&quot;line-height: 1.5em;&quot;&gt;market &lt;/span&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt;app, version 5 of the &lt;/span&gt;&lt;a style=&quot;line-height: 1.5em;&quot; href=&quot;http://slideme.org/application/slideme-marketplace&quot; target=&quot;_blank&quot;&gt;SlideME Application Manager (SAM)&lt;/a&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt;and we wanted to highlight some of the&lt;/span&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt; &lt;/span&gt;&lt;strong style=&quot;line-height: 1.5em;&quot;&gt;new features&lt;/strong&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt;that &lt;/span&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt;you might not yet know about in the &lt;/span&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt;new SAM 5. &lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;a href=&quot;http://s.slideme.org/files/SlideME_SAM_v5homefeat_screenshot900w.jpg&quot; rel=&quot;lightbox&quot; title=&quot;SlideME Market (SAM) app v5&quot;&gt;&lt;img src=&quot;http://s.slideme.org/files/SLIDEME640.172836.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;line-height: 1.5em;&quot;&gt;Thanks to community and tester effort, SAM 5 has already reached its 13th version (5.13) with tons of stability, performance, and usability improvements, easily making it the best SAM (yet). &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;clear: left;&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;http://slideme.org/blog/slideme-has-launched-the-newly-designed-slideme-market-app-sam-v5&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-02T17:50:09+00:00</dc:date>
	<dc:creator>SlideME</dc:creator>
</item>
<item rdf:about="http://eclipsesource.com/blogs/?p=15607">
	<title>Eclipse Source: State of the Android Gradle Build System</title>
	<link>http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/</link>
	<content:encoded>&lt;p&gt;Building an Android project can be challenging at times. The &lt;a href=&quot;http://developer.android.com/sdk/index.html&quot;&gt;Android SDK&lt;/a&gt; ships with a set of helpful &lt;a href=&quot;http://developer.android.com/tools/building/building-cmdline.html#ReleaseMode&quot;&gt;ant scripts&lt;/a&gt;, but has its shortcomings. It mainly lacks a well-populated dependency infrastructure similar to what &lt;a href=&quot;http://search.maven.org/&quot;&gt;maven offers&lt;/a&gt; (ivy doesn’t count). Hence, the natural evolution of build process spawned the &lt;a href=&quot;https://code.google.com/p/maven-android-plugin/&quot;&gt;maven android plugin&lt;/a&gt;. The plugin allows you to infuse maven artifacts and perform the necessary build steps to package your app. Although maven has a great artifact repository, it has a pretty rigid set of configuration settings. The pom files tend to get verbose and interfering with the designated build process lacks flexibility.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/gardle-android.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2013/05/gardle-android.png&quot; title=&quot;State of the Android Gradle Build System&quot; height=&quot;251&quot; width=&quot;575&quot; alt=&quot;gardle android State of the Android Gradle Build System&quot; class=&quot;size-full wp-image-15613 aligncenter&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;The “New Build System”&lt;/h2&gt;
&lt;p&gt;Entering the “&lt;a href=&quot;http://tools.android.com/tech-docs/new-build-system&quot;&gt;New Build System&lt;/a&gt;” based on &lt;a href=&quot;http://www.gradle.org/&quot;&gt;Gradle&lt;/a&gt;. The new build system is supposed to become the official mechanism for building Android applications. The gradle-based build combines some of the strengths of ant and maven (flexible architecture with a lot of custom tweaking opportunities), whilst at the same time providing reasonable default configurations to keep the build scripts small. Maven dependencies can be consumed from maven central, while it is also easy to consume “local file” dependencies.&lt;/p&gt;
&lt;p&gt;Okay, but how does the “New Build System” prevail in practice?&lt;/p&gt;
&lt;h2&gt;Using the Gradle Android Build&lt;/h2&gt;
&lt;p&gt;DISCLAIMER: We are only a few days away from Google IO 2013 so the points raised here might have already changed when you read this.&lt;/p&gt;
&lt;p&gt;Basic build scripts can be really really small when you rely on the default folder structure for your project. Your basic gradle build script can look like this:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;groovy&quot;&gt;buildscript &lt;span style=&quot;color: #66cc66;&quot;&gt;{&lt;/span&gt;
  repositories &lt;span style=&quot;color: #66cc66;&quot;&gt;{&lt;/span&gt;
    mavenCentral&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;}&lt;/span&gt;
 
  dependencies &lt;span style=&quot;color: #66cc66;&quot;&gt;{&lt;/span&gt;
    classpath &lt;span style=&quot;color: #ff0000;&quot;&gt;'com.android.tools.build:gradle:0.3'&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;}&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;}&lt;/span&gt;
 
apply plugin: &lt;span style=&quot;color: #ff0000;&quot;&gt;'android'&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In fact the buildscript{} element is only required to bootstrap the script itself. The actual content is the lonely &lt;code&gt;apply plugin: 'android'&lt;/code&gt;. Running this script produces a fully runnable unsigned apk.&lt;/p&gt;
&lt;p&gt;The basics are simple but what about dependencies? As I mentioned, you can easily add dependencies from &lt;a href=&quot;http://search.maven.org/&quot;&gt;maven central&lt;/a&gt; or a local file. In fact, the buildscript downloads its own android tasks from maven central.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;groovy&quot;&gt;repositories &lt;span style=&quot;color: #66cc66;&quot;&gt;{&lt;/span&gt;
    mavenCentral&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;}&lt;/span&gt;
 
dependencies &lt;span style=&quot;color: #66cc66;&quot;&gt;{&lt;/span&gt;
    compile &lt;span style=&quot;color: #ff0000;&quot;&gt;'com.google.guava:guava:11.0.2'&lt;/span&gt;
    compile files &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'libs/gcm.jar'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;compile&lt;/code&gt; directive is similar to mavens &lt;code&gt;compile&lt;/code&gt; scope in that the dependency will be bundled into your packaged .apk.&lt;/p&gt;
&lt;p&gt;Gradle also supports Android library projects. The “New Build System” compiles library projects into .aar packages, which can be consumed by the main project. The main advantage of the .aar format is its ability to handle dynamic Android resource ids. You will be able to ship an *.aar archive and consume it in your main project without having to create all of its ids during compile time of the main project.&lt;/p&gt;
&lt;p&gt;Library projects have to be listed in a &lt;code&gt;settings.gradle&lt;/code&gt; file and all projects taking part in the build can reference any other project listed in that file.&lt;/p&gt;
&lt;p&gt;Where the gradle build has its real strength is in creating multiple versions of the same app. For example, a free and a paid version, or different versions for various cpu architectures. I won’t go into detail but you should read all about it &lt;a href=&quot;http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Shortcomings&lt;/h2&gt;
&lt;p&gt;Now that we have discussed some of the strengths of the gradle build system, lets discuss some of the pitfalls:&lt;/p&gt;
&lt;p&gt;The gradle build is not yet able to deal with the most common dependency format for library projects: the maven apklib. Currently you can only consume maven artifacts that are packaged as jars. This rules out a lot of high profile dependencies such as the &lt;a href=&quot;http://actionbarsherlock.com/&quot;&gt;actionbarsherlock&lt;/a&gt; or the &lt;a href=&quot;http://viewpagerindicator.com/&quot;&gt;viewpagerindicator&lt;/a&gt;. If you want to depend on these resources you will have to keep a source reference in your project (or package them as an .aar).&lt;/p&gt;
&lt;p&gt;The gradle build system offers good support for instrumentation tests you run on your device, but it is currently very hard to run standalone &lt;a href=&quot;http://pivotal.github.io/robolectric/&quot;&gt;robolectric&lt;/a&gt; tests. The main problem is that robolectric does not understand the gradle dependencies so that it cannot gather sub-dependencies, and so on.&lt;/p&gt;
&lt;p&gt;Support for the &lt;a href=&quot;http://developer.android.com/tools/sdk/eclipse-adt.html&quot;&gt;Android Development Tools (ADT)&lt;/a&gt; is currently non-existent although this is very likely to change with future releases. The ADT cannot deal with the default folder layout by gradle, nor can it deal with declared dependencies. Therefore, you have to maintain two build infrastructures: one for Eclipse (project.properties etc) and one for the gradle build.&lt;/p&gt;
&lt;h2&gt;Wrap Up&lt;/h2&gt;
&lt;p&gt;The “New Build System” build sounds awesome! As long as it can deliver on all its promises. At the moment, I can not recommend it for larger projects due to the lack of robolectric support and problems with maven dependencies.  I have discussed the issues raised here with &lt;a href=&quot;https://plus.google.com/u/0/109385828142935151413/posts&quot;&gt;+Xavier Ducrohet&lt;/a&gt;, the lead architect of the build system, and he assured me that most of the issues will be addressed. At the &lt;a href=&quot;http://de.droidcon.com/&quot;&gt;Droidcon Berlin&lt;/a&gt; I spoke to &lt;a href=&quot;http://www.gradleware.com/team&quot;&gt;Hans Dockter&lt;/a&gt;, the CEO of &lt;a href=&quot;http://www.gradleware.com/&quot;&gt;Gradleware&lt;/a&gt; and co-architect of the “New Build System”, and once gradle becomes the driving engine for the ADT the entire toolchain should be covered. If the Android library ecosystem were to adapt gradle, it would have a very bright future.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;display: inline-block;&quot;&gt;&lt;a style=&quot;margin-right: 5px;&quot; href=&quot;https://twitter.com/intent/tweet?source=webclient&amp;amp;text=State+of+the+Android+Gradle+Build+System&amp;amp;via=eclipsesource&amp;amp;url=http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/&quot; target=&quot;_blank&quot; title=&quot;Share on Twitter&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png&quot; alt=&quot;Twitter&quot; title=&quot;Twitter&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-right: 5px;&quot; href=&quot;https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/&quot; target=&quot;_blank&quot; title=&quot;+1&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png&quot; alt=&quot;Google+&quot; title=&quot;Google+&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-right: 5px;&quot; href=&quot;http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/&quot; target=&quot;_blank&quot; title=&quot;Share on LinkedIn&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png&quot; alt=&quot;LinkedIn&quot; title=&quot;LinkedIn&quot; /&gt;&lt;/a&gt;&lt;a style=&quot;margin-right: 5px;&quot; href=&quot;https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/&amp;amp;t=State+of+the+Android+Gradle+Build+System&quot; target=&quot;_blank&quot; title=&quot;Facebook&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png&quot; alt=&quot;Facebook&quot; title=&quot;Facebook&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/#comments&quot;&gt;4 Comments&lt;/a&gt;. Tagged with &lt;a href=&quot;http://eclipsesource.com/blogs/tag/android/&quot; title=&quot;android Tag&quot;&gt;android&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/build/&quot; title=&quot;build Tag&quot;&gt;build&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/gradle/&quot; title=&quot;Gradle Tag&quot;&gt;Gradle&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/android/&quot; title=&quot;android Tag&quot;&gt;android&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/build/&quot; title=&quot;build Tag&quot;&gt;build&lt;/a&gt;, &lt;a href=&quot;http://eclipsesource.com/blogs/tag/gradle/&quot; title=&quot;Gradle Tag&quot;&gt;Gradle&lt;/a&gt;&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-02T11:48:28+00:00</dc:date>
	<dc:creator>Moritz Post</dc:creator>
</item>
<item rdf:about="http://blahti.wordpress.com/?p=1781">
	<title>Bill Lahti: Link to useful Android resources</title>
	<link>http://blahti.wordpress.com/2013/05/01/link-to-useful-android-resources/</link>
	<content:encoded>I found a link on Google+ to a very useful blog post. It's called &quot;Resources every Android developer must know&quot;. The author is Sergey Povzner.&lt;img src=&quot;http://stats.wordpress.com/b.gif?host=blahti.wordpress.com&amp;amp;blog=9753530&amp;amp;post=1781&amp;amp;subd=blahti&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-01T11:07:28+00:00</dc:date>
	<dc:creator>blahti</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-8214401912480503366.post-1091713066062903822">
	<title>Gabor Paller: Advantages and limitations of PhoneGap for sensor processing</title>
	<link>http://mylifewithandroid.blogspot.com/2013/04/advantages-and-limitations-of-phonegap.html</link>
	<content:encoded>&lt;div style=&quot;text-align: left;&quot; dir=&quot;ltr&quot;&gt;This is my Droidcon Tunis 2013 presentation about the effect of the web application model on battery consumption.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.sfonge.com/forum/topic/droidcon-tunis-2013-presentation-advantages-and-limitations-phonegap-sensor-processing-t&quot;&gt;Test programs related to the slideset are available here.&lt;/a&gt; You have to be logged into Sfonge website to access those.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-04-28T19:58:00+00:00</dc:date>
	<dc:creator>Gabor Paller</dc:creator>
</item>
<item rdf:about="http://www.vogella.com/blog/?p=5716">
	<title>Lars Vogel: Android – Why not to use static for View fields in your Activity or Fragments by Lars Vogel</title>
	<link>http://blog.vogella.com/2013/03/12/android-why-not-to-use-static-for-view-fields-in-your-activity-or-fragments-by-lars-vogel/</link>
	<content:encoded>&lt;p&gt;Your should not use static for defining fields for Views in your Android application.&lt;/p&gt;
&lt;p&gt;Then creating a View, the LayoutInflater (used in setContentView(R.layout.ID)) uses the current Context (of the Activity) and pass it to the inflated Views. A reference to the given Context is always kept by the View class and can be retrieved via the getContext() method.&lt;/p&gt;
&lt;p&gt;As a consequence, keeping a static reference on a View means  that your Activity keeps a reference on your View which keeps a reference on the activity instance. This is what leads to the leak.﻿&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;http://android.cyrilmottier.com/&quot;&gt;Cyril Mottier&lt;/a&gt; for explaining that in &lt;a href=&quot;https://plus.google.com/104044918586174763681/posts/LgDP8xLUTHT&quot;&gt;G+&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-03-12T10:13:22+00:00</dc:date>
	<dc:creator>Lars Vogel</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-8214401912480503366.post-216015783918009120">
	<title>Gabor Paller: Data capture application for car speed, accelerometer, compass and gyro fusion experiments</title>
	<link>http://mylifewithandroid.blogspot.com/2013/03/data-capture-application-for-car-speed.html</link>
	<content:encoded>&lt;div style=&quot;text-align: left;&quot; dir=&quot;ltr&quot;&gt;In &lt;a href=&quot;http://mylifewithandroid.blogspot.hu/2013/02/car-sensors.html&quot;&gt;my previous post &lt;/a&gt;I wrote about my enthusiasm of integrating car  sensors with the mobile device's own sensors. The first step was to  implement a data capture application that saves sensor data into a file.  This time I decided to save the gyro, accelerometer and compass sensor  data from the phone and the speed as measured by the car's speedometer. The most interesting aspect here is how we obtain the  speed data.&lt;br /&gt;&lt;br /&gt;There are two levels of interfaces playing role here. OBD2 interface and  the protocols accessible over it is the first level offered by the  car's on-board electronics. This interface is not trivial to talk to but  fortunately all the complexity of OBD2-related protocols is implemented  by the super-popular ELM327 microcontroller from ELM Electronics (or  its compatible copies). On one side the ELM327 chip talks to the car's  ECU using the OBD2 interface. On the other side, it offers a modem-like  serial interface. Popular connection option is USB but for our Android  client, Bluetooth is a better option. ELM327-compatible adapters are  available at a low cost, for example I bought the very basic version  below.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-iIJpqf9iCOA/UTzS5Dx73nI/AAAAAAAAALE/ubnErUUHGeY/s1600/elm327.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-iIJpqf9iCOA/UTzS5Dx73nI/AAAAAAAAALE/ubnErUUHGeY/s320/elm327.jpg&quot; height=&quot;189&quot; border=&quot;0&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;ELM327 has a very simple, yet powerful interface. In the first phase the  chip is set up by issuing a series of AT commands reminiscent of the  Hayes modem commands. The best place for reference is the &lt;a href=&quot;http://elmelectronics.com/DSheets/ELM327QS.pdf&quot;&gt;ELM327 specification&lt;/a&gt;.  The most important command is the ATS0 command. This instructs the chip  to auto-detect the protocol used on the OBD2 interface. Once this  auto-detection is successful, the car sensors can be queried by sending &lt;a href=&quot;http://en.wikipedia.org/wiki/OBD-II_PIDs&quot;&gt;the PID code of the sensor in question&lt;/a&gt;. For example for the car's speed one sends:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;010D&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The ELM327 chip then talks to the car's ECU, obtains the sensor data and returns a response like this:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;410D0C&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Where &quot;4&quot; is the ID for response, 10D is the PID of the sensor and 0C is  the value. Some OBD2 PIDs have complex coding but fortunately for the  speed sensor 0C simply means 12 km/h.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pallergabor.uw.hu/androidblog/gyrocarcapture.zip&quot;&gt;Click here to download the example program.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Before you start using this test application, make the Bluetooth pairing  of your device with the sensor from the Android Bluetooth settings.  Either you can use the real thing (ELM327 interface connected to a real  car) or you can use Ryan C. Gordon's great &lt;a href=&quot;http://icculus.org/obdgpslogger/obdsim.html&quot;&gt;OBDSim application&lt;/a&gt; that can run on a Linux box and can simulate a Bluetooth-connected  ELM327. In theory, OBDSim can also run on Windows, I tested only on  Linux. Setting it up is not trivial but it saves a great deal of time if you develop for the ELM327 interface.&lt;br /&gt;&lt;br /&gt;Then you can start the test application. First connect to your ELM327  device from the menu (&quot;Connect a device - secure&quot;). If the connection  works properly, you should see a series of AT commands and responses  flashing on the screen then the speed appears (e.g. 0 km/h if you do it  on a real car). This time you can start the sampling (&quot;Sampling&quot; check  box) and the application will save all the sensor information into a  file in the SDCARD in CSV format. The name of the file is  gyrocarcapture_&amp;lt;date&amp;gt;.csv and its format is very simple. One  warning here: sadly the timestamp format used for the speed sensor and  the device's own sensor are different: the sensor timestamps are coming from the SensorEvent object and the time stamp for the speed data comes from System.currentTimeMillis(). As device sensor events are very  frequent, I use the last device sensor timestamp for the speed sensor  too when processing these files. The speed sensor sampling frequency is  approximately 1 Hz.&lt;br /&gt;&lt;br /&gt;The application can be extended easily to sample other car sensors too.  However, in its present form it is good enough to detect if the driver  slows down in front of a speed bump (accelerometer-car speed sensor  fusion).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://1.bp.blogspot.com/-HOcaGAlhrbo/UTzTeRjFr5I/AAAAAAAAALI/AVuTkhJkQ5c/s1600/speedaccel.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-HOcaGAlhrbo/UTzTeRjFr5I/AAAAAAAAALI/AVuTkhJkQ5c/s320/speedaccel.png&quot; height=&quot;238&quot; border=&quot;0&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Or to figure whether the driver takes the bend too quickly (gyroscope-car speed sensor fusion).&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/-BwcahGF-3pM/UTzTpO4Z4GI/AAAAAAAAALQ/sfnAMl6kcTE/s1600/speedgyroz.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-BwcahGF-3pM/UTzTpO4Z4GI/AAAAAAAAALQ/sfnAMl6kcTE/s320/speedgyroz.png&quot; height=&quot;238&quot; border=&quot;0&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-03-10T18:41:00+00:00</dc:date>
	<dc:creator>Gabor Paller</dc:creator>
</item>
<item rdf:about="http://www.vogella.com/blog/?p=5712">
	<title>Lars Vogel: Determine the active Android framework maintainer by Lars Vogel</title>
	<link>http://blog.vogella.com/2013/03/05/determine-the-active-android-framework-maintainer-by-lars-vogel/</link>
	<content:encoded>&lt;p&gt;If you want to know the current Android maintainer you can use the following link:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://android-review.googlesource.com/#/admin/groups/8,members&quot;&gt;Android framework maintainer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;https://plus.google.com/107977664598327468897/posts&quot;&gt;Arvid Gerstmann&lt;/a&gt; for pointing me to that URL on Google+.&lt;/p&gt;</content:encoded>
	<dc:date>2013-03-05T09:53:23+00:00</dc:date>
	<dc:creator>Lars Vogel</dc:creator>
</item>
<item rdf:about="http://www.zdnet.com/blog/burnette/7000011388">
	<title>Ed Burnette: So long, fellow travelers</title>
	<link>http://www.zdnet.com/so-long-fellow-travelers-7000011388/</link>
	<content:encoded>Seven years writing at ZDNet, and all I got was this stupid T-Shirt.</content:encoded>
	<dc:date>2013-02-16T05:32:05+00:00</dc:date>
</item>
<item rdf:about="http://www.zdnet.com/blog/burnette/7000011064">
	<title>Ed Burnette: iOS 6.1 banned from corporate servers due to Exchange snafu (Updated)</title>
	<link>http://www.zdnet.com/ios-6-1-banned-from-corporate-servers-due-to-exchange-snafu-updated-7000011064/</link>
	<content:encoded>iPads and iPhones running the newest version of iOS are being blocked in some enterprises because bugs are overloading corporate Exchange servers.</content:encoded>
	<dc:date>2013-02-09T00:41:07+00:00</dc:date>
</item>
<item rdf:about="http://www.androidsx.com/?p=774">
	<title>Androidsx: Technical Debt In Android App Development</title>
	<link>http://www.androidsx.com/technical-debt-in-android-app-development/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=technical-debt-in-android-app-development</link>
	<content:encoded>Many indie developers think they can get away with introducing hacks all over the place while developing an Android application. Those shortcuts do speed up development. Probably, they’ll even take you closer to the launch day. However, chances are that they’ll end up doing more harm than good. The main reason is pure technical debt. [...]</content:encoded>
	<dc:date>2013-01-07T16:06:21+00:00</dc:date>
	<dc:creator>Pablo Pera Mira</dc:creator>
</item>
<item rdf:about="http://www.androidsx.com/?p=737">
	<title>Androidsx: Our progress in Android development in 2011: Part 1</title>
	<link>http://www.androidsx.com/our-progress-in-android-development-in-2011-part-1/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=our-progress-in-android-development-in-2011-part-1</link>
	<content:encoded>Let us share what we did in 2011 in the Android development field. Not that it is extraordinary in any way, but it may be interesting for some folks out there working on side projects, for you to see an example of what you can get done in a year of evenings and weekends. We’ll [...]</content:encoded>
	<dc:date>2012-04-25T20:01:32+00:00</dc:date>
	<dc:creator>Pablo Pera Mira</dc:creator>
</item>
<item rdf:about="http://android.bytearrays.com/android/difference-between-android-2-3-3-and-android-2-3-4/">
	<title>AndroidBytes: Difference Between Android 2.3.3 and Android 2.3.4</title>
	<link>http://android.bytearrays.com/android/difference-between-android-2-3-3-and-android-2-3-4/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=difference-between-android-2-3-3-and-android-2-3-4</link>
	<content:encoded>&lt;p&gt;The post title is referring to the &lt;strong&gt;difference&lt;/strong&gt; between Android 2.3.3 and Android 2.3.4 because it’s just one visible difference: &lt;strong&gt;Support voice and video chat using Google Talk&lt;/strong&gt;. Of course, there are lot’s of bug fixes, but these are in any release. &lt;/p&gt;
&lt;p&gt;So, Android 2.3.4, the latest over the air Android version update brings an exciting new feature to Android based devices. With the upgrade to Android 2.3.4 you can video or voice chat using Google Talk. Once updated you will notice a voice/video chat button next to your contact in Google Talk contact list. With one touch you can send an invitation to start a voice/video chat. You can make video calls via 3G/4G network or via Wi-Fi. The Android 2.3.4 update in addition to this new feature also include some bug fixes. &lt;/p&gt;</content:encoded>
	<dc:date>2011-09-11T10:33:38+00:00</dc:date>
	<dc:creator>admin</dc:creator>
</item>
<item rdf:about="http://android.bytearrays.com/android/htc-sense-3-5-is-coming-to-htc-desire/">
	<title>AndroidBytes: HTC Sense 3.5 is coming to HTC Desire</title>
	<link>http://android.bytearrays.com/android/htc-sense-3-5-is-coming-to-htc-desire/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=htc-sense-3-5-is-coming-to-htc-desire</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://forum.xda-developers.com/member.php?u=1152252&quot;&gt;coolexe&lt;/a&gt;, a very appreciated developer from &lt;em&gt;xda-developers&lt;/em&gt; has managed to port &lt;strong&gt;HTC Bliss&lt;/strong&gt; (3.5) to &lt;strong&gt;HTC Desire &lt;/strong&gt;(and &lt;strong&gt;HTC Desire HD&lt;/strong&gt;) in a custom ROM based on &lt;strong&gt;Android 2.3.4&lt;/strong&gt;. From the feedback received, there some lag in the app drawer, there are some problems with BT, Video Recording, HTC Wall, LockScreen, Skin preview, FM Radio, but hey.. it’s the first release and the fixes will surely come… and it’s the best port released, so I think it worth a try. I’ll try to review it as soon I’m able to install it on my phone, but until then, here are some features and some screenshots:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Features:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leaked&lt;strong&gt; Android 2.3.4&lt;/strong&gt; with &lt;strong&gt;Sense 3.5&lt;/strong&gt; For HTC VivoS WVGA Screen &lt;/li&gt;
&lt;li&gt;Cache Partition Mount as Re-writable *Now u can save ur data on cache partition too*      &lt;br /&gt;Andrev_oc Demon with Daemon Controller v2.11.apk &lt;/li&gt;
&lt;li&gt;Screen state scaling Customizable…      &lt;br /&gt;……………….screen on - ondemand 254-1152 MHz.       &lt;br /&gt;……………….screen off - conservative 254-384.0 MHz. &lt;/li&gt;
&lt;li&gt;RAM Tweaks &lt;/li&gt;
&lt;li&gt;Speed tweaks with Smoothness patch &lt;/li&gt;
&lt;li&gt;Rom Optimized for Speed &amp;amp; Stability &lt;/li&gt;
&lt;li&gt;Busybox 1.19.0, Root, Superuser &lt;/li&gt;
&lt;li&gt;Automatic ZipAlign by Wes Garner, slightly adjusted by ROBO &lt;/li&gt;
&lt;li&gt;Updated APNs to Cyanogens big list (over 1300 providers) &lt;/li&gt;
&lt;li&gt;All HTC Themes, Widgets &amp;amp; Addons &lt;/li&gt;
&lt;li&gt;Host file symlink to data partition for easier update &lt;/li&gt;
&lt;li&gt;Customizable Bootanimation and downanimation &lt;/li&gt;
&lt;li&gt;Some Hidden bloat-ware removed &lt;/li&gt;
&lt;li&gt;AND MUCH MORE. &lt;/li&gt;
&lt;li&gt;Languages supported: wwe &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Screenshots:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://android.bytearrays.com/wp-content/uploads/2011/09/cool_3d_sense.jpg&quot; rel=&quot;lightbox-cool3d-sense&quot;&gt;&lt;img src=&quot;http://android.bytearrays.com/wp-content/uploads/2011/09/cool_3d_sense_thumb.jpg&quot; style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px;&quot; title=&quot;cool_3d_sense&quot; height=&quot;305&quot; width=&quot;506&quot; alt=&quot;cool_3d_sense&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;: Just go to his &lt;a href=&quot;http://forum.xda-developers.com/showthread.php?t=1250815&quot; target=&quot;_blank&quot;&gt;thread&lt;/a&gt; in order to download it because you can find some other goodies too&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;If you manage to install it, please leave your opinion here&lt;/font&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2011-09-09T17:26:45+00:00</dc:date>
	<dc:creator>admin</dc:creator>
</item>

</rdf:RDF>
