Android P 上Launcher3 中实现两种方式替换桌面图标

本文介绍了在Android P的Launcher3中实现更换桌面图标的两种方法:一种是通过匹配包名获取资源ID并手动修改图片名称;另一种是将包名和图片名写入arrays.xml,利用循环匹配进行图标替换。详细涉及到代码修改和资源组织。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.第一种方案,是通过桌面应用的包名,跟图片的包名进行匹配,获取一个图片的资源ID

    麻烦点就是需要手动修改图片的名称,跟包名一致。

代码:src/com/android/launcher3/IconCache.java

 

    * Adds an entry into the DB and the in-memory cache.
      * @param replaceExisting if true, it will recreate the bitmap even if it already exists in
@@ -401,7 +453,12 @@ public class IconCache {
         entry.title = app.getLabel();
         entry.contentDescription = mUserManager.getBadgedLabelForUser(entry.title, app.getUser());
         mCache.put(key, entry);
+        int resId = getThemeIconResByClassName(app);
+        if(resId!=0){
+           entry.icon = createCustomBitMap(resId);
+        }else{
+           entry.icon = createCompoundBitmap(entry.icon);
+        }
         Bitmap lowResIcon = generateLowResIcon(entry.icon);
         ContentValues values = newContentValues(entry.icon, lowResIcon, entry.color,
                 entry.title.toString(), app.getApplicationInfo().packageName);
@@ -561,10 +618,16 @@ public class IconCache {
                 providerFetchedOnce = true;
 
                 if (info != null) {
+                    int resId = getThemeIconResByClassName(info);
+                    if(resId!=0){
+                       entry.icon = createCustomBitMap(resId);
+                    }else{
                        LauncherIcons li = LauncherIcons.obtain(mContext);
                        li.createBadgedIconBitmap(getFullResIcon(info), info.getUser(),info.getApplicationInfo().targetSdkVersion).applyTo(entry);
                        li.recycle();
+                       entry.icon = createCompoundBitmap(entry.icon);
+                 }
                 } else {
                     if (usePackageIcon) {
                         CacheEntry packageEn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值