美文网首页
4.初始化界面

4.初始化界面

作者: 啥名丶都丶不好 | 来源:发表于2020-07-07 23:30 被阅读0次

流程

开始 --》 初始化Launcher上下文以及Launcher自身的环境设置 --》建立与LauncherMadel之间的联系以及图片缓存处理 --》 创建拖拽控制器以及AppWidget服务初始化 --》检查本地配置是否发生改变 --》 Launcher界面初始化(填充布局、设置控件属性以及实时布局) --》 观察Widget数据库配置变化 --》 历史状态恢复restoreState(mSavedState) --》 非状态恢复?mRestoring为ture?为true加载页面数据 然后注册ACTION_CLOASE_SYSTEM_DIALOGS广播 为false直接进行注册上面的广播 --》 更新搜索以及市场图标updateGlobalIcons() --》解锁方向设置unlockScreenOrientation(true) --》 显示帮助或者介绍信息 --》结束

初始化Launcher运行环境 (每个小结开 头的类名是完成后面功能所要使用到的类,写在前面是为了好记录这些东西,方便我自己后期忘记类后查找。)
  1. LauncherAppState Launcher在创建的时候需要对运行环境进行初始化,这些信息将保存在LauncherAppState实例中,并且通过LauncherAppState建立与桌面数据库的联系,已经能及时享影数据库的变化。Launcher实际继承了LauncherProviderChangeListener接口的类,通过LauncherProvider的setLauncherProviderChangeListener方法将接口部分设置到LauncherProvider中,以实现Launcher与数据库的联通。目前我的水平是不是可以理解成,其实这个LauncherAppState就是一个中间类,为了在数据库发生改变的时候通过桌面更改页面的作用呢?而更改数据库等可能是别的地方更改的。

  2. Dispaly 为生成的Launcher的动态网格进行必要的准备

Display display = getWindowManager().getDefaultDisplay();
display.getCurrentSizeRange(smallestPoint, largestPoint);
display.getRealSize(realPoint);
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
  1. DeviceProfile 通过使用它DeviceProfile grid = app.initDynamicGrid(......)生成动态网格。

  2. LauncherModel 获取共享数据对象以及建立Launcher与LauncherModel的联系
    这里需要记住一下SharedPreferences中的三个字段。
    launcher.first_load_complete 布尔型 Launcher第一次加载完成
    launcher.first_run_activity_displayed 布尔型 含义Launcher第一次使用
    launcher.intro_screen_dissmissed 布尔型 界面曾经被显示
    Launcher 继承了LauncherModel.Callbacks
    LauncherModel 可以看成是一个数据生成器,他所生成的数据需要通过LauncherModel.Callbacks接口传递给Launcher来处理, 通过LauncherAppState的set
    Launcher方法完成

  3. IconCache 根据动态网格刷新图标缓冲区
    通过使用IconCache的flushInvalidIcons方法实现这个功能

  4. DragController 初始化拖拽控制器 通过new传入launcher进行初始化
    主要记住:
    mScallZone:屏幕边缘的区域可以使你在拖拽时左右移动工作空间
    mVelocityTracker:是一个追踪器,用于跟踪屏幕滑动的速度。

  5. States 获取应用程序的运行状态

  6. 创建并启动WidgetHost 桌面小部件 是桌面的重要组件之一

  7. 检查配置是否有更新
    当一些本地配置(如以动国家码MCC、移动网络码MNC、所在地区等)发生变化的时候需要更新桌面元素(比如图标等)因此在创建的时候,首先就要对这些配置进行检查,checkForLocaleChange方法将完成这个工作。

  8. 装载Launcher布局以及实例化相关控件
    开始 -》Luancher视图的基础设置-》设置HotSeat-》设置预览模式UI以及相关菜单按钮事件 -》 设置workspace -》设置搜索条应用程序菜单 -》 这是拖拽控制器 -》结束

Launcher试图的基础设置

//设置Launcher为全屏
 mLauncherView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
// Setup the drag layer 设置拖拽层
 mDragLayer.setup(mDragController, mWorkspace);

对Launcher预览模式下的控件以及预览模式面板进行必要的设置。
首先预览模式的View是overview_panel

  1. DeviceProfile 根据动态网格的属性部署桌面

  2. Launcher的状态恢复 在书本50页

  3. 监听Widget配置变化 registerContentObservers

  4. LauncherModel 加载桌面数据 LauncherModel.startLoader

相关文章

  • 4.初始化界面

    流程 开始 --》 初始化Launcher上下文以及Launcher自身的环境设置 --》建立与LauncherM...

  • UI

    viewWithTag 界面初始化方法 用Storyboard创建的界面,所以初始化应该用 -(instance...

  • NavigationView的使用笔记

    1.解决NavigationView的图片灰色 2.获取头布局 3.头布局中文件的点击事件 4.界面初始化的时候根...

  • C# 基础信息缓存到本地XML

    首先界面加载时查出所需dataSet 界面初始化时加载和保存缓存信息

  • 方法 - viewDidLoad初始化视图

    是什么? viewDidLoad重新加载界面。 UIViewController里面的方法。 一般界面初始化时使用...

  • 自定义星星组件

    FiveStarsLayout 传递props 初始化星星界面初始化星星布局 image为数组 push几个可点...

  • ReactNative碰见的一些坑

    数组的初始化问题描述: 在import下方初始化一个数组 在界面中各种操作,退出该界面,再次进来,A数组依然是之前...

  • 隐藏tabBar

    //初始化将要推出的界面 MTDetailViewController *detailVc = [[MTDetai...

  • 通用应用启动加速套路?

    利用主题快速显示界面; ** 异步初始化组件;** ** 梳理业务逻辑,延迟初始化组件、操作;** ** 正确使用...

  • iOS-UISwitch的使用

    1.初始化UISwitch到界面 UISwitch* newsSwitch = [[UISwitch alloc]...

网友评论

      本文标题:4.初始化界面

      本文链接:https://www.haomeiwen.com/subject/ahnzqktx.html