在Launcher上,为了保持手机UI风格的统一,希望把用户自己安装的第三方apk图标
或者系统预置的应用图标用特定的图标来显示,如何修改?
1.请修改AppInfo.java的构造函数
publicAppInfo(Context context, LauncherActivityInfoCompat info,
UserHandleCompat user,IconCache iconCache) {
this.componentName = info.getComponentName();
this.container = ItemInfo.NO_ID;
flags = initFlags(info);
firstInstallTime = info.getFirstInstallTime();
iconCache.getTitleAndIcon(this, info, true /* useLowResIcon */);
//xxx add
if ( (info.getApplicationInfo().flags &
android.content.pm.ApplicationInfo.FLAG_SYSTEM) != 0) {
this.iconBitmap=Bitmap.createBitmap(72, 72, Bitmap.Config.ARGB_8888); //
具体方法可以自行决定
}
//xxx add
intent = makeLaunchIntent(context, info, user);
this.user = user;
}
2.用户安装的第三方app
......
AppInfo applicationInfo =
findApplicationInfoLocked(info.getComponentName().getPackageName(),
user,info.getComponentName().getClassName());
if (applicationInfo == null) {
add(new AppInfo(context, info, user, mIconCache));
} else {
mIconCache.getTitleAndIcon(applicationInfo, info, true /* useLowResIcon
*/);
//xxx add
在此处添加修改applicationInfo.iconBitmap的代码(同上)
//xxx add
modified.add(applicationInfo);
}
......
3.系统预置的某个应用
请修改IconCache.java文件的cacheLocked方法,将 entry.icon = Utilities.createIconBitmap(info.getBadgedIcon(mIconDpi), mContext); 修改为客制化的图标 举例如下:
if("com.android.contacts".equals(componentName.getPackageName())) {
Drawable drawable= getFullResIcon(mContext.getResources(),
R.drawable.ic_hw_allbackup);
entry.icon = Utilities.createIconBitmap(drawable, mContext);
} else {
entry.icon = Utilities.createIconBitmap(info.getBadgedIcon(mIconDpi),
mContext);
}
转载请注明原文地址: https://ju.6miu.com/read-677483.html