2011-01-26 60 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));