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

<channel>
	<title>@radley</title>
	<atom:link href="http://radleymarx.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://radleymarx.com</link>
	<description>UI / UX  &#124;  designer / developer</description>
	<lastBuildDate>Wed, 25 Apr 2012 17:45:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Quick guide to the new app widget padding/margins in ICS / Android 4.0+ (backwards-compatibility &amp; new issues)</title>
		<link>http://radleymarx.com/blog/app-widget-padding-margins-in-ics-android/</link>
		<comments>http://radleymarx.com/blog/app-widget-padding-margins-in-ics-android/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 04:30:32 +0000</pubDate>
		<dc:creator>radley</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Useful]]></category>

		<guid isPermaLink="false">http://radleymarx.com/?p=1708</guid>
		<description><![CDATA[<p>For those who don&#8217;t know, Mike &#38; I make a popular widget app for Android called HD Widgets. We&#8217;ve spent a lot of time resolving for Android UI fragmentation and have been mostly successful. Recently we made the jump to the latest Android sdk (15). We did this to take advantage of the new features ...</p>
 ]]></description>
			<content:encoded><![CDATA[<p>For those who don&#8217;t know, Mike &amp; I make a popular widget app for Android called <a href="https://play.google.com/store/apps/details?id=cloudtv.hdwidgets"><strong>HD Widgets</strong></a>. We&#8217;ve spent a lot of time resolving for Android UI fragmentation and have been mostly successful.</p>
<p>Recently we made the jump to the <a href="http://developer.android.com/sdk/android-4.0.3.html">latest Android sdk (15)</a>. We did this to take advantage of the new features and give HD Widgets a long runway. Unfortunately, the &#8220;creative&#8221; folk behind Android decided to throw a new curve-ball that started with sdk 14: <a href="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html#anatomy"><strong>forced widget margins</strong></a>:</p>
<blockquote><p><strong>Note: </strong> As of Android 4.0, app widgets are automatically given margins between the widget frame and the app widget&#8217;s bounding box to provide better alignment with other widgets and icons on the user&#8217;s home screen. To take advantage of this strongly recommended behavior, set your application&#8217;s <a href="http://developer.android.com/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a> to 14 or greater.</p></blockquote>
<p>While they say &#8220;strongly recommended&#8221;, it&#8217;s actually a forced feature. This is a setting you have no control over &#8211; it&#8217;s automatically added and you can&#8217;t change it.</p>
<p>What does this mean? It may seem like a small change but it will have a dramatic effect on your layouts. Essentially if you build using the ICS APIs, <strong>widgets are reduced in size by ~15% on ICS devices and<em> *only ICS devices* !</em></strong> While this was implemented solely to make Google&#8217;s Launcher look better, it affects all launchers on the device.</p>
<p>Here&#8217;s what you&#8217;ll see if you use the new sdk and use the built-in margins:</p>
<p><img class="aligncenter size-full wp-image-1713" title="difference in widget padding using API 14" src="http://radleymarx.com/blog/wp-content/uploads/2012/04/new_padding.png" alt="" width="628" height="513" /></p>
<p>&nbsp;</p>
<h2><strong>Backwards-Compatible Padding</strong></h2>
<p>The best solution for backwards size-compatibility is to use <em><strong>@dimen</strong></em> to assign dynamic padding depending on OS version. So each of our widgets has this as our base layout:</p>
<p></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
	android:id=&quot;@+id/widget&quot;
	android:layout_width=&quot;match_parent&quot;
	android:layout_height=&quot;match_parent&quot;
	android:padding=&quot;@dimen/widget_padding&quot;&gt;</pre><p></p>
<p>From here we create two <em>dimens.xml</em> files, one for your <strong>values</strong> folder, and the other for <strong>values-v14</strong>:</p>
<p><strong>values/dimens.xml</strong></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;resources&gt;
	&lt;dimen name=&quot;widget_padding&quot;&gt;6dp&lt;/dimen&gt;
&lt;/resources&gt;</pre><p></p>
<p><strong>values-14/dimens.xml</strong></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;resources&gt;
	&lt;dimen name=&quot;widget_padding&quot;&gt;0dp&lt;/dimen&gt;
&lt;/resources&gt;</pre><p></p>
<p>The key here is that all devices get an extra 6dp of padding, but we revert that to 0dp for v14 devices so they only get the native padding.</p>
<p><strong>Final Tip:</strong> remember that the xml value is singular: <em><strong>dimen</strong></em> but the file name is plural: <em><strong>dimens</strong></em>.</p>
<h2><strong>New Issues</strong></h2>
<p>While this solution works great for backwards-compatibility there&#8217;s a couple of new issues that you&#8217;ll need to be aware of, both of which are unique to ICS devices.</p>
<p>The most obvious issue will be the grid size difference between the <strong>Galaxy Nexus</strong> launcher and third-party launchers like <strong>ADWLauncher EX</strong>:</p>
<p><img class="aligncenter size-full wp-image-1719" title="ICS grid size comparison" src="http://radleymarx.com/blog/wp-content/uploads/2012/04/grid_size_conpared.png" alt="" width="628" height="558" /></p>
<p>Similar to Honeycomb, the new ICS launcher&#8217;s grid isn&#8217;t actually full screen. The native ICS launcher features a non-removable Google Search Bar on the top. To keep the grid layout proportional, they reduce the total grid size by 20%. That causes another dramatic size difference between layouts of launchers <strong><em>on the same device</em></strong>.</p>
<p>The other new issue introduced by ICS&#8217;s new widget margins is that sometimes the native launcher hiccups and forgets to auto-apply the margins, resulting in unsightly bloated widgets:</p>
<p><img class="aligncenter size-full wp-image-1720" title="borked margins" src="http://radleymarx.com/blog/wp-content/uploads/2012/04/borked_margins.png" alt="" width="628" height="558" /></p>
<p>I&#8217;ve seen this pop up a few times. I don&#8217;t know why &amp; I haven&#8217;t found a pattern. Needless to say, you may get feedback from your users about this so it&#8217;s useful to know it happens.</p>
<p>[Update 4/24/12: changed the code from using multiple RemoteViews to using @dimen padding. The RemoteViews method seemed to work fine and offered more flexibility, but @dimen is part of the <a href="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html">Developer Documentation</a> so it is less likely to break in the future.]</p>
]]></content:encoded>
			<wfw:commentRss>http://radleymarx.com/blog/app-widget-padding-margins-in-ics-android/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>I fixed the file names for Google&#8217;s ICS Android Design Icons (free download)</title>
		<link>http://radleymarx.com/blog/fixed-google-ics-android-design-icons/</link>
		<comments>http://radleymarx.com/blog/fixed-google-ics-android-design-icons/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 20:29:38 +0000</pubDate>
		<dc:creator>radley</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Useful]]></category>

		<guid isPermaLink="false">http://radleymarx.com/?p=1689</guid>
		<description><![CDATA[<p>Google recently introduced the Android Design site for 4.0 / ICS offering tips and resources for making apps that look and feel like native Google apps. One big benefit is that you can download design resources including stencils, vector art, and icons to make it faster and easier to create stuff. The &#8220;All Icons&#8221; pack ...</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Google recently introduced the <a href="http://developer.android.com/design/"><strong>Android Design</strong></a> site for 4.0 / ICS offering tips and resources for making apps that look and feel like native Google apps. One big benefit is that you can <a href="http://developer.android.com/design/downloads/">download design resources</a> including stencils, vector art, and icons to make it faster and easier to create stuff.</p>
<p>The &#8220;All Icons&#8221; pack (also part of &#8220;download all&#8221;) features two Halo themes with icons for mdpi, hdpi, &amp; xhdpi. <strong><em>Unfortunately, most of the icon files were improperly named</em></strong> so they can&#8217;t be used for production: resource file names can&#8217;t use hyphens nor start with numbers.</p>
<p>So I  did a quick fix and renamed them. You can <a href="http://radleymarx.com/android/icons.zip"><strong>download them here</strong></a></p>
<p>So instead of:</p>
<ul>
<li>1-navigation-accept.png</li>
</ul>
<p>it&#8217;s now:</p>
<ul>
<li>ic_navigation_accept.png</li>
</ul>
<p>Hope this helps =)</p>
<p>&nbsp;</p>
<p><a href="http://radleymarx.com/android/icons.zip">download Android ICS All Icons pack</a></p>
]]></content:encoded>
			<wfw:commentRss>http://radleymarx.com/blog/fixed-google-ics-android-design-icons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rollerskate (DJ mix)</title>
		<link>http://radleymarx.com/blog/rollerskate/</link>
		<comments>http://radleymarx.com/blog/rollerskate/#comments</comments>
		<pubDate>Sun, 02 Oct 2011 19:12:02 +0000</pubDate>
		<dc:creator>radley</dc:creator>
				<category><![CDATA[DJ Mixes]]></category>

		<guid isPermaLink="false">http://radleymarx.com/?p=1662</guid>
		<description><![CDATA[<p>Very happy to release a new mix this weekend. Rollerskate is a nu-disco, house mix with a faux 70s /80s house vibe. I&#8217;ve been working on this since spring, expecting that it would be my summer house mix, but the tracks are rather eclectic and it took a while to polish it. The first four ...</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Very happy to release a new mix this weekend. <em><strong><a href="http://www.mixcloud.com/radley/rollerskate/">Rollerskate</a></strong></em> is a nu-disco, house mix with a faux 70s /80s house vibe. I&#8217;ve been working on this since spring, expecting that it would be my summer house mix, but the tracks are rather eclectic and it took a while to polish it.</p>
<p>The first four tracks work really well. I have many <a href="http://www.jacquesrenault.com/">Jacques Renault</a> tracks but <em>Norman&#8217;s Fire</em> had me hooked right from the start. The <a href="http://www.discogs.com/artist/T-Ski+Valley">T-Ski Valley</a> track is from Carl Cox&#8217;s <a href="http://www.beatport.com/chart/carl-cox-july-chart/37446">Beatport Top Ten</a> list back in July, but not a lot of DJs have mixed it well (it&#8217;s a solid &#8220;here we go!&#8221; starter). Before I found those, track #3,<a href="http://www.discogs.com/artist/Ilija+Rudman">Ilija Rudman&#8217;</a>s <em>See,</em> was going to be my starter. <em>15 to 20 (Anthony Manfield Disco Remix)</em> by <a href="http://www.phenomenalhandclapband.com/">The Phenomenal Handclap Band</a> was a big score I picked up on vinyl from <a href="http://www.discogs.com/artist/Mark+E.+Quark">Mark E Quark&#8217;s excellent Discogs shop</a>, so I was stoked to find a digital version I could mix with.</p>
<p>The middle section is a bit rougher. Those track were the inspiration for the mix due to their retro 80s house sound, but they don&#8217;t play well together. If fact, they&#8217;re a big reason I sat on this mix for so long (and even considered not releasing it). In the end I took editorial liberties to avoid some of the tedious bridges and just gritted my teeth for some of the transitions. In a few months I&#8217;ll probably not even notice <img src='http://radleymarx.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>The last bit is more modern semi-retro house with a couple of organic tracks. I re-used <em>You&#8217;ll Disappear</em> (was also in <em><a href="http://radleymarx.com/blog/pastiche/">Pastiche</a></em>) to tee-up <em>Sandwich Love</em>, a sweet funky disco ditty. <a href="http://www.crazyp.co.uk/">Crazy P&#8217;s</a> house acts as bookends while <em>International Track</em> does it&#8217;s job as a feel good finale a la Daft Punk.</p>
]]></content:encoded>
			<wfw:commentRss>http://radleymarx.com/blog/rollerskate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pastiche (DJ mix)</title>
		<link>http://radleymarx.com/blog/pastiche/</link>
		<comments>http://radleymarx.com/blog/pastiche/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 18:51:14 +0000</pubDate>
		<dc:creator>radley</dc:creator>
				<category><![CDATA[DJ Mixes]]></category>

		<guid isPermaLink="false">http://radleymarx.com/?p=1647</guid>
		<description><![CDATA[<p>This is a mix I&#8217;ve been working on for a while. It has a big deep buildup for the first few songs and then just lets loose. My working title was &#8220;Super Shuffle&#8221; because of the slow-groove shuffle of most of the tracks. But the feel of the final mix felt more eclectic than rhythm ...</p>
 ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mixcloud.com/radley/pastiche/">This is a mix</a> I&#8217;ve been working on for a while. It has a big deep buildup for the first few songs and then just lets loose. My working title was &#8220;Super Shuffle&#8221; because of the slow-groove shuffle of most of the tracks. But the feel of the final mix felt more eclectic than rhythm focused, thus the final title <em><strong><a href="http://www.mixcloud.com/radley/pastiche/">Pastiche</a></strong></em>. Although they don&#8217;t fit into any normal dance scheme or genres, these tracks are pretty epic. I also fell in love with the art by <a href="http://sirmitchell.com/">Sir Mitchell</a> which seems to match the anything goes tracks.</p>
<p>Artist mentions: I&#8217;m loving <a href="http://soundcloud.com/gaga-digi/sets/tphb/">The Phenomenal Handclap Band</a> (I have another mix pending with an even more awesome track by them). They&#8217;re playing here in Oakland in October with <a href="http://www.bryanferry.com/">Bryan Ferry</a> (i.e. <a href="http://www.roxymusic.co.uk/">Roxy  Music</a>). I&#8217;ve been picking up as many good <a href="http://www.facebook.com/pages/Idjut-Boys/38225928093">Idjut Boys</a> &amp; <a href="http://soundcloud.com/ashley-beedle">Ashley Beedle</a> tracks as I can get my hands on, which in turn introduced me to <a href="http://soundcloud.com/flash-atkins">Flash Atkins</a> &amp; <a href="http://soundcloud.com/frankbooker">Frank Booker</a>. Finally there&#8217;s the guys I&#8217;ve been playing everywhere <a href="http://www.myspace.com/fullpupp">Prins Thomas</a> &amp; <a href="http://soundcloud.com/runelindbaek">Rune Lindbaek</a>.</p>
<p><a href="http://radleymarx.com/mix/Pastiche%20(320k).mp3">download mix</a> (320k)</p>
]]></content:encoded>
			<wfw:commentRss>http://radleymarx.com/blog/pastiche/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My latest project: HD Widgets for Honeycomb tablets</title>
		<link>http://radleymarx.com/blog/hd-widgets/</link>
		<comments>http://radleymarx.com/blog/hd-widgets/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 21:32:16 +0000</pubDate>
		<dc:creator>radley</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://radleymarx.com/?p=1636</guid>
		<description><![CDATA[<p>Mike and I are launching a new app this week: HD Widgets. This is our first paid app, following up on Cloudskipper, our free music player which has skyrocketed to over 425k installs in just three months. HD Widgets follows our Mixwit formula: take something simple, make it attractive and fun, and make it easy ...</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Mike and I are launching a new app this week: <a href="https://market.android.com/details?id=cloudtv.hdwidgets">HD Widgets</a>. This is our first paid app, following up on <a href="https://market.android.com/details?id=cloudtv.cloudskipper">Cloudskipper</a>, our free music player which has skyrocketed to over 425k installs in just three months.</p>
<p>HD Widgets follows our Mixwit formula: take something simple, make it attractive and fun, and make it easy for users to be able to customize and personalize it. The app includes a dozen widgets with a variety of clocks, backgrounds, layouts, and options. The UI of the app itself has a lot of slide-based navigation &#8211; the pages can be swiped, the menu, and all of the options &#8211; so it&#8217;s fun and really intuitive to use.</p>
<p><a href="http://radleymarx.com/blog/wp-content/uploads/2011/08/hdwidgets-app.jpg"><img class="aligncenter size-full wp-image-1639" title="hdwidgets-app" src="http://radleymarx.com/blog/wp-content/uploads/2011/08/hdwidgets-app.jpg" alt="" width="640" height="400" /></a></p>
<p>There were a few challenges. First off was the design challenge of dealing with portrait/landscape layouts for both widgets and apps on a 10:9 screen. Another was figuring out how to build a platform to allow hundreds of widget designs and styles without flooding the OS widget menu. As such we needed dynamic widgets even though they require static layouts. We also had to deal with matching our look and feel to the new Honeycomb theme while still making the app intuitive <img src='http://radleymarx.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>The next challenge for us is making it work on smaller screens: scaling down the app while still providing the same fun, swiping experience. We also have to deal with differences in the different OS versions. We avoided stuff like fragments, but there may be other differences we&#8217;re yet to uncover.</p>
<p>Anyways, that&#8217;s my intro. I&#8217;ll try to put something together on Honeycomb UI/UX shortly. I&#8217;m crammed for time so it will either happen immediately or not until much later.</p>
<p>In the meantime, please <a href="https://market.android.com/details?id=cloudtv.hdwidgets">download HD Widgets</a> for your Honeycomb tablet and have fun with it.</p>
<p>Last and least, here&#8217;s the logo/icon I made for the app using Illustrator and <a href="http://www.erain.com/products/swift3d/">Swift3D</a>:</p>
<p><img class="aligncenter size-full wp-image-1643" title="hdwidgets-512x512" src="http://radleymarx.com/blog/wp-content/uploads/2011/08/hdwidgets-512x512.png" alt="" width="512" height="512" /></p>
]]></content:encoded>
			<wfw:commentRss>http://radleymarx.com/blog/hd-widgets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

