This isn't a compatibility issue -- 1.5 doesn't know anything about "nodpi" so if you try to use it there you will not get the right result. (I am pretty sure what happens is it sees this as a really high dpi and thus scales it down.) It's just a case of not being able to use newer APIs on an older platform.
On Thu, Sep 17, 2009 at 4:29 PM, Tom Gibara <m...@tomgibara.com> wrote: > I just published a simple class for dealing with this minor compatibility > issue; it seems to be working well for my application and it might be useful > for anyone else in the same situation. > http://blog.tomgibara.com/post/190539066/android-unscaled-bitmaps > > Tom. > <http://blog.tomgibara.com/post/190539066/android-unscaled-bitmaps> > > 2009/9/17 Tom Gibara <m...@tomgibara.com> > > Hmm, interesting... >> Just had a chance to try this out on 1.5. >> >> If I move my bitmaps into a drawable-nodpi directory then the application >> compiles and executes, but I don't see the images. Inspection with the >> debugger (plus logging just to make sure) indicates that the bitmaps, when >> loaded from "nodpi" always have a width and height of 1px. >> >> Move them back to the basic drawable directory and it all works perfectly >> again. >> >> Shame, looks like it was *almost* implemented :) >> >> Tom. >> >> 2009/9/17 Romain Guy <romain...@google.com> >> >>> >>> Give it a try, 1.5 already had all the scaling code based on display's >>> density. I don't know about nodpi specifically but it's worth the try. >>> >>> On Thu, Sep 17, 2009 at 11:46 AM, Tom Gibara <m...@tomgibara.com> wrote: >>> > Duh, I misread the docs for the inScaled flag. Thanks for pointing that >>> out. >>> > The drawable-nodpi/ sounds perfect, but I'm guessing I can't use that >>> and >>> > remain compatible with API 3, since I don't see "nodpi" listed the >>> > documentation for resources in 1.5. >>> > Tom. >>> > >>> > 2009/9/17 Romain Guy <romain...@google.com> >>> >> >>> >> > private Bitmap loadBitmap(int resId) { BitmapFactory.Options options >>> = >>> >> > new >>> >> > BitmapFactory.Options(); options.inTargetDensity = 1; >>> options.inDensity >>> >> > = 1; >>> >> > return BitmapFactory.decodeResource(context.getResources(), resId, >>> >> > options); >>> >> > } >>> >> >>> >> That's the wrong way to do it. You're assigning your bitmap a density >>> >> of 1dpi, which can have bad consequences. There's a much simpler way >>> >> to do it: just set options.inScaled = false. >>> >> >>> >> But the right way to do it really is to place the assets in the right >>> >> directory: >>> >> drawable-ldpi/ for 120dpi displays >>> >> drawable-mdpi/ for 160dpi displays >>> >> drawable-hdpi/ for 240dpi displays >>> >> >>> >> and in your case: >>> >> drawable-nodpi/ for assets that should not be scaled. >>> >> >>> >> > I have two related queries: >>> >> > Is there a simpler way of doing this? >>> >> > Is there a way to support android:minSdkVersion="3" without jumping >>> >> > through >>> >> > the hoop of creating two implementations (for API 3 and API 4) of an >>> >> > "image >>> >> > loading" interface and selecting one at runtime? >>> >> > Tom. >>> >> > > >>> >> > >>> >> >>> >> >>> >> >>> >> -- >>> >> Romain Guy >>> >> Android framework engineer >>> >> romain...@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 >>> >> public forums, where I and others can see and answer them >>> >> >>> >> >>> > >>> > >>> > > >>> > >>> >>> >>> >>> -- >>> Romain Guy >>> Android framework engineer >>> romain...@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 >>> public forums, where I and others can see and answer them >>> >>> >>> >> > > > > -- 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 -~----------~----~----~----~------~----~------~--~---