您的位置:首页 > 其它

Launcher3 Folder源码笔记

2016-01-29 21:05 330 查看
整理一下Lancher3 Folder相关的代码笔记,从Folder加载显示的过程中可以更清晰的认识到Launcher3的加载流程。

LauncherModel.java:桌面加载关键类,大部分流程都在其中完成,它的对象mModel在LauncherAppState中的构造方法中初始化。

Launcher.java:Launcher中有LauncherModel对象,通过LauncherModel中的setLauncher方法将LauncherAppState的mModel传递给它,setLauncher方法中调用了mModel.initialize方法,将实现的回调接口对象传递给mModel中mCallbacks,即实现了Callbacks接口的Launcher,用于更新加载过程中的UI界面。Launcher中onCreate()中调用了mModel的startLoader方法,开始加载。

加载由LoaderTask完成。在run方法里面调用loadAndBindWorkspace方法,这个方法分别调用loadWorkspace方法和bindWorkspace方法。

loadWorkspace中调用LauncherAppState.getLauncherProvider().loadDefaultFavoritesIfNecessary(),如果是首次开机,调用getDefaultLayoutParser(),载入默认的Workspace布局。

bindWorkspace方法绑定桌面的图标,widget等元素,这里先绑定当前页的,再绑定其他页的,这一步要将桌面的各种图标添加到WorkSpace,所以要在Android主线程里工作,最终调用Launcher的bindItems方法。Folder绑定时在bindItems方法里通过fromXml方法创建FolderIcon,然后调用workspace.addInScreenFromBind显示到界面。FolderIcon的tag设为FolderInfo,还包含文件夹展开时的界面Folder对象和FolderInfo对象。这样在onClick等操作桌面图标的操作时,可以方便的获取当前点击的Folder的信息并展示相应界面。

随后还调用了bindFolders方法,将全部folder对象给到一个静态HashMap中,这里根据关联的代码判断应该是为了更方便管理操作桌面文件夹。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: