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

