If you don't use it the docs say "Based on the target device screen density, the Android framework will scale down assets by a factor of 0.75 (low dpi screens) or scale them up by a factor of 1.5 (high dpi screens)." and in our case that meant the icons in the app had zoom performed on them in order to scale them up for WVGA and it looked pretty fuzzy. We've also been told that on some builds of donut the display was limited to a HVGA portion of a WVGA screen with a big black border around it, but I'm not sure how up to date those builds were.
The supports-screens manifest tag appears to be backwards compatible and doesn't cause problems for earlier devices. We're using it in the 1.4.6 version of the AndAppStore client and we've tested it on a few cupcake devices without any problems, and the 1.4.6 release is now public so if you want to test the compatibility you can grab it from http://tinyurl.com/aasclient
Anyway, I thought I'd give you guys a heads up so when donut hits the streets you guys don't start wondering why you're getting comments like "The graphics are poor" or "Everything looks fuzzy".
Hope it's' useful,
Al.
--
* Looking for Android apps?, try http://andappstore.com/ *
======
Funky Android Limited is registered in England & Wales with the
company number 6741909. The registered head office is Kemp House,
152-160 City Road, London, EC1V 2NX, UK.
The views expressed in this email are those of the author and not
necessarily those of Funky Android Limited, it's associates, or it's
subsidiaries.
You and me both.
> Are any available yet?
Soon. I think.
> Can anyone shed more light on what/when is available in the WVGA
> department for Android?
The Archos Internet media tablet is supposed to have WVGA:
We should get confirmation of that on the 15th.
--
Mark Murphy (a Commons Guy)
http://commonsware.com | http://twitter.com/commonsguy
Android App Developer Books: http://commonsware.com/books.html
broc.seib wrote:You and me both.
> I am looking to get my hands on a physical WVGA device for android.
> Can anyone shed more light on what/when is available in the WVGAThe Archos Internet media tablet is supposed to have WVGA:
> department for Android?
http://gizmodo.com/5341242/archos-android-tablet-with-720p-playback-and-mobile-internet-to-launch-september-15th
Uh, no offense, but HTC Magic devices shipped with Android 1.5 right
about when the SDK became available. In Spain, IIRC. You may recall
modest gnashing of teeth over this.
While the core Android team may know timelines vis a vis product
launches, we out here in the hinterlands have to plan for another
possible "here's the SDK! better support it tomorrow!" release.
> Afaik, the Archos tablet is based on 1.5, and thus does not use the
> official screen support in the 1.6 platform. I have no idea what
> exactly they are doing, but unless it is a 1.6-based device, it would be
> of questionable value for someone wanting to follow the standard platform.
If it sells in decent quantity, or looks like it might, whether it is
"the standard platform" or not means little -- we have to know how to
support it. That means some of us will need to get our grubby
medium-sized hands on it, to test apps and advise others. In fact, the
possibility that they *do* deviate from the norm is all the more reason
some of us will need hardware, since we will not be able to rely upon
emulators as much.
As the long-standing Chinese proverb/curse goes: "May you live in
interesting mobile OS platforms" (or something like that)...
--
Mark Murphy (a Commons Guy)
http://commonsware.com | http://twitter.com/commonsguy
_The Busy Coder's Guide to *Advanced* Android Development_
Version 1.1 Available!
This has nothing to do with WVGA, this is about the pixel density of
the device. I don't remember what we've done in the 1.6 SDK but it
looks like the WVGA skin is using a high density configuration
(probably 240 dpi.) You can very well run the 1.6 emulator in WVGA
with a density that matches Dream/Magic/Hero/Galaxy/etc.
> This means that on a 1.5 WVGA device the layout can look sparse and
> odd, whereas on 1.6 it looks a lot closer to what you originally had.
Android 1.5 actually has limited support for higher and lower
densities. The device has to be built with the information about the
screen density so that images can be scaled accordingly.
If your app is correctly using layouts and not according positions, it
should work fine on a WVGA "normal" density device (screen density of
a Deam, which means a 5" WVGA display.) If you want your app to work
on a high-density or low-density device (for instance a 3" WVGA or a
3" QVGA display,) Android 1.6 will be required.
>If you have an app which doesn't have a supports-screens tag or
>declare a minimum SDK level of 4 (yup, declaring minimum SDK of donut
>alters the layout behaviour)
It doesn't really alter the layout behavior. It takes the app out of
compatibility mode. In compatibility mode, the application runs as if
it was on an HVGA standard density device (a Dream/Magic/etc.) This
way the app works as it's supposed to. When you compile against SDK
level 4, we assume you are aware that you must now support different
resolutions and/or densities. Your app is taken out of compatibility
mode and is laid out based on the actual screen resolution. At this
point, your app is still using a limited compatibility mode: if the
device has a density that is not 160 dpi (or close, a Dream is
actually 180 dpi but is assumed to have 160 dpi,) the bitmap resources
are scaled to match the screen density (a 100x100 bitmap becomes
150x150 on a 240 dpi device, or 75x75 on a 120 dpi device.)
Your job as an app developer is to:
- Make sure your activities layout correctly in various resolutions (HVGA, WVGA)
- Decide whether you want to use assets specific to various screen
densities (drawable-hdpi/ for displays > 160 dpi for instance.)
- Correct possible use of absolute pixel dimensions in your code by
taking into account the screen density (DisplayMetrics.density gives
you the correct scale factor)
Of all those 3 points, the second one is optional. Taking care of it
will make sure your app looks great.
I know this is all complicated and probably confusing (and this email
is light on details and does not cover everything) but when Android
1.6 is released, we'll tell you everything there is to know about
supporting various resolutions and densities.
P.S: Now some of you might understand why we deprecated AbsoluteLayout
to discourage its use :)
--
Romain Guy
Android framework engineer
roma...@android.com
Note: please don't send private questions to me, as I don't have time
to provide private support. All such questions should be posted on
This is not a problem, this is your application running in
compatibility mode on a device with the same screen density as a Dream
(160 dpi.) Your application is simply told the screen is actually
WVGA.
--
Romain Guy
Android framework engineer
roma...@android.com
Note: please don't send private questions to me, as I don't have time
to provide private support. All such questions should be posted on
Just to confirm to everyone.
The skins are associated to each platform in the SDK.
The skins packaged with Android 1.5 and earlier have no density
associated to them, meaning they'll behave like medium density devices
(160dpi).
The skins packaged with Android 1.6 are the following:
QVGA@120dpi (low)
HVGA@160dpi (med)
WVGA(800&854)@240dpi (high)
When creating an avd from the command (with 'android create avd') you
can override this value. Just say 'yes' to using a custom hardware
config and change the property lcd.density (or something close).
This way you can test all different sorts of resolution/density combos.
Xav
--
Xavier Ducrohet
Android Developer Tools Engineer
Google Inc.
It has *nothing* to do with your monitor. It's a choice we made
because these densities (120, 160, 240) are the ones likely to be used
by future devices. Like we mentioned earlier, to keep the same density
as a Dream in WVGA, you would need a 5" display. I doubt that many
phones will ship with a 5" display.
It's all about *emulating* phone hardware. The density of your
computer display remains the same, but the emulators emulates the
display density of phones by scaling the pixels accordingly. Actually,
if you know the density of your monitor, you can even pass a flag to
the emulator to set it up so that it will have the same physical size
as an actual phone. For instance, on my Dell 30" monitor, I can use a
monitor density of 96 dpi to make HVGA@160dpi an WVGA@240dpi emulators
show up with the same physical size as my Dream (holding the device
next to the emulators is a simple comparison :).
> To me it would make more sense if the dpi of the emulators display
> doesn't change unless the developer explictly states they want to
> emulate a device with a different DPI.
No. Like I said, 160 dpi at other resolutions means a very different
screen size. I mentioned WVGA/5" already, but now imagine the size of
a QVGA@160dpi display... it would be very tiny. The point is that it
wouldn't help you at all.
It still has NOTHING to do with your monitor. The emulator emulates
*phones.* What matters is the density of the *phones.* You're not
choosing the resolution of a window on your computer, you are choosing
the resolution of a phone display you want to emulate.
--
Romain Guy
Android framework engineer
Not really. The emulator, by default, displays the framebuffer and
that's it. So only the resolution matters. It doesn't give you any
idea of the screen size being displayed.
As Romain mentioned, using -scale <your monitor dpi>dpi will scale the
emulator to roughly emulate the actual screen size.
Using '-scale 96dpi' on a WVGA@160dpi and WVGA@240dpi will result in
different scaling.
> I'm not saying that the dpi of my
> monitor should be the same as the dpi of the emulator, what I am
> saying is if I open an QVGA, HVGA, or WVGA sized window in the native
> OS the dpi stays the same, therefore if I request a QVGA, HVGA, or
> WVGA sized screen for the emulator and it opens a QVGA, HVGA, or WVGA
> sized window I wouldn't expect the emulator to start changing the dpi
> *as well* without either asking or warning me.
Actually your are warned (kinda).
When you create an AVD based on android 1.6, at the end it'll tell you
it created it with the following hardware config:
hw.lcd.density=240
We should probably make it more obvious, but then we'd probably need
make the whole hardware config more obvious. For example, hat tablet
you keep referring to has no navigation buttons (d-pad/trackball) and
yet the emulator will emulate one.
Most of the WVGA Android devices I've seen announced are 5" media
tablets.
And this all ignores what is to me probably likely to be an even bigger part of the market, lower density QVGA and WQVGA screens.
Just to be clear; are you saying that the device won't show in market
because it's a standard DPI and low resolution screen, or are you
saying they'll be blocked just because apps don't explicityly say they
support QVGA?
From the docs in the open repo SDK I would have expected apps to be
available and scaled down using the 0.75 factor.
Use resource sets, and ship one version of your app that supports
multiple screen sizes from a single APK.
My interpretation is that the manifest elements that Al Sutton and Ms.
Hackborn were describing are used as market and installer filters -- the
app will not be installed if you do not meet the manifest criteria. You
might use this, for example, as a stopgap to prevent people from trying
to use your app on QVGA or WVGA screens before you have had a chance to
add support for them.
So, if you want one app to handle more than one screen size, write your
app to handle more than one screen size, and leave those manifest
elements out of it.
Again, this is an educated guess, based upon what we had been told for
the last ~15 months on this issue, and it could be they have a whole
'nuther system in mind now.
--
Mark Murphy (a Commons Guy)
http://commonsware.com | http://twitter.com/commonsguy
_Android Programming Tutorials_ Version 1.0 Available!
That I am not sure about, see below.
> I was concerned that if I do this the framework on (e.g.) a WVGA
> device will know that my app is 'old', and will therefore start
> automatically scaling up my assets. Or, that for QVGA devices the
> market might decide that my 1.5SDK app can't possibly support the
> screen and it won't even be offered for download.
I misunderstood your original question. I thought you were wondering how
to support multiple screen sizes without having multiple APKs on the
market. You should be able to support as many screen sizes as you want
with a single APK, via resource sets. This *may* need to be supplemented
with new 1.6-specific manifest entries -- that part is unclear to me at
this time.
If you have an existing application, 1.5r3, with no layouts specifically
for WVGA/QVGA, WVGA and QVGA devices may make autonomous decisions of how
to interpret the layout rules you have provided (which presumably were
written for HVGA). Up until recently, I'd've said that it would just try
to use the assets as-is and interpret the layout rules as written. So,
WVGA might work just fine "out of the box" if you used RelativeLayout and
such (versus, say, AbsoluteLayout), but QVGA might look awful because your
assets were too big.
Some of the recent comments on this thread suggest that the core Android
team has added more sophisticated smarts than that, perhaps to try to
allow more applications to run acceptably without modification, and
perhaps also to deal with screen density and such. The details of how all
that works has not been discussed much beyond this thread, and presumably
is the meat of Ms. Hackborn's upcoming blog post.
Like you, I'm awaiting more details.
--
Mark Murphy (a Commons Guy)
http://commonsware.com
Android App Developer Books: http://commonsware.com/books.html
The only problem with this setup is with the ARCHOS 5 Tablet - it's the only Android 1.5 device that has a resolution different than 320x480 and it won't be able to load the images in the drawable-hdpi-v4 folder. So, if you want to support it you'll have to create a custom APK for it.
Somehow, we are trying this and it does not seem to be working.Namely, it seems
Donut *does not* pick up new resolution images in compatibility mode.