2011-01-26 58 views
3

我在安卓桌面上創建快捷方式時遇到了一些問題。intent.putExtra(Intent.EXTRA_SHORTCUT_ICON,bmp)圖像偏離中心

首先,我有一個72x72的圖標,我從我的SD卡加載到一個Bitmap對象中。

使用該位圖對象將其設置爲我的圖標資源。

我遇到的問題是當我設置它時,快捷方式上的圖像顯示偏離中心並切斷。從屏幕指標我得到的大小爲72x72,不知道交易是什麼。

代碼:

Bitmap theBitmap = BitmapFactory.decodeFile("/sdcard/icon.png"); 
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, theBitmap) 

我試圖調整其大小,並已得到它的工作使用畫布,繪製和另一個位圖,它重新恢復手機的小尺寸然而,當。

使用同樣的圖標,可繪製資源使得它看起來完美的,但它不是動態:

Parcelable iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon); 
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); 

使用三星4G的史詩W/2.1

+0

weird..are您在使用針對標準的家庭應用程序代碼? 你可以發佈你的代碼嗎? – Marcovena 2011-01-26 09:12:52

回答

7

我有一個類似的問題。我查看了Launcher源代碼,發現有一個錯誤導致圖標在初始位圖尺寸太小時無法正確顯示。

縮放位圖到128x128的第一:

Bitmap scaledBitmap = Bitmap.createScaledBitmap(theBitmap, 128, 128, true); 
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, scaledBitmap); 

它會解決它。

+0

如果我將圖像大小調整爲128x128,它是否適用於所有手機?這是一個快捷圖像的標準大小 - 我的印象是72x72是正確的大小。 – JohnnyO 2011-01-26 17:04:47

5

雖然它是一個線程很久以前,我發現了一個屬性的解決方案:

int size = (int) getResources().getDimension(android.R.dimen.app_icon_size); 
installer.putExtra(Intent.EXTRA_SHORTCUT_ICON, Bitmap.createScaledBitmap(b, size, size, false));