Salve a tutti, è mia intenzione creare un gioco/applicazione che sia graficamente compatibile con tutte le risoluzioni degli attuali smartphone/tablet in commercio.
Ho dato un occhiata ad html.it (
http://www.html.it/pag/50534/supporto-multirisoluzione) ed ho capito che:
- Bisogna creare varie immagini con diverse densità pixel: 120dpi, 160dpi, 240dpi, 320dpi ecc
- Bisogna posizionare le immagini in cartelle separate drawable e richiamarle da codice.
Tramite Android Studio sono risalito credo a tutte le principali risoluzioni correnti di smartphone/tablet che sono le seguenti:
Smartphone:
240*320
240*400
240*432
320*480
480*800
480*854
720*1280
768*1280
1080*1920
1440*2560
1440*2880
Tablet:
600*1024
800*1280
1200*1920
1536*2048
1600*2560
1800*2560
Dalla pagina ufficiale di developer.android.com ho letto che la densità pixel cambia in base al rapporto 1x,1.5x,2x,3x,4x.
Ho inoltre letto che la risoluzione di base è quella mdpi che ha 160dpi e in cui 1 pixel corrisponde ad 1 dpi.
Se io a questo punto scelgo una risoluzione mdpi tra quelle degli smartphone, mi accorgo fin da subito che se seguo i moltiplicatori con rapporto 1x,1.5x,2x,3x,4x, vado a coprire solamente alcune poche risoluzioni tra tutte quelle elencate.
Ad esempio con la 240*320 ottengo: 240*320, 360*480, 480*640, 720*960, 960*1280
Invece con la 240*400 ottengo: 360*600, 480*800, 720*1200, 960*1600
Da questo quindi penso di aver capito che non è possibile creare una sola versione grafica raster che sia compatibile con tutte le risoluzioni.
Ed è qui che mi sorgono un paio di domande...
Per quanto riguarda il codice, da quello che sono riuscito a comprendere, dovrei scegliere una risoluzione mdpi in cui 1 pixel corrisponde ad 1 dpi e poi realizzare tutta la app
usando come unità di misura i dpi invece che i pixel.
In questo modo credo/spero che quando la app viene eseguita con diversa densità pixel, le misure in dpi si adattino automaticamente alla schermata di gioco.
Oppure credo mi basterebbe moltiplicare le dimensioni correnti dei pixel per la densità pixel corrente.
Per quanto riguarda la questione grafica però non riesco a capire come poter procedere.
Se scegliessi di realizzare le immagini per una risoluzione tra quelle base mdpi e poi realizzassi anche tutte le altre versioni con densità pixel differenti (ldpi,hdpi,xhdpi, xxhdpi, xxxhdpi)
avrei comunque inserito nelle varie cartelle drawable immagini che siano davvero compatibli solamente con un paio delle risoluzioni elencate prima.
Questo vorrà dire ad esempio che se lo sfondo della mia app fosse realizzato con dimensioni pixel 480*800 e densità 240dpi e fosse eseguito su un dispositivo con risoluzione 480*854, la grafica verrebbe distorta di quei 54pixel aggiuntivi per intenderci.
Quindi volevo chiedervi, graficamente come dovrei muovermi per creare una applicazione compatibile con tutte le risoluzioni correnti.
Se vado a intuito credo che esista una porzione dello schermo che sia sempre visibile in tutte le diverse risoluzioni, mentre ce ne sia una esterna che sia interamente visibile solo a quei dispositivi che hanno la stessa densità pixel ma con risoluzione più alta.
Altrimenti non ho proprio idea di come possa funzionare le cosa.
Qualcuno può illuminarmi in merito?
Purtroppo non ho trovato nessuna guida che spiegasse come affrontare l'intera questione e magari indicasse da dove partire graficamente.