[G1 Android Development] jubeh:
Ok, now I want to talk a little about my experiences since three days ago when I started working on this:

The code has been sitting in my computer for three days, but I hadn't been able to build it because I updated to Ubuntu Karmic, the problem is Karmic has dropped support for JDK 5 (it's very obsolete), but AOSP requires it because JDK 6 breaks the @override in android. Also, JDK 5 is removed from the Karmic repositories, so you can't download it as an alternative. I fixed the problem by adding the Jaunty repositories to my packages.list and then apt-get install sun-java5-sdk and selecting it as the default java program (in case anybody has that problem).

I finally built the first image of 2.0 Monday night (while at work, no less, it was a light night) and started polishing some things.

Android 2.0 introduces a new way of dealing with images. Android doesn't resize images, so a 48x48 icon will still be 48x48 even on a larger screen with more pixels. The only way to stretch images is to change the DPI of the build, but it breaks many other elements, so, if you had a 3.5" screen of 800x480, all your icons would look tiny because of the increased pixel density

For android 2, the hdpi concept was introduced. When available, on screens with higher pixel density (for example, 800x480 on a 3.5" screen), the larger icons in the hdpi folder will be used instead, that way, instead of having to use the corner of your finger to tap a tiny 48x48 pixel icon, you can use your finger to tap on glorious 72x72 pixels available in hdpi (plus the added advantage of having more pixels to define the image, thus, better looking icons).

The prettiest icons we saw when 2.0 was first revealed didn't show up on our dream on the first SDK builds we tried, that's because of our medium pixel density, the build falls back to the regular icons (now under mdpi) and it turns out that most of the new icon art hadn't yet been applied to the medium pixel density art, so that was my first course of action, change all icons (shrunk down 72x72 to 48x48) to MDPI to have visual consistency.

Wallpapers work the same way, but Launcher now keeps two lists (xml) of wallpapers to use depending on the dpi situation, the 800 px wallpapers get used on higher densities (or resolutions) and we had the same situation for the mdpi wallpapers, the newer art wasn't included for mdpi, so I made 640x480 renditions of the hdpi wallpapers (i had to trim some because of aspect ratio differences) and included it on the wallpapers xml (available under res>valuesmdpi>wallpapers.xml, much, much better than having to edit the java code to add wallpapers). I also did the same resizing deal for the app drawer tabs.

I don't like the default icon setup. So i edited launcher>res>xml>defaultworkspace.xml to add my own icon layout (added clock back where i think it looks good by default), I tried to get power control and music widgets in screens 2 and 4 respectively, but I couldn't figure out how to get them, for search and clock, you specify <clock $screen $posx $posy> and <search $screen $posx $posy> but I couldn't figure out music and power control, if you decompile my default_workspace.xml you can see the things I tried (I commented them out)

I also changed the default wallpaper and the wallpaper order a tiny bit (I think it looks nice)

I added 5 screens (i learned from reading cyanogen's github, thanks) and I had launcher originally set to auto-rotate (set "screen_orientation=sensor" in Manifest.xml) but since akmd is not working, it didn't make any sense, plus screen would stick if you opened keyboard, so I decided to revert it.

Modifying code is fun, and I know there's still A LOT to learn, but it's a fun journey learning how things actually work and then customizing to your likes. I encourage you guys to give it a try.