2012-06-28 11 views
9

Hi ich kodiere, um ein Home Screen Wallpaper zu setzen. Es funktioniert gut. Aber mein Bildpixel ist total beschädigt und dann stimmt mein Hintergrundbild nicht mit der tatsächlichen Größe des Startbildschirms überein. Ich versuche verschiedene Bildgrößen zu trainieren. Leider funktioniert es nicht für mich. Wie man es löst.Warum ist mein Home-Bildschirmhintergrund beschädigt?

Mein Code ist hier

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(); 
} 

Mein Screenshot Originalbild
enter image description here

Mein Screenshot Android Emulator Home Screen
enter image description here

Warum meine Originalbild hier ist beschädigt.
Wie wird My Original Image basierend auf der Emulator Size angezeigt.

+2

Was meinen Sie mit "Mein Bildpixel ist total beschädigt"? Welchen Code hast du geschrieben und was hast du probiert? – bouteillebleu

+0

Warum nicht einen Screenshot hinzufügen, dann erhalten wir eine bessere Idee, was das Problem ist. – mariomario

+0

@mariomario Jetzt habe ich meinen Screenshot hinzugefügt. – Sekar

Antwort

7

Sie können dies versuchen:

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

Dieser Code funktioniert super. Ich erwarte Ergebnis, wenn zum Beispiel die Bildgröße '72 * 72' oder '1200 * 1200' ist und dann die Emulatorgröße '480 * 480' ist. Also muss ich die Bildgröße als '480 * 480 'ändern, ohne Pixel zu beschädigen, und dann auf den Hintergrund einstellen. Vielen Dank. – Sekar

+0

Wenn dies eine Antwort ist, die du akzeptierst, dann gib diesem Kerl sein Kopfgeld! – 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(); 
    } 

Das ist, was ich pflege meine Bilder machen skalieren gut ohne verrückt Linien über laufen - man könnte versuchen, diese für den Hintergrund - nicht sicher, ob es funktioniert, lassen Ich weiß es.