2012-09-08 133 views
1

我想設置一個位圖作爲androids壁紙,我已經找到了那部分。然而,圖像總是太大,偏離中心並被裁剪。我試圖調整位圖的顯示大小,但我仍然得到相同的結果,這裏是我的一些代碼。製作位圖適合屏幕壁紙

Display display = getWindowManager().getDefaultDisplay(); 

final int maxWidth = display.getWidth(); 
final int maxHeight = display.getHeight(); 

Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(img_url).getContent());  


    int imageHeight = bitmap.getHeight(); 
if (imageHeight > maxHeight) 
imageHeight = maxHeight; 
int imageWidth = (imageHeight*bitmap.getWidth())/bitmap.getHeight(); 
if (imageWidth > maxWidth) { 
imageWidth = maxWidth; 
imageHeight = (imageWidth*bitmap.getHeight())/bitmap.getWidth(); 
} 


Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, imageWidth, imageHeight, true); 

    myWallpaperManager.setBitmap(resizedBitmap); 

誰能幫我把壁紙圖片的大小和正確集中的壁紙?

謝謝!

回答

0

嘗試類似這樣的事情。壁紙尺寸通過WallpaperManager.getDesiredMinimumHeightWallpaperManager.getDesiredMinimumWidth獲取。如果其中任何一個是<= 0,它都會請求默認顯示的尺寸。

/* determine wallpaper dimensions */ 
final int w = myWallpaperManager.getDesiredMinimumWidth(); 
final int h = myWallpaperManager.getDesiredMinimumHeight(); 
final boolean need_w = w <= 0; 
if (need_w || h <= 0) { 
    final Rect rect = new Rect(); 
    getWindowManager().getDefaultDisplay().getRectSize(rect); 
    if (need_w) { 
    w = rect.width(); 
    } else { 
    h = rect.height(); 
    } 
} 

/* create resized bitmap */ 
final Bitmap resized = Bitmap.createScaledBitmap(bitmap, w, h, false); 

這不會保留縱橫比,但告訴我它是怎麼回事。

+0

更接近。寬度是關閉的,但是,我讀過的地方是它延伸圖像顯示在3個屏幕或什麼? – Dan