创作不易,请尊重原创,转载须注明出处:https://blog.csdn.net/An_Times/article/details/122133464
一、前言
原生代码中Launcher 桌面应用图标都是按照应用首字母顺序排列的,那这样会带来一个问题,后面安装的应用图标会插入到原有的图标中打乱排列顺序。刚好产品经理提了一个需求希望后安装的应用在原有的顺序后继续排列图标。那么这个需求怎么实现呢,我们需要找到这块的代码看看他的逻辑,本文就介绍一下这个部分。
环境:本文基于MTK 6762 Android 11.0
二、Launcher3的图标排列逻辑
- 代码路径:packages\apps\Launcher3\src\com\android\launcher3\allapps\AlphabeticalAppsList.java
- onAppsUpdated() 方法中 有应用图标刷新被调用,其中
Collections.sort(mApps, mAppNameComparator)
就是根据mAppNameComparator 这个APP名称比较器是比较排序的
/**
* Updates internals when the set of apps are updated.
*/
@Override
public void onAppsUpdated() {
// Sort the list of apps
mApps.clear();
...此处省略部分代码
Collections.sort(mApps, mAppNameComparator);
// As a special case for some languages (currently only Simplified Chinese), we may need to
// coalesce sections
Locale curLocale = mLauncher.getResources().getConfiguration