2013-05-03 17 views
5

używam najprostszego kodu ustawić wallpaper:Android - ustawić tapetę, aby dopasować rozmiar ekranu telefonu

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

getApplicationContext().setWallpaper(bmap2); 

A problem występuje, gdy rozmiar obrazu jest większy niż rozmiar ekranu. Widzę tylko część obrazu wejściowego.

Próbowałem zmienić metody, takie jak createScaledBitmap i to działa, ale nie tak, jak chcę. createScaledBitmap zmienia rozmiar mapy bitowej, ale nie rozmiar obrazu, tylko rozdzielczość (po prostu zepsuć jakość obrazu, a nie rozmiar obrazu załadowany do telefonu jako tapety).

Czy ktoś wie, jak zmniejszyć rozmiar obrazu, a nie rozdzielczość?

EDIT:

Kilka ekranów:

obrazów z menu, przed skali i po skali:

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

Więc jak widać nie jest skalowany tylko rozdzielczość, a nie rozmiar obrazek.

Jakieś pomysły?

+1

Jako notatkę, 'setWallpaper' jest nieaktualna od poziomu API 5. Czasami warto zajrzeć w [WallpaperManager] (http://developer.android.com/reference/android/app/WallpaperManager.html), który ma wiele narzędzi. – adrianp

+0

Próbowałem również: WallpaperManager WallpaperManager = WallpaperManager.getInstance (this); wallpaperManager.setBitmap (bmap2); , ale to jest to samo. (przynajmniej wynik) – Tomi89

+1

Już rozwiązany problem. Ten kod pomógł mi: Metryki DisplayMetrics = new DisplayMetrics(); \t \t getWindowManager(). GetDefaultDisplay(). GetMetrics (metryki); \t \t int height = metry.heightPixels; \t \t int width = metry.widthPixels; \t \t Mapa bitowa mapa bitowa = bitmapy \t \t \t \t .createScaledBitmap (niezależnie, szerokość, wysokość, prawda); – Tomi89

Odpowiedz

14

odpowiedzi od autora jest w komentarzach, ale jak nikt zobaczyć komentarze, skopiować go tutaj:

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

Mój rozmiar obrazu wynosi 600x800 i chcę go zmieścić w dowolnym urządzeniu. Twój kod nie działa na tablecie –

+0

@Reza_Rg nie działa. Proszę pomóż mi. –

+0

@PratikButani znajdziesz rozwiązanie, jak dopasować obraz na ekranie. Proszę pomóż mi. –

Powiązane problemy