2012-07-10 12 views
5

Pracuję nad aplikacją, która wybiera obraz z galerii, a następnie ustawia go jako tapetę. Ale tutaj problem polega na tym, że tylko część obrazu jest ustawiona jako tapeta, a nie cały obraz, ale chcę ustawić cały obraz jako tapetę. czy możesz mi powiedzieć, jak to zrobić?jak dopasować cały obraz na ekranie jako tapetę

Oto mój kod ...

public class Scaleimage extends Activity { 
    /** Called when the activity is first created. */ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String FileName; 
     File file = new File("/sdcard/pictures"); 
     File[] imageFiles = file.listFiles(); 
     if(imageFiles.length > 0) { 
      FileName = imageFiles[0].getName(); 
     final WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext()); 
     Bitmap myBitmap = BitmapFactory.decodeFile("/sdcard/pictures" + "/" + FileName); 

     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
     int height = displayMetrics.heightPixels; 
     int width = displayMetrics.widthPixels << 1; 
     myBitmap = Bitmap.createScaledBitmap(myBitmap,width, height, true); 
     try { 
      wallpaperManager.setBitmap(myBitmap); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Czy tworzysz własną aplikację do tapet lub używasz tapetę na stanie? – XGouchet

Odpowiedz

7

Ustaw rozmiar tapety do rozmiaru obrazu:

WallpaperManager wm = (WallpaperManager) getSystemService(WALLPAPER_SERVICE); 
wm.setBitmap(bitmap); 
wm.suggestDesiredDimensions(w, h); 

i pamiętać, aby dodać uprawnienia:

<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/> 
<uses-permission android:name="android.permission.SET_WALLPAPER"/> 
+0

Dzięki. To zadziałało dla mnie. – moDev

+2

Zanotuj wiadomość z dokumentacji metody 'suggestDesiredDimensions()': ** "Programiści, którzy nie czytają tego, to jest dla ekranów domowych, aby powiedzieć, jaki rozmiar tapety chcieliby. Nikt nie powinien być Wywołanie tego! Z pewnością nie inne aplikacje, które nie działają na ekranie głównym, które zmieniają tapetę. Te aplikacje mają pobierać sugerowany rozmiar, aby mogły utworzyć tapetę, która je dopasuje. "** –

0

Spróbuj mam testowany działa, mam nadzieję, że pomoże:

final WallpaperManager wallpaperManager = (WallpaperManager)getSystemService(
       Context.WALLPAPER_SERVICE);  

Bitmap myBitmap = Bitmap.createScaledBitmap(Const.cropped_bitmap, wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight(), true); 
wallpaperManager.suggestDesiredDimensions(wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight()); 

try { 

    wallpaperManager.setBitmap(myBitmap); 
    Toast.makeText(CropImageActivity.this, CropImageActivity.this.getString(R.string.wallpaper_has_been_set), 0).show(); 
} catch (IOException e) { 
    e.printStackTrace(); 
    Toast.makeText(CropImageActivity.this, "Wallpaper not set", 0).show(); 
} 
Powiązane problemy