2013-05-03 110 views
5

我用一個簡單的代碼來設置wallpaperAndroid的 - 設置壁紙,以適應手機屏幕尺寸

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

getApplicationContext().setWallpaper(bmap2); 

當圖像尺寸大於屏幕尺寸越大出現問題。 我只能看到輸入圖片的一部分。

我嘗試調整大小的方法,如createScaledBitmap,它的工作原理,但不是我想要的。 createScaledBitmap正在調整位圖的大小,但不是圖片的大小,只是分辨率(只是搞亂了圖片的質量,沒有將圖片大小加載到手機上作爲牆紙)。

有誰知道如何縮小圖像的大小,而不是分辨率?

編輯:

幾個畫面:

從菜單圖片,規模前和規模後:

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

因此,大家可以看到有隻縮放的分辨率,而不是大小圖片。

任何想法??從筆者

+1

作爲一個說明,'因爲API級別5.您可能想看看setWallpaper'已被棄用到[WallpaperManager](http://developer.android.com/reference/android/app/WallpaperManager.html)中,它有許多實用程序。 – adrianp 2013-05-03 12:22:29

+0

我也試過: WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); wallpaperManager.setBitmap(bmap2); 但它是一樣的。 (至少有結果) – Tomi89 2013-05-03 12:52:38

+1

已經解決了問題。該代碼幫助了我: DisplayMetrics metrics = new DisplayMetrics(); \t \t getWindowManager()。getDefaultDisplay()。getMetrics(metrics); \t \t int height = metrics.heightPixels; \t \t int width = metrics.widthPixels; \t \t位圖的位圖的位圖= \t \t \t \t .createScaledBitmap(無論,寬度,高度,TRUE); – Tomi89 2013-05-04 22:34:20

回答

14

答案是評論, 但沒有人看到的評論,我在這裏把它複製:

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

我的圖像大小是600x800,我想適合任何設備。您的代碼不適用於平板電腦 – 2014-02-01 04:30:55

+0

@Reza_Rg不起作用。請幫幫我。 – 2014-04-01 07:44:36

+0

@PratikButani你會發現任何解決方案如何適合屏幕上的圖像。請幫幫我。 – 2014-04-04 06:04:07