Launcher3源码分析之Widget添加流程

本文详细分析了Launcher3中Widget的添加流程,从AllApps界面获取Widget信息到显示,再到用户拖拽Widget到主屏幕 Workspace 中的实现细节,涉及开始拖拽、计算Widget大小、拖拽事件处理及最终的添加操作。
摘要由CSDN通过智能技术生成

Launcher3小部件Widget添加流程分析

    首先,看看Launcher3原生的Widget是如何获取到并显示的。原生的Widget是在AllApps界面显示的,也就是抽屉界面。

Launcher.java onCreate()函数中先获取AppWidgetProviderInfo信息:

 protected void onCreate(Bundle savedInstanceState) {

// Update customization drawer _after_ restoring the states

   if (mAppsCustomizeContent != null) {

         mAppsCustomizeContent.onPackagesUpdated(

         LauncherModel.getSortedWidgetsAndShortcuts(this));

   }

}

mAppsCustomizeContent 即显示AllApps和Widget的界面AppsCustomizePagedView,

LauncherModel.getSortedWidgetsAndShortcuts(this)从数据库中获取到经过排序的Widgets信息并传入AppsCustomizePagedView显示,具体实现就参考LauncherModel相关代码。

这里跳转到AppsCustomizePagedView的onPackagesUpdated函数中,在onPackagesUpdated中,会将前面获取到的信息赋值给一个全局的ArrayList<object> mWidgets,后续的所有操作都是从这个mWidgets中获取相关信息的。

 

在获取到mWidgets之后,就要将之添加显示到AppsCustomizePagedView中,Launcher3是在AppsCustomizePagedView的

    @Override

    public void syncPageItems(int page, boolean immediate) {

        if (mContentType == ContentType.Widgets) {

            syncWidgetPageItems(page, immediate);

        } else {

            syncAppsPageItems(page, immediate);

        }

    }

调用syncWidgetPageItems(pa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值