最近項目中用到設置壁紙,但設置完的壁紙是被系統剪切掉的,怎么才能全屏顯示呢?谷歌、百度一頓海搜啊,但很可惜,全是轉載,就一句話setWallpaper(bitmap),我就納悶了,有的人就為了拿那一點可憐的積分,也不試下就胡亂轉載。最后沒辦法找了api文檔,拿着字典查英文單詞最后終於調出來了。上代碼
1 try { 2 WallpaperManager instance = WallpaperManager.getInstance(WallPicActivity.this); 3 int desiredMinimumWidth = getWindowManager().getDefaultDisplay().getWidth(); 4 int desiredMinimumHeight = getWindowManager().getDefaultDisplay().getHeight(); 5 instance.suggestDesiredDimensions(desiredMinimumWidth, desiredMinimumHeight); 6 instance.setBitmap(bitmap); 7 Toast.makeText(WallPicActivity.this,"壁紙設置成功",Toast.LENGTH_SHORT).show(); 8 } catch (IOException e) { 9 // TODO Auto-generated catch block 10 e.printStackTrace(); 11 }
instance.suggestDesiredDimensions(desiredMinimumWidth, desiredMinimumHeight);這句話我的理解是將壁紙以期望的寬高顯示,如果寬高正好是屏幕的寬高,則壁紙是單屏顯示。
instance.setBitmap(bitmap);這句話就是設置壁紙啦,但最好把bitmap這個參數再加工一次,縮放到desireMinimumWidth,desireMinmunHeight寬度和高度后再設置。
縮放代碼見下:
public static Bitmap sBitmap(Bitmap b, int w, int h) { int width = b.getWidth(); int height = b.getHeight(); float scaleWidth = ((float) w) / width; float scaleHeight = ((float) h) / height; Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight);//縮放 return Bitmap.createBitmap(b, 0, 0, width, height, matrix, true); }