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
>>
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
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