1. 在 LauncherModel.java 中增加例如以下代码, 假设是KK Launcher3 ApplicationInfo要替换为AppInfo

public static final Comparator<ApplicationInfo> getInstallTimeComparator() {

  return new Comparator<ApplicationInfo>() {

            public final int compare(ApplicationInfo a, ApplicationInfo b) {

                return a.firstInstallTime == b.firstInstallTime ?

0 : a.firstInstallTime > b.firstInstallTime ? 1:-1;

            }

        };

 }





 public static class InstallTimeComparator implements Comparator<ResolveInfo> {

  private PackageManager mPackageManager;

  List<ResolveInfo> mapps;

  InstallTimeComparator(PackageManager pm, List<ResolveInfo> apps)

  {

   mPackageManager = pm;

   mapps = apps;

   

  }

 

  public final int compare(ResolveInfo a, ResolveInfo b) {

   String packageNameA = a.activityInfo.applicationInfo.packageName;

   String packageNameB = b.activityInfo.applicationInfo.packageName;

   long firstInstallTimeA = 0, firstInstallTimeB = 0;

   try{

   firstInstallTimeA = mPackageManager.getPackageInfo(packageNameA, 0).firstInstallTime;

   firstInstallTimeB = mPackageManager.getPackageInfo(packageNameB, 0).firstInstallTime;

   }catch(Exception e){

    e.printStackTrace(); 

    return 0;

   }

  return firstInstallTimeA == firstInstallTimeB ?

0 : firstInstallTimeA > firstInstallTimeB ?

1:-1;

  }

 };

 

2. 改动 LauncherModel.java 的 loadAllAppsByBatch() 方法:



Collections.sort(apps,new LauncherModel.ShortcutNameComparator(packageManager, mLabelCache));

替换成:

Collections.sort(apps,new InstallTimeComparator(packageManager, apps));

 

3. 改动 AppsCustomizePagedview.java 的 setApps 方法



Collections.sort(mApps, LauncherModel.getAppNameComparator());

替换成:

Collections.sort(mApps, LauncherModel.getInstallTimeComparator());

 

4. 系统排序会调用reorderApps方法,因此您在其它条件下也要达到安装时间排序,请在相应的reorderApps方法调用前添加

Collections.sort(mApps, LauncherModel.getInstallTimeComparator());

比如:安装的应用后也想安装新的排序方式排列,须要在AppsCustomizePagedview.java 的 addApps 方法前添加sort的调用

android 怎样将主菜单图标改成按安装时间排序的更多相关文章

  1. Android 自己定义主菜单

    本文介绍一个超简单的自己定义主菜单.效果例如以下: 原理:事实上就是对原生的Dialog的一个简单的封装.并加上显示和隐藏的动画效果.再给控件加上回调事件. TestDialog.java publi ...

  2. 把图标改成web字体

    一.下载自己想要的矢量图标,然后在AI中打开二.在AI中将有瑕疵的图标修改一下,再分别另存为svg格式的图标三.打开IcoMoon Web app网页,然后点击左上角的+Import Icons添加你 ...

  3. android launcher2开发之 有抽屉改成无抽屉

    在launcher.java中在createShortcut方法中   屏蔽全部应用button 修改之前 View createShortcut(int layoutResId, ViewGroup ...

  4. js点击出现二级菜单,点击二级菜单主菜单换成二级菜单

    点击出现二级菜单 *{ margin:0px auto; padding:0px; } .yiji{ width:200px; height:40px; background-color:red; c ...

  5. Windows Boot Manager改成中文菜单

    用管理员身份运行"命令提示符",依次执行以下命令 bcdedit /deletevalue {bootmgr} device bcdedit /deletevalue {bootm ...

  6. Xamarin.Android之ActionBar与菜单

    一.选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图.在Android 3.0 以上的版本中,我们已经可以使用ActionBar提供的Tab来实现这种效果,而不需要我们自己去实 ...

  7. 开发Android应用怎么更改LOGO图标

    开发安卓应用怎么更改LOGO图标,我们知道我们开发安卓程序的时候,都需要给他整一个logo,一般开发程序都会自动一个图标,我们怎么给他更换自己想要的logo图标,之前大家看过我们写的怎么安装程序到虚拟 ...

  8. QT 设置菜单图标

    目录 一.添加主窗口菜单 二.添加菜单图标 三.添加资源文件 四.使用资源文件 五.使用代码来添加菜单和图标     正文 一.添加主窗口菜单 1.新建Qt Gui应用,项目名称为myMainWind ...

  9. Fiddler2 主菜单

    Fiddler2 主菜单 六个主菜单分别是: 文件(File) Capture Traffic ——启用捕获功能,快捷键 F12 此功能的开启/关闭状态,程序安装后默认是开启的.可以在 Fiddler ...

随机推荐

  1. SDOI2011 拦截导弹

    题目描述 题解: 对于第一问,我们求二维LIS即可; 对于第二问,我们可以记录向前最长长度,向前最长方案数,向后最长长度,向后最长方案数. 其实改改树状数组即可. 还有,方案数一定要开double. ...

  2. Python中的函数(2)

    一.实参和形参        def greet_user(username): """显示简单的问候语,且显示用户名""" print(& ...

  3. 洛谷 P1156 垃圾陷阱 谈论剪枝,非满分

    这是一个91分的非dp代码(是我太弱) 剪枝八五个(实际上根本没那么多,主要是上课装逼,没想到他们dp水过去了),不过我的思路与dp不同: 1.层数到达i+1,return 这个必须有 2.当前剩余生 ...

  4. zoj 1251 Box of Bricks

    Box of Bricks Time Limit: 2 Seconds      Memory Limit: 65536 KB Little Bob likes playing with his bo ...

  5. 【判连通】HDU 6113 度度熊的01世界

    http://acm.hdu.edu.cn/showproblem.php?pid=6113 [题意] 度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成. 现在给你一个n ...

  6. [HNOI2015]实验比较 树形dp+组合数学

    在合并的时候有可以加等于,或者继续用小于, 比如siz[x]和siz[y]合并,小于的区间为max(siz[x],siz[y])<=k<=siz[x]+siz[y], 然后就是合并成多少个 ...

  7. NodeJS仿WebApi路由

    用过WebApi或Asp.net MVC的都知道微软的路由设计得非常好,十分方便,也十分灵活.虽然个人看来是有的太灵活了,team内的不同开发很容易使用不同的路由方式而显得有点混乱. 不过这不是重点, ...

  8. js面试题总结

    1.typeof和Object.prototype.toString typeof是js里面判断变量类型的一种方法,但这种方法没有Object.prototype.toString准确,前者有6种判断 ...

  9. php之memcache学习

    php之memcache学习 简介: memcache是一个分布式高速缓存系统. 分布式是说可以部署在多台服务器上,实现集群效果: 高速是因为数据都是维护在内存中的: 特点和使用场景: 1.非持久化存 ...

  10. 微服务架构的基础框架选择:Spring Cloud还是Dubbo?

    本文转自:http://mt.sohu.com/20160803/n462486707.shtml 最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 .近期也看到 ...