2012-07-10 15 views
5

私はギャラリーから画像を選択し、その画像を壁紙として設定するアプリを開発しています。しかし、ここで問題となるのは、画像の一部だけが画像全体ではなく壁紙に設定されていることですが、画像全体を壁紙として設定したいのです。それがどうやってできるか教えてください?壁紙として画面全体に画像を合わせる方法

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

と権限を追加することを忘れないでください:

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

あなた自身の壁紙アプリを作成していますか、ストック壁紙を使用していますか? – XGouchet

答えて

7

セット壁紙サイズ...私のコードですそれがあなたを助けることを望んで働いています:

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

ありがとうございます。それは私のために働いた。 – moDev

+2

'suggestDesiredDimensions()'メソッドのドキュメントからのメッセージに注意してください:** "これを読んでいないと思われる開発者に注意してください。これはホーム画面で彼らが望む壁紙のサイズを知るためのものです。これを呼び出す!壁紙を変更する他の家庭以外のアプリではありません。それらのアプリは提案されたサイズを検索して、それに合った壁紙を作成することになっています。 –

0

は私が持っている、それを試してみてください。ここ

は、あなたの画像サイズに

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(); 
     } 
    } 
} 
関連する問題