Ok, I finally figured out what is going on:

The problem is that a image button who's with is specified as 10mm,
shows as about 7mm on my Galaxy tab, and about 9mm on my Iconia Tab.
There are 2 reasons for this rather significant difference:

   1.  The Iconia Tab reports its xdpi as ~160, when its actual xdpi
is ~150.
   2.  Honeycomb uses a new drawable for its button background, with
significantly smaller margin than the drawable in Froyo.

Issue 1 accounts for about .6mm of the difference, Issue 2 accounts
for the remainder.   Issue 2 can be solved by choosing one of the two
backgrounds, packaging it with the application, and specifying it as
the background for the ImageButton.  Issue 1 cannot be resolved, but
the difference it creates is relatively minor once issue 2 is dealt
with.

On May 13, 12:01 pm, Ab <[email protected]> wrote:
> DisplayMetrics.density just returns the scaling factor used to
> calculate pixels from DIP.  On the Galaxy it is 1.5, on the Iconia Tab
> it is 1.0
>
> I continue to believe the issue is that the Galaxy does some sort of
> mysterious scaling when it renders layouts.  It seems to scale them
> down by about 20%.  I assume it does this to correct for the fact that
> it represents itself as HDPI (~240dpi), when it is actually 170dpi.
>
> On May 12, 6:51 pm, Roger <[email protected]> wrote:
>
>
>
>
>
>
>
> > Have you tried scaling using DisplayMetrics.density instead?  The
> > online docs specifically mentions:
>
> > "This value does not exactly follow the real screen size as given by
> > xdpi and ydpi, but rather is used to scale the size of the overall UI
> > in steps based on gross changes in the display dpi."
>
> > On May 12, 9:41 am, Ab <[email protected]> wrote:
>
> > > *Edit.  Sorry, first sentence after "1." should read:
>
> > > IT seems that the fact that 66 pixels shows on my Galaxy as 8mm,
> > > when it should be 10mm (based on provided dpi), ISN'T DUE to a false
> > > dpi
> > > returned from DisplayMetrics.
>
> > > On May 12, 12:29 pm, Ab <[email protected]> wrote:
>
> > > > Diane,
>
> > > > Thank you for your reply.  I have 2 quick follow up questions:
>
> > > > 1. I seems that the fact that 66 pixels shows on my Galaxy as 8mm,
> > > > when it should be 10mm (based on provided dpi), is do to a false dpi
> > > > returned from DisplayMetrics.  The Galaxy screen measures 3.5 inches
> > > > wide, and the specs that its resolution is 1024 x 600.  So, 600/3.5 =
> > > > 171.48.  Which is close enough to 168.89 that it doesn't explain the
> > > > 2mm difference in button size.  Am I incorrect in my thought that
> > > > there is something else causing this discrepancy?
>
> > > > 2. What is your recommendation to display a relatively consistently
> > > > sized button?  Possibly have different layouts for extra large
> > > > devices, set the button dimensions to 50dip on regular devices, and
> > > > 75dip on extra large devices?
>
> > > > On May 12, 12:10 pm, Dianne Hackborn <[email protected]> wrote:
>
> > > > > Sorry as things are today you basically can't do this because many 
> > > > > devices
> > > > > are not reporting the correct true screen dpi.  If they did, the 
> > > > > correct way
> > > > > to do this would be to use a physical unit for your dimensions --- 
> > > > > that is
> > > > > "10mm" if you want 10mm.  But as I say, there are many devices out 
> > > > > there
> > > > > that are not configured with the correct physical screen dpi do these 
> > > > > units
> > > > > are at this point not usable.
>
> > > > > On Thu, May 12, 2011 at 8:50 AM, Ab <[email protected]> wrote:
> > > > > > I want to put a toolbar in my application. The toolbar will use
> > > > > > ImageViews as application buttons. I would like the ImageViews to be
> > > > > > the exact same size regardless device; by "same size" I mean that,
> > > > > > when rendered to the screen, if I measure them with a ruler, the
> > > > > > dimensions will be the same. I would like this size to be ~10mm (the
> > > > > > width of my index finger).
>
> > > > > > I have been completely unsuccessful in accomplishing this.
>
> > > > > > I am testing on a MDPI, large screen Acer Iconia Tab and a HDPI 
> > > > > > medium
> > > > > > screen Samsung Galaxy Tab. If I set layout_width="50dip" and
> > > > > > layout_height="50dip", the buttons render as ~10mm on the Samsung, 
> > > > > > and
> > > > > > ~8mm on the Acer. If I set the buttons as layout_width="12mm" and
> > > > > > layout_height="12mm", they render as 12mm on the Acer and ~9mm on 
> > > > > > the
> > > > > > Galaxy (confusing that 50dip renders bigger on the Galaxy than the
> > > > > > Acer, but 12 mm renders smaller on the Galaxy than on the Acer).
>
> > > > > > If I place a 32pix x 32pix icon in my drawable-mdpi folder (and no
> > > > > > equivalent in the drawable-hdpi folder), and set
> > > > > > layout_width="wrap_content" and layout_height="wrap_content"; the
> > > > > > results are similar to if set to 50dip, the Samsung is about 10mm, 
> > > > > > the
> > > > > > Acer about 8mm. If I add a 48pix x 48pix icon to my drawable-hdpi
> > > > > > folder, there is no change; presumably because the Acer still uses 
> > > > > > the
> > > > > > mdpi icon and the Samsung uses the bigger one, but scales it down by
> > > > > > 50% because it knows its hdpi (if am confident that this surprising
> > > > > > scaling occurs because if I move the 48pix icon to the mdpi folder,
> > > > > > and have nothing in the hdpi folder, the icon shows very large on 
> > > > > > the
> > > > > > Samsung).
>
> > > > > > I then attempted to calculate the number of pixels necessary for 
> > > > > > 10mm
> > > > > > based on the values of xdpi and ydpi from DisplayMetrics: 10 mm in
> > > > > > pixels = xdpi * 10 / 25.4.  On the galaxy, this is  168.89 * 10 / 
> > > > > > 25.4
> > > > > > = 66.  However, when I set the layout_width to 66, the button 
> > > > > > measured
> > > > > > ~8mm wide.  But, at 168.89 dpi, the dots per mm should be 6.64
> > > > > > (168.89/25.4), so 66pixels should be approximately 10mm.  So, how
> > > > > > could it measure 8mm?  The Galaxy must be scaling down the layout
> > > > > > parameters somehow. Is there any way to retrieve how much they are
> > > > > > scaling down by, so that I can adjust for it?
>
> > > > > > I am confused and could really use advice. How do I make my button
> > > > > > fingertip sized regardless of dpi and screen size?
>
> > > > > > --
> > > > > > You received this message because you are subscribed to the Google
> > > > > > Groups "Android Developers" group.
> > > > > > To post to this group, send email to 
> > > > > > [email protected]
> > > > > > To unsubscribe from this group, send email to
> > > > > > [email protected]
> > > > > > For more options, visit this group at
> > > > > >http://groups.google.com/group/android-developers?hl=en
>
> > > > > --
> > > > > Dianne Hackborn
> > > > > Android framework engineer
> > > > > [email protected]
>
> > > > > Note: please don't send private questions to me, as I don't have time 
> > > > > to
> > > > > provide private support, and so won't reply to such e-mails.  All such
> > > > > questions should be posted on public forums, where I and others can 
> > > > > see and
> > > > > answer them.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to