topher
topher

Reputation: 1397

Positioning images on multiple screen devices with custom view

I have a custom View class which displays a map with few flags located at some positions.
It should look like this : Map example, images taken from Google
(Images are taken from Google)

I draw those flags with Canvas's drawBitmap method.
Unfortunately it doesn't display the same exact position in different screen sizes.

enter image description here

I have tried using these :

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inScaled = false;
Bitmap img = BitmapFactory.decodeFile(myFile.getAbsolutePath(), opt);

But it will result exactly same images on all screens (will display a small image in large screen), which is not good.
So the image should be scaled too.
How can I achieve this ?

Upvotes: 0

Views: 193

Answers (1)

Daniel
Daniel

Reputation: 3806

I've never done this my self but you probably need to account for the density of the screen.

int multiplier = getResources().getDisplayMetrics().density;

I.e this will return 0.75 for LDPI. Then you'll have to use the MDPI as a base line and account for the other types of displays with the multiplier.

E.g

int top = y * multiplier;
int left = x * multiplier;

If I'm totally wrong I'll delete this answer, but this was what came to my mind.

Upvotes: 1

Related Questions