-
Notifications
You must be signed in to change notification settings - Fork 86
二次开发步骤
具备基本的 Android 开发技能。如果您是新手,在熟悉 Android HelloWorld 的开发后也可上手。
-
NanoIconPack 为 Android Studio 项目。请从 GitHub 下载解压并在 Android Studio 中打开;或直接在 Android Studio 中导入 NanoIconPack(如何导入请查看帮助)。
项目根目录有两个核心子目录:
/nanoiconpack
为库代码,/app
为 Sample APP 代码。一般情况下,只需要改动/app
的代码即可,/nanoiconpack
不需要修改。以下步骤也只会涉及到改动/app
。关于其他目录:
/tools
为相关工具及其代码。 -
配置APP包名、版本等
修改
build.gradle
:android { defaultConfig { // Package name format: com.[your_name].iconpack.[name_of_your_icon_pack] applicationId "com.by_syk.iconpack.sample" versionCode 17070300 // Version name format: [version].[num_of_icons] versionName "2.0.0.7" } }
-
配置APP应用名、版权信息等
修改
strings.xml
:<!-- App name --> <string name="app_name">NanoIconPack Sample</string> <!-- For Apex Launcher, means icon pack author --> <string name="developer_name">By_syk</string> <!-- About information --> <!-- Keep its summary EMPTY (NOT DELETE IT) if you don't want to show certain line. --> <!-- For summary text, you could try to use such codes: xxx [xxx](copy:xxx) [xxx](email:xxx) [xxx](alipay:xxx|xxx) [xxx](qrcode:xxx) [xxx](xxx) --> <string name="preference_icons_summary_note"></string> <string name="preference_icons_title_author">Icon pack author</string> <string name="preference_icons_summary_author">[@By_syk](copy:@By_syk)</string> <string name="preference_icons_title_contact">Contact author</string> <string name="preference_icons_summary_contact">[[email protected]](email:[email protected])</string> <string name="preference_icons_title_donate">Donate via Alipay</string> <string name="preference_icons_summary_donate">[[email protected]](alipay:https://qr.alipay.com/aex05154fiiurupx5ai0dd1|[email protected])</string> <string name="preference_icons_title_todo_1"></string> <string name="preference_icons_summary_todo_1"></string> <string name="preference_icons_title_copyright">Copyright</string> <string name="preference_icons_summary_copyright">Copyright © 2017 By_syk. All rights reserved.</string> <string name="preference_app_title_todo_1"></string> <string name="preference_app_summary_todo_1"></string>
strings.xml
分布在/values
、/values-zh
。 -
配置APP图标
ic_launcher.png
分布在/mipmap-hdpi
、/mipmap-xhdpi
、/mipmap-xxhdpi
、/mipmap-xxxhdpi
。 -
选一个APP主题色
修改
colors.xml
。<color name="color_primary">#607d8b</color> <color name="color_primary_dark">#455a64</color> <color name="color_accent">#ff5252</color>
如果你不太熟悉颜色的选取,可以试试帮助配色的工具——MD配色参考。
-
尺寸
图标尺寸以
192*192
为最佳,144*144
、224*224
也是不错的选择,但非强制,只是注意别太大,太大会引起一些问题,比如在 Nova Launcher 中手动替换图标异常。为了使图标在启动器中看起来不至于太小或太大,建议参考以下栅格线处理图标主体与边缘之间的留白。(栅格线图基于 Material design guidelines - Style -Icons 制作)
-
命名
- 图标文件名(不包括
.png
扩展名)允许小写字母+数字+下划线([a-z\d_]+
) - 不能数字打头(
\D.*
) - 重名则照
_1
添加后缀 - 避免与上一条重名规则冲突,如
相机360
应命名为camera360
而不是camera_360.png
合法例:
gallery.png
、chrome_dev.png
、phone_1.png
非法例:
Calendar.png
、500px.png
、camera_360.png
- 图标文件名(不包括
以为“日历”APP适配图标为例。
-
将缩放好的
192
尺寸版本日历图标命名为calendar.png
,复制到/drawable-nodpi
。为在APP内展示图标时提供更好的视觉效果,您还可以为所有图标提供一个同名
384
尺寸版本,复制到/mipmap-nodpi
文件夹。高清版本图标用途将仅限于展示,不用于应用到启动器。
添加了高清图标安装包体积会因此增大,请自行斟酌。
-
修改
icon_pack.xml
,该文件记录了全部图标的文件名及其目标APP的应用名。添加<item />
:<!-- File name (no suffix) list of all icons in /res/drawable-nodpi/ --> <string-array name="icons"> <item>calendar</item> </string-array> <!-- Corresponding app name list of all icons in /res/drawable-nodpi/ --> <!-- Just KEEP IT EMPTY BUT DO NOT DELETE IT if you do not want to collect app name list. --> <string-array name="icon_labels"> <item>Calendar</item> </string-array>
数组
icon_labels
用于记录目标APP名,属于选用特性,如果觉得麻烦可以不启动,直接将其留空就行(无<item />
);如果使用它,则请确保数组icon_labels
与icons
元素一一对应,并且数目一致,否则会导致APP内不显示图标。 -
修改
drawable.xml
,该文件用于为 Nova 等启动器提供手选图标列表。添加<item />
:<category title="Basic" /><!-- Copy basic icons here from All category --> <item drawable="calendar" /> <category title="All" /><!-- All icons here --> <item drawable="calendar" />
-
修改
appfilter.xml
,该文件定义了图标与目标APP之间的匹配关系,启动器据此自动为所有APP替换图标。添加<item />
:<!-- <item component="ComponentInfo{[package_name]/[launcher_activity_name]}" drawable="[icon_file_name]" /> --> <item component="ComponentInfo{com.google.android.calendar/com.android.calendar.AllInOneActivity}" drawable="calendar" />
部分启动器支持部分日历APP(比如谷歌日历)的按日更新图标功能,我们可以为其添加支持。
步骤基本与添加普通图标一致,只是在第一步的命名和最后一步修改appfilter.xml
不同。下面就讲解这两步的做法。
-
准备从1日到31日的31枚日历图标(不能少,否则无效),依次命名为
calendar_d1.png
~calendar_d31.png
(也可以是其他命名,但名末的数字序号必须有)。 -
<!-- The whole 31 icons are required, or it doesn't work. --> <calendar component="ComponentInfo{com.google.android.calendar/com.android.calendar.AllInOneActivity}" prefix="calendar_d" />