2013-05-03 10 views
5

Sto usando un codice più semplice per impostare wallpaper:Android - Imposta sfondo per adattarla al formato dello schermo del telefono

Bitmap bmap2 = BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.a)); 

getApplicationContext().setWallpaper(bmap2); 

E il problema si verifica quando la dimensione dell'immagine è più grande la dimensione dello schermo. Posso vedere solo la parte dell'immagine in ingresso.

Ho provato i metodi di ridimensionamento come createScaledBitmap e funziona, ma non come voglio. createScaledBitmap sta ridimensionando bitmap, ma non le dimensioni dell'immagine, solo la risoluzione (solo compromettere la qualità dell'immagine, non la dimensione dell'immagine caricata sul telefono come sfondo).

Qualcuno sa come ridimensionare la dimensione dell'immagine, non una risoluzione?

EDIT:

alcune schermate:

Immagini dal menù, prima scala e dopo scala:

http://zapodaj.net/14097596e4251.png.html

Quindi, come potete vedere risoluzione v'è scalato non solo, dimensione del immagine.

Qualche idea ??

+1

Come nota, 'setWallpaper' è deprecato dal livello di API 5. Si potrebbe desiderare di guardare in [WallpaperManager] (http://developer.android.com/reference/android/app/WallpaperManager.html) che ha molte utilità. – adrianp

+0

Ho anche provato: WallpaperManager wallpaperManager = WallpaperManager.getInstance (this); wallpaperManager.setBitmap (bmap2); ma è lo stesso. (almeno risultato) – Tomi89

+1

Problema già risolto. Questo codice mi ha aiutato: DisplayMetrics metrics = new DisplayMetrics(); \t \t getWindowManager(). GetDefaultDisplay(). GetMetrics (metriche); \t \t altezza int = metrics.heightPixels; \t \t int width = metrics.widthPixels; \t \t Bitmap bitmap = Bitmap \t \t \t \t .createScaledBitmap (qualunque sia, larghezza, altezza, true); – Tomi89

risposta

14

Risposta da parte dell'autore è nei commenti, ma come nessuno vedere i commenti, ho copiarlo qui:

Bitmap bmap2 = BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.paper)); 

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
int height = metrics.heightPixels; 
int width = metrics.widthPixels; 
Bitmap bitmap = Bitmap.createScaledBitmap(bmap2, width, height, true); 

WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this); 
try { 
    wallpaperManager.setBitmap(bitmap); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

La mia dimensione dell'immagine è 600x800 e voglio adattarmi a qualsiasi dispositivo. il tuo codice non funziona per tablet –

+0

@Reza_Rg non funziona. Mi aiuti per favore. –

+0

@PratikButani trovi qualsiasi soluzione su come montare l'immagine sullo schermo. Mi aiuti per favore. –