创建快捷方式:我如何使用drawable作为图标进行工作?

8 浏览
0 Comments

创建快捷方式:我如何使用drawable作为图标进行工作?

以下是我创建选定应用程序的快捷方式的代码。我真的没有问题,应用程序运行得很好。\n问题是我能够使用我的应用程序资源创建一个快捷方式:\n

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

\n但我真的想要使用一个自定义的可绘制对象。 ( Drawable myDrawable=.....)\n我该怎么办?\n

ResolveInfo launchable=adapter.getItem(position);
final Intent shortcutIntent = new Intent();
ActivityInfo activity=launchable.activityInfo;
ComponentName name=new ComponentName(activity.applicationInfo.packageName,activity.name);       
shortcutIntent.setComponent(name);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
final Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
// 设置自定义快捷方式的标题
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, launchable.loadLabel(pm));
// 设置自定义快捷方式图标
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon));
// 添加快捷方式
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(intent);
finish();

\n非常感谢任何线索。

0
0 Comments

问题的出现原因:使用代码创建一个快捷方式时,图片没有正确缩放到快捷方式图标的大小。

解决方法:

1. 获取快捷方式图标的正确大小:参考链接https://stackoverflow.com/a/19003905/3741926

2. 使用之前计算出的大小来缩放drawable:参考链接https://stackoverflow.com/a/10703256/3741926

通过以上两个方法,可以得到一个具有正确缩放图标的快捷方式。希望对你有所帮助。

0
0 Comments

问题的原因是使用了错误的方法Intent.EXTRA_SHORTCUT_ICON_RESOURCE来处理drawable作为图标。正确的解决方法是使用以下代码:

Drawable iconDrawable = (....); 
BitmapDrawable bd = (BitmapDrawable) iconDrawable;
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bd.getBitmap());

这段代码将drawable转换为BitmapDrawable,并将其作为图标添加到intent中。

0