Launcher3源码分析 — bindScreen的具体实现

本文深入分析了Android Launcher3中bindScreen的实现过程,详细介绍了页面添加的流程,包括有序屏幕列表中的非空页面、空页面和自定义页面的处理。在Launcher类中,bindScreens()方法负责页面的添加,通过insertNewWorkspaceScreenBeforeEmptyScreen()和insertNewWorkspaceScreen()完成创建和插入操作,确保屏幕正确地组织在工作区中。

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

前面讲到,在bindWorkspace中涉及了以下几个回调方法:

startBinding();
bindScreens();
bindWorkspaceItems();
finishBindingItems();

Launcher类实现了这些回调接口,startBinding()主要完成了数据清空和状态重置等预备操作,这里不详细分析,接下来我们来看其他方法在Launcher类中的具体实现。


我们从bindScreen()开始,bindScreen完成了页面的添加工作,下面是页面添加的流程图:


由图可以看出,有3种类型的screen,有序Screen列表中包含的非空页面,空页面和自定义页面。在Launcher类中,bindScreens()的具体实现如下:

@Override
public void bindScreens(ArrayList<Long> orderedScreenIds) {
    // 根据orderedScreenIds来添加页面
    bindAddScreens(orderedScreenIds);

    // 如果orderedScreenIds的大小为0,即没有添加任何页面,需要添加一个空的页面
    if (orderedScreenIds.size() == 0) {
        mWorkspace.addExtraEmptyScreen();
    }

    // 如果有自定义页面,则将自定义页面添加到最左
    if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值