Launcher图标加载流程二

本文深入探讨了Launcher图标加载的流程,从onCreate方法开始,解析InvariantDeviceProfile的构造,涉及设备配置、数据加载、默认工作区设定、AutoInstallsLayout的解析,以及最后的图标和小部件绑定到CellLayout的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Launcher 图标加载

首先launcher的onCreate方法初始化:

        // 加载桌面应用信息
        LauncherAppState app = LauncherAppState.getInstance(this);
        mOldConfig = new Configuration(getResources().getConfiguration());
        mModel = app.getModel();

        mRotationHelper = new RotationHelper(this);
        InvariantDeviceProfile idp = app.getInvariantDeviceProfile();
        initDeviceProfile(idp);
        idp.addOnChangeListener(this);

查看LauncherAppState的构造方法,在其中初始化了一个InvariantDeviceProfile类,调用自身的构造方法可以看到,
配置桌面的行,列,Hotseat(桌面底部固定的应用栏)的个数,Hotseat所有应用的位置,布局id,文件夹的行列,图标的大小等等信息。解析device_profiles.xml方法, 加载默认页的资源文件
故,当我们有新机型没有适配,就可以在这里修改或新增配置

private InvariantDeviceProfile(InvariantDeviceProfile p) {
   
       numRows = p.numRows;
       numColumns = p.numColumns;
       numFolderRows = p.numFolderRows;
       numFolderColumns = p.numFolderColumns;
       iconSize = p.iconSize;
       landscapeIconSize = p.landscapeIconSize;
       iconBitmapSize = p.iconBitmapSize;
       iconTextSize = p.iconTextSize;
       landscapeIconTextSize = p.landscapeIconTextSize;
       numShownHotseatIcons = p.numShownHotseatIcons;
       numDatabaseHotseatIcons = p.numDatabaseHotseatIcons;
       numAllAppsColumns = p.numAllAppsColumns;
       numDatabaseAllAppsColumns = p.numDatabaseAllAppsColumns;
       isScalable = p.isScalable;
       devicePaddingId = p.devicePaddingId;
       minCellHeight = p.minCellHeight;
       minCellWidth = p.minCellWidth;
       borderSpacing = p.borderSpacing;
       dbFile = p.dbFile;
       allAppsIconSize = p.allAppsIconSize;
       allAppsIconTextSize = p.allAppsIconTextSize;
       defaultLayoutId = p.defaultLayoutId;
       demoModeLayoutId = p.demoModeLayoutId;
       mExtraAttrs = p.mExtraAttrs;
       devicePaddings = p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值