For compatibility reasons, bitmaps in the folder that doesn't specify a dpi
("drawable") are assumed to be mdpi, and will thus be scaled if used in a
different density screen.  If you want a bitmap but that does not scale
based on density, use "drawable-nodpi".

On Mon, Jul 12, 2010 at 9:26 AM, Al Sutton <a...@funkyandroid.com> wrote:

> I'd like to know if someone can tell me if this is intended behaviour for a
> reason, or just a long standing bug thats in 1.6 and above;
>
> In a nutshell; I have a layout which has four ImageButtons and three sets
> of four icons located in the drawables folder (1 icon per button per screen
> size out of QVGA, HVGA, WVGA).  If I programatically try to set the button
> to set the ImageButtons image Android will ignore any maximum size I
> programatically specify and scale the ImageButton up beyond the size of the
> icons & the specified maximum size.
>
> For those who are more comfortable in code; my manifest contains;
>
>        <uses-sdk                       android:minSdkVersion="3"
>                                                android:targetSdkVersion="4"
> />
>        <supports-screens       android:largeScreens="true"
>                                                android:normalScreens="true"
>                                                android:smallScreens="true"
>                                                android:anyDensity="true"/>
>
> and I have;
>
>        layout/buttonbar.xml
>
> which contains serval instances of;
>
>    <ImageButton        android:id="@+id/button"
>                        android:layout_width="wrap_content"
>                        android:layout_height="wrap_content"
>                        android:background="@android:color/transparent"
>                        android:scaleType="center"
>                        android:layout_weight="0"/>
>
> I also have;
>
>        drawable/ic_button_small.png                    (a 32x32 icon)
>        drawable/ic_button_medium.png           (a 48x48 icon)
>        drawable/ic_button_large.png                    (a 64x64 icon)
>
> The problem is, if I, in onCreate for an activity, on a hdpi WVGA device
> (e.g. the Nexus One), do;
>
>        final ImageButton button = (ImageButton)
> activity.findViewById(R.id.button);
>        button.setMaxHeight(64);
>        button.setMaxWidth(64);
>        button.setImageResource(R.drawable.ic_button_large);
>
> the each button gets scaled up to be 96x96 (and looks very ugly).
>
> If, however, I copy all of the icons into drawable-hdpi, all of the buttons
> are correctly sized at 64x64.
>
>
> To me the icons should not be scaled up for three reasons;
>
> 1) The maximum size of the button was specified as 64x64, and so shouldn't
> be scaled up to 96x96.
> 2) The manifest declares anydenisty, and so UI elements shouldn't be scaled
> by the OS.
> 3) The drawable directory does not specify which densities the icons are
> for, therefore the OS shouldn't assume they're mdpi icons which need scaling
> on a hdpi device.
>
> What do other people think?
>
> Al.
>
>
> --
>
> * Looking for Android Apps? - Try http://andappstore.com/ *
>
> ======
> Funky Android Limited is registered in England & Wales with the company
> number  6741909.
>
> 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 received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
Dianne Hackborn
Android framework engineer
hack...@android.com

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 android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to