Cześć,
mam problem z dopasowaniem animowanej tapety do różnych rozdzielczości ekranów. Weźmy przykładową sytuację:
- w tle rysuję jedną bitmapę powiedzmy rozdzielczości 480x960
- na pierwszym planie chcę umieścić niewielką bitmapę 20x20, która będzie dopasowana idealnie w konkretne miejsce - nie może zostać przesunięta.
Dopasowuje to pod jedną rozdzielczośc i jest cacy. Jednak jak odpalę inną rozdzielczość na emulatorze bitmapa na przedzie rysowana jest już trochę obok - zupełnie niedopasowana.
Znalazłem sposób żeby to obejść - pobieram rozdzielczość ekranu i wg. niej rysuję w odpowiednim miejscu. Zastanawia mnie jestak kwestia density i boję się że to będzie się rozjeżdzało przy różnych ekranach nawet dla tej samej rozdzielczości. Poza tym jest to podejście trochę prymitywne - szukam czegoś uniwersalnego.
Próbowałem zamienić współrzędne piksele w DrawBitmap na dip jak poniżej, ale nic to nie dało:
int pixel = 120;
final float scale = getResources().getDisplayMetrics().density;
int dip = (int) (pixel* scale + 0.5f);
najbliżej jest w taki sposób:
c.drawBitmap(obrazek, 100*wx/480,250*wy/800, null);
gdzie wx i wy to współczynnik stosunku aktualnej rozdzielczości w pionie/poziomie do rozdzielczości bazowej dla której to dopasowuję (480x800), ale też nie do końca to wychodzi.
czyli pytanie: wytłumaczcie mi łopatologicznie jak narysować bitmapę (zamienić poniższy kod)
c.drawBitmap(obrazek, 100,250, null);
tak żeby znajdowała sie ona w identycznym miejscu ekranu dla wszystkich rozdzielczości?