Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android drawable changes sizes on screen when reading image from file

I have an image on a private file. I read the file, create the drawable, and assign it to an ImageView. The ImageView has WRAP_CONTENT so the size is automatic.

On 320x480 screens, the image looks good But on screens with more resolution and high density 480x800 or 480x854 (N1, droid) , when the image is for example 150x150, I see the image as 100x100.

Of course it has something to do with the density but not sure how should I resolve this.

This is my code:

FileInputStream fis = this.openFileInput("icon.png");

icon = Drawable.createFromStream(fis, "icon");

fis.close();

imageView.setImageDrawable(icon);

thanks

================================================================

update:

with the following code:

FileInputStream fis = this.openFileInput("icon.png");

icon = Drawable.createFromStream(fis, "icon");

if I then inspect the size of the icon, android thinks the size is 100x100, when really is 150x150.

Looks like its reducing the image by the density. Can anybody explain this and how to avoid this.

Thanks

like image 253
Daniel Benedykt Avatar asked Apr 15 '10 14:04

Daniel Benedykt


1 Answers

I am working on a similar issue, try this:

TypedValue typedValue = new TypedValue();
//density none divides by the density, density default keeps the original size
typedValue.density = TypedValue.DENSITY_DEFAULT;
Drawable d = Drawable.createFromResourceStream(null, typedValue, fis, "icon");

I am still working through how to develop a general solution to pick resolution/resize images from a generic stream instead of the drawable-* directories.

like image 115
Steven Yelton Avatar answered Sep 21 '22 01:09

Steven Yelton