Witajcie, zaczynam projektować wygląd mojej aplikacji, chciałbym to zrobić od razu dobrze więc zacząłem się zagłębiać w tematykę skalowalności na różnego rodzaje ekranów. Chciałbym was zapytać czy dobrze rozumiem to zagadnienie, jeśli coś pomijam, proszę mnie pokierować.
Załóżmy że mam jaki zaprojektowany projekt graficzny przycisku i chce go dostosować do różnych ekranów i teraz tak, projektuje go dla roździelczości mdpi - skala 100% obrazka zaprojektowanego.
Mam foldery(zakładki) w zakładce res:
res/
drawable-xxxhdpi/
awesome-image.png
drawable-xxhdpi/
awesome-image.png
drawable-xhdpi/
awesome-image.png
drawable-hdpi/
awesome-image.png
drawable-mdpi/
awesome-image.png przykład zaciągniety z adroid develper dokumentacji ale tak sie u mnie to też rozkłada.
Żeby przycsk był skalowalny muszę go przeskalować do hdpi - 50% większy niż mdpi, następnie xhpi 100% więcej od mdpi itd. ?
Następnie te grafiki wrzucam do określonych folderów , robię w kodzie w wyglądzie w pliku xml odniesienie do grafiki @drawable/[odniesienie do obrazka] i to wiem .
Teraz pytanie czy w pliku java muszę dodać jakiś kod, który by mówił o tym że obraz musi być przeskalowany , czy wystarczy że zrobie te grafiki do tych folderów i android sam będzie wiedział żeby skorzystać z tych zasobów?
Na stronie android studio w dokumentacji znalazłem takie coś :
// The gesture threshold expressed in dp
private static final float GESTURE_THRESHOLD_DP = 16.0f;
// Get the screen's density scale
final float scale =
getResources() .
getDisplayMetrics() .density;
// Convert the dps to pixels, based on density scale
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f);
// Use mGestureThreshold as a distance in pixels...
oraz
private static final int GESTURE_THRESHOLD_DP = ViewConfiguration.get(myContext).getScaledTouchSlop();
z góry dziękuje za pomoc, jestem zielony na razie jeśli chodzi o skalowalne elementy graficzne dla aplikacji.