Изменить значок системного приложения по умолчанию

Я наткнулся на приложение для запуска под названием Nova Launcher, которое предоставляя возможность изменить внешний вид системных приложений на другой пакет значков, ниже приведен снимок экрана из nova launcher.

скриншот из лаунчера nova

Когда я выберу стандартный jellybean, он заменит значок системного приложения на пакет значков jellybean.

Я хочу реализовать ту же функциональность в своем собственном приложении запуска, я Google, но не нашел ничего связанного, мне нужно руководство и предложение.

Я попытался установить 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.

Ссылки ниже помогают мне создавать темы для лаунчера, но я не нашел способа установить/применить их к моему лаунчеру.

Учебник по теме Launcher

Пример темы

Ваше предложение ценно.


person RobinHood    schedule 07.09.2013    source источник
comment
Я не понимаю. Я думаю, что пока вы реализуете свое собственное приложение для домашнего экрана, отображение любого значка находится под вашим контролем. Вы можете отображать любое изображение для любого значка приложения, верно?   -  person Robin    schedule 09.09.2013
comment
Если вы знакомы с лаунчером nova, то вы легко его получите, дело в том, что я не нашел способа, которым я должен кодировать внутри лаунчера, чтобы применить тему, как это делают другие лаунчеры.   -  person RobinHood    schedule 09.09.2013
comment
Я думаю, что пользователь Робин прав. Возможность выбрать тему — это всего лишь опция. Вы сохраните выбранную пользователем тему и загрузите значки системы/приложения на ее основе. Посмотрите на ApplicationsAdapter.java из проекта android-launcher-plus (программа запуска с открытым исходным кодом): Ссылка. Значок и его внешний вид находятся под вашим контролем. Напишите метод Util, чтобы выяснить, какие значки нужно изменить, и обработайте их соответствующим образом.   -  person Vikram    schedule 09.09.2013


Ответы (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
        }

Примечание. Если вы используете имя пакета, не забудьте заменить "_" на "."

person Niranj Patel    schedule 09.09.2013