2012-06-28 22 views
9

Witam, piszę kodować, aby ustawić tapetę ekranu głównego. Działa dobrze. Ale piksel obrazu jest całkowicie uszkodzony, a wtedy moja tapeta nie pasuje do rzeczywistego rozmiaru ekranu głównego. Próbuję ćwiczyć różne rozmiary obrazów. Niestety to nie działa dla mnie. Jak to rozwiązać.Dlaczego moja tapeta na ekranie głównym jest uszkodzona?

Mój kod jest tutaj

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
Drawable drawable = getResources().getDrawable(R.drawable.newimage); 
Bitmap wallpaper = ((BitmapDrawable) drawable).getBitmap();   
try 
{ 
    wallpaperManager.setBitmap(wallpaper); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

My Screen Obraz oryginału
enter image description here

My Screen Android Emulator Ekran
enter image description here

Dlaczego mój oryginalny obraz jest tutaj uszkodzony.
Sposób wyświetlania My Original Image na podstawie Emulator Size.

+2

Co masz na myśli przez "Mój piksel obrazu jest całkowicie uszkodzony"? Jaki kod napisałeś i czego próbowałeś? – bouteillebleu

+0

Dlaczego nie dodać zrzutu ekranu, wtedy otrzymamy lepszy pomysł na temat problemu. – mariomario

+0

@mariomario Teraz dodałem zrzut ekranu. – Sekar

Odpowiedz

7

Można spróbować to:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
Drawable drawable = getResources().getDrawable(R.drawable.newimage); 
Bitmap wallpaper_source = ((BitmapDrawable) drawable).getBitmap();   
try { 
    int w = wallpaperManager.getDesiredMinimumWidth(); 
    int h = wallpaperManager.getDesiredMinimumHeight(); 
    int x = (w-wallpaper_source.getWidth())/2; 
    int y = (h-wallpaper_source.getHeight())/2; 
    Bitmap wallpaper = Bitmap.createBitmap(w, h, Config.ARGB_8888); 
    Canvas c = new Canvas(wallpaper); 
    c.drawBitmap(wallpaper_source, x,y, null); 
    wallpaperManager.setBitmap(wallpaper); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
+0

Ten kod działa super. Oczekuję wyniku, na przykład, jeśli Rozmiar zdjęcia to "72 * 72" lub "1200 * 1200", a następnie rozmiar emulatora to "480 * 480". Dlatego muszę zmienić rozmiar obrazu na "480 * 480" bez uszkodzenia pikseli, a następnie ustawić na tapetę. Dzięki. – Sekar

+0

jeśli jest to odpowiedź, którą akceptujesz, daj temu facetowi swoją nagrodę! – bkbeachlabs

0
WallpaperManager wallpaperManager = WallpaperManager.getInstance(activity); 
    BitmapFactory.Options myOptions = new BitmapFactory.Options(); 
    myOptions.inDither = true; 
    myOptions.inScaled = false; 
    myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    myOptions.inDither = false; 
    myOptions.inPurgeable = true; 
    Bitmap preparedBitmap = BitmapFactory.decodeResource(activity 
      .getApplication().getResources(), R.drawable.newimage, myOptions); 
    try 
    { 
     wallpaperManager.setBitmap(preparedBitmap); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

To co mogę używać, aby moje obrazy przeskalować dobrze bez szalonych linii biegnących w poprzek - można spróbować tego na tapetę - nie wiem, czy to działa, niech ja wiem.

Powiązane problemy