Android獲取當前桌面桌布

yangxi_001發表於2014-08-06

這段時間專案有需求要獲取桌面的桌布來設成背景,發現網上很多同學都通過WallpaperManager的getDrawable等API來獲取,這樣的確能獲得到桌布,但是要稍微注意一下。

桌面的桌布可是很大很大的一張哦,你要直接用來設定成背景,那可是很醜的。所以我們需要稍微處理一下。

大致思路就是把一張桌布切成幾片,當前螢幕對應那片,我們就要那片。

[java] view plaincopyprint?

1.  // 獲取桌布管理器  

2.              WallpaperManager wallpaperManager = WallpaperManager  

3.                      .getInstance(mContext);  

4.              // 獲取當前桌布  

5.              Drawable wallpaperDrawable = wallpaperManager.getDrawable();  

6.              // Drawable,轉成Bitmap  

7.              Bitmap bm = ((BitmapDrawable) wallpaperDrawable).getBitmap();  

8.    

9.              // 需要詳細說明一下,mScreenCountgetCurrentWorkspaceScreen()mScreenWidthmScreenHeight分別  

10.             //對應於Launcher中的桌面螢幕總數、當前螢幕下標、螢幕寬度、螢幕高度.等下拿Demo的哥們稍微要注意一下  

11.             float step = 0;  

12.             // 計算出螢幕的偏移量  

13.             step = (bm.getWidth() - LauncherPreferenceModel.mScreenWidth)  

14.                     / (LauncherPreferenceModel.mScreenCount - 1);  

15.             // 擷取相應螢幕的Bitmap  

16.             Bitmap pbm = Bitmap.createBitmap(bm, (int) (mLauncher  

17.                     .getCurrentWorkspaceScreen() * step), 0,  

18.                     (int) (LauncherPreferenceModel.mScreenWidth),  

19.                     (int) (LauncherPreferenceModel.mScreenHeight));  

20.             // 設定 背景  

21.             layout.setBackgroundDrawable(new BitmapDrawable(pbm));  

相關文章