android Q 图标大小,行列数等配置

文章详细阐述了Android系统Launcher在启动时,如何通过InvariantDeviceProfile类初始化并读取device_profiles.xml文件来确定设备的默认布局。当存在多个device_profiles.xml时,Launcher会基于设备的屏幕尺寸,通过计算与各配置间的最小差距来选择最合适的布局配置。此外,提到该过程可能受项目特定配置影响。

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

时间:2020/08/31
之前公司不允许csdn,笔记写在其它地方。最近整理过来

InvariantDeviceProfile中读取device_profiles.xml文件

如果存在多个device_profiles.xml文件,需要根据mk文件查看当前用的是哪个目录的资源
launcher会根据不同的版本,引用不同路径的文件。

详情见
launcher数据加载
查看编译launcher的版本
两篇笔记

读取时机
at com.android.launcher3.InvariantDeviceProfile.initGrid(InvariantDeviceProfile.java:275)
        at com.android.launcher3.InvariantDeviceProfile.<init>(InvariantDeviceProfile.java:147)
        at com.android.launcher3.InvariantDeviceProfile.lambda$2ne4gU8MrKko0odxr9TWY6PNL2M(Unknown Source:2)
        at com.android.launcher3.-$$Lambda$InvariantDeviceProfile$2ne4gU8MrKko0odxr9TWY6PNL2M.get(Unknown Source:0)
        at com.android.launcher3.util.MainThreadInitializedObject.get(MainThreadInitializedObject.java:42)
        at com.android.launcher3.LauncherAppState.<init>(LauncherAppState.java:79)
        at com.android.launcher3.LauncherAppState.lambda$static$0(LauncherAppState.java:49)
        at com.android.launcher3.-$$Lambda$LauncherAppState$9fk3Zfbmg-F33AGrA-xIGQu1tdc.get(Unknown Source:0)
        at com.android.launcher3.util.MainThreadInitializedObject.get(MainThreadInitializedObject.java:42)
        at com.android.launcher3.LauncherAppState.getInstance(LauncherAppState.java:59)
        at com.android.launcher3.Launcher.onCreate(Launcher.java:310)
device_profiles.xml

里面的默认布局不一定会加载,其他的配置生效
xml里可能有多个配置,会全部读取,然后和手机的最小宽高Math.hypot(x1 - x0, y1 - y0)
(差的平方然后求和再开根号,2点之间距离公式),选最小值的配置,即和桌面最接近的配置。

<profiles xmlns:launcher="http://schemas.android.com/apk/res-auto" >
    <grid-option
        launcher:name="4_by_4"
        launcher:numRows="4"
        launcher:numColumns="4"
        launcher:numFolderRows="4"
        launcher:numFolderColumns="4"
        launcher:numHotseatIcons="4"
        launcher:defaultLayoutId="@xml/default_workspace_4x4" >

        <display-option
            launcher:name="Go Device"
            launcher:minWidthDps="296"
            launcher:minHeightDps="491.33"
            launcher:iconImageSize="60"
            launcher:iconTextSize="14.0"
            launcher:canBeDefault="true" />
    </grid-option>
    <grid-option
        launcher:name="5_by_5"
        launcher:numRows="5"
        launcher:numColumns="5"
        launcher:numFolderRows="4"
        launcher:numFolderColumns="4"
        launcher:numHotseatIcons="5"
        launcher:defaultLayoutId="@xml/default_workspace_5x5" >

        <display-option
            launcher:name="Large Phone"
            launcher:minWidthDps="406"
            launcher:minHeightDps="694"
            launcher:iconImageSize="56"
            launcher:iconTextSize="14.4"
            launcher:canBeDefault="true" />
        <display-option
            launcher:name="Shorter Stubby"
            launcher:minWidthDps="255"
            launcher:minHeightDps="400"
            launcher:iconImageSize="48"
            launcher:iconTextSize="13.0"
            launcher:canBeDefault="true" />
    </grid-option>
</profiles>
尾注

具体情况要看项目配置,是否有覆盖,是否配置了某一个外部资源文件等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值