Autore Topic: Immagine di sfondo compatibile su tutti i dispositivi tablet  (Letto 820 volte)

Offline cioralut

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab 2 10.1" (GT-P5110)
  • Sistema operativo:
    Android 4.2.2
Immagine di sfondo compatibile su tutti i dispositivi tablet
« il: 30 Maggio 2014, 16:13:58 CEST »
0
Salve a tutti.
Ho l'esigenza di caricare un'immagine di sfondo come background al layout principale di una activity.
L'app è compatibile solo per TABLET.

All'inizio, ho pensato che per poter caricare un'immagine di sfondo valido su tutti i dispositivi, bastasse aggiungere sul progetto un'immagine con risoluzione alta
(es/ 2560x1600) e Android si sarebbe arrangiato a dimensionare l'immagine a seconda del display.
A mia sorpresa, però, questo ridimensionamento, non sempre va a buon fine...

Dalle prove fatte su un Samsung Galaxy Tab 2 10.1" (1280x768 mdpi) con Android 4.2.2 ho avuto i seguenti risultati:

Immagine 960x576 --> L'immagine viene adattata (in questo caso ingrandita) e visualizzata a tutto schermo
Immagine 1280x768 --> L'immagine viene visualizzata a tutto schermo
Immagine 1702x1021 --> L'immagine viene adattata (in questo caso rimpicciolita) e visualizzata a tutto schermo
Immagine 1920x1152 --> L'immagine viene adattata (in questo caso rimpicciolita) e visualizzata a tutto schermo
Immagine 2560x1536 --> L'immagine non viene caricata (sfondo nero)

Per ovviare al problema, ho adottato questa soluzione.
Vado a leggere la dimensione in pixel del display e a seconda della risoluzione, vado a caricare l'immagine che più si avvicina.

I tablet attualmente in commercio, hanno le seguenti risoluzioni (WxH):

  800x480
  960x640
  1024x600
  1024x768
  1280x720
  1280x768
  1280x800
  1600x900
  1920x1080
  1920x1200
  2560x1600

Quindi sono andato a realizzare il seguente controllo:


Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;   // Larghezza in pixel del display      
if(width>=2560) {
   Carica immagine 2560x...   
}
else if(width>=1920) {
   Carica immagine 1920x...

}
else if(width>=1600) {
   Carica immagine 1600x...
   
}
else if(width>=1280) {
   Carica immagine 1280x...
   
}
else if(width>=1024) {
   Carica immagine 1024x...
   
}
else if(width>=960) {
   Carica immagine 960x...
}
else {
   Carica immagine 800x...   
}


Ho fatto diverse prove su dispositivi reali ed emulati, e sembra funzionare correttamente.
Volevo però sapere da voi, se esiste un METODO MIGLIORE per caricare come sfondo un'immagine valido su tutti i display dei tablet.

Grazie per l'eventuale aiuto.

Ciao

  Daniele

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Immagine di sfondo compatibile su tutti i dispositivi tablet
« Risposta #1 il: 30 Maggio 2014, 16:53:58 CEST »
0
Che caratteristiche ha la tua immagine? E' uno sfondo ripetibile o è una immagine non ripetibile?

Offline cioralut

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab 2 10.1" (GT-P5110)
  • Sistema operativo:
    Android 4.2.2
Re:Immagine di sfondo compatibile su tutti i dispositivi tablet
« Risposta #2 il: 30 Maggio 2014, 17:09:05 CEST »
0
E' un'immagine non ripetibile.
Avevo già letto diversi post sul forum (ad esempio questo: [facile] Gestione di bitmap come background di Activity - Android Developers Italia ) ma non fa al mio caso.

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Immagine di sfondo compatibile su tutti i dispositivi tablet
« Risposta #3 il: 30 Maggio 2014, 19:34:11 CEST »
0
Purtroppo senza un pò di lavoro è impossibile. Intanto ti consiglio di non usare immagini così grandi perchè 2560x1536x4 (4 byte per pixel) sono la bellezza di 15-16mb... in pratica su device vecchi carichi quell'immagine e finisci subito la heap memory.  :-(

Offline Trotto23

  • Utente junior
  • **
  • Post: 94
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista