intent.putExtra(Intent.EXTRA_SHORTCUT_ICON,bmp)图像偏离中心

时间:2011-01-26 08:16:03

标签: android

在Android桌面上创建快捷方式时,我遇到了一些问题。

首先,我有一个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);

使用Samsung Epic 4g w / 2.1

2 个答案:

答案 0 :(得分:8)

我有类似的问题。我查看了Launcher的源代码,我发现如果初始位图的大小太小,就会出现导致图标无法正确显示的错误。

首先将位图缩放到128x128:

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

它会解决它。

答案 1 :(得分:5)

虽然很久以前它是一个线程,但我找到了一个属性解决方案:

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