2012-08-31 184 views
2

我用下面的代碼獲取當前壁紙:使用當前壁紙的動態壁紙背景

final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
    final Drawable wallpaperDrawable = wallpaperManager.getDrawable(); 

如何創建從該位圖?

當我創建res文件夾的位圖就像我用這個

Resources res = getApplicationContext().getResources(); 
    b = BitmapFactory.decodeResource(res, R.drawable.wall); 

什麼代碼,我應該用它來獲得當前壁紙爲位圖,這樣我可以借鑑它在我的畫布上,並用它作爲我的生活壁紙背景?

回答

4

Drawable讀取應該真的是BitmapDrawable。如有必要,您可以使用instanceof進行驗證。

既然如此,所有你需要做的是:

final Drawable wallpaperDrawable = wallpaperManager.getDrawable(); 
final Bitmap wallpaperBitmap = ((BitmapDrawable) wallpaperDrawable).getBitmap(); 

編輯:如果事實證明該Drawable不是一個BitmapDrawable,你可以用下面的方法將其轉換(發現在this answer,信貸André):

public static Bitmap drawableToBitmap(Drawable drawable) { 
    if (drawable instanceof BitmapDrawable) { 
     return ((BitmapDrawable)drawable).getBitmap(); 
    } 

    Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); 
    drawable.draw(canvas); 

    return bitmap; 
} 
+0

感謝這個工作對我來說:) – Badal