【问题标题】:Change default system application icon更改默认系统应用程序图标
【发布时间】:2013-09-11 07:02:13
【问题描述】:

我遇到了一个名为 Nova Launcher 的启动器应用程序,它提供了将系统应用程序的外观更改为另一个图标包的选项,下面是 nova 启动器的屏幕截图。

当我选择 stock jellybean 时,它会将系统应用程序图标替换为 jellbean 图标包。

我想在我自己的启动器应用程序中实现相同的功能,我谷歌但没有找到任何相关的东西,需要指导和建议。

我尝试设置 Example-theme 只是更改包名称,但它让我强制关闭 com.mypackagename not found

主要活动@

private static final String ACTION_APPLY_ICON_THEME = "com.mypackage.launcher.APPLY_ICON_THEME";
    private static final String NOVA_PACKAGE = "com.mypackage.launcher";
    private static final String EXTRA_ICON_THEME_PACKAGE = "com.mypackage.launcher.extra.ICON_THEME_PACKAGE";

//    private static final String ACTION_APPLY_ICON_THEME = "com.teslacoilsw.launcher.APPLY_ICON_THEME";
//    private static final String NOVA_PACKAGE = "com.teslacoilsw.launcher";
//    private static final String EXTRA_ICON_THEME_PACKAGE = "com.teslacoilsw.launcher.extra.ICON_THEME_PACKAGE";

我只是在寻找一种方法,我应该在自己的启动器中管理或编码以将此类主题设置为与 nova 启动器相同。

以下链接帮助我为启动器创建主题,但没有找到任何方法来设置/应用到我的启动器。

Launcher Theme Tutorial

Example-theme

您的建议很有价值。

【问题讨论】:

  • 我不明白。我认为只要您实现自己的主屏幕应用程序,任何显示的图标都在您的控制之下。您可以为任何应用程序图标显示任何图像,对吧?
  • 如果您熟悉 nova 启动器,那么您将很容易获得它,问题是,没有找到一种方法,我应该在启动器中编写代码以像其他启动器一样应用主题。
  • 我认为用户 Robin 是正确的。选择主题的选项就是:一个选项。您将保存用户选择的主题并基于它加载系统/应用程序图标。查看来自项目android-launcher-plus(一个开源启动器)的ApplicationsAdapter.javaLink。图标及其外观由您的 控制。编写Util方法,找出哪些图标需要更改,并进行相应处理。

标签: android android-launcher android-icons


【解决方案1】:

先生。罗宾是对的..你可以手动做..

将所有自定义图标放入具有特定名称的可绘制文件夹中,例如icon_appname.png..

icon_contacts.png、icon_camera.png、icon_settings.png、icon_phone.png、icon_email.png...等

或者您也可以将图像保存为包名,例如 icon_com_android_camera.png...等

只需将条件放在适配器类中的GetView 中即可。

        if(User selected default theme)
        {
        //use default icon from system
        }
        else
        {
            String appname = here is app name;
            String appPackageName = here is app package name;
            // You can use appname or appPackageName as per your drawable name.
            int intResource = getResources().getIdentifier("icon_" + appname.toLowerCase(), "drawable", getPackageName());
            if(intResNormal!=0)
                holder.txtTitle.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(intResource), null, null);
            else
                //use default icon when no resource found
        }

注意: 如果您作为包名称关注,请不要忘记将 "_" 替换为 "。"

【讨论】:

    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    相关资源
    最近更新 更多