QuickLauncher.java 方法初步梳理

QuickLauncher.java 方法初步梳理

QuickLauncher

completeAddShortcut()
getHotseatPredictionController()

返回Hotseat自动补全的控制类

enableHotseatEdu

Hotseat自动补全的控制类 启用/禁用Hotseat预测图标长按edu进行测试

buildAppTransitionManager()

获取控制从启动器管理打开和关闭应用程序的转换的QuickstepTransitionManager类

createOnboardingPrefs()

返回通过SharedPreferences存储和检索入职相关数据的类

onConfigurationChanged()
onActivityFlagsChanged()
showAllAppsFromIntent()

打开AllApps页面

onItemClicked()

监听点击

getSupportedShortcuts()

支持的快捷方式

getSplitShortcuts()

获取快捷方式

onStateOrResumeChanging()

launcher状态改变或者launcher activity生命周期为stops/resumes时RecentsView的变动

if (state == NORMAL && !inTransition) {
            ((RecentsView) getOverviewPanel()).setSwipeDownShouldLaunchApp(false);
}
bindExtraContainerItems()
bindWorkspaceComponentsRemoved()

当系统删除应用程序/快捷方式图标时调用HotseatPredictionController的方法。这用于在等待AppAPredction服务发送新一批预测时修剪可见的过时预测。

onDestroy()
onStateSetEnd()

在状态转换结束时调用

createAppWidgetHolder()

launcher onCreate方法中调用,初始化

return factory.newInstance(this,
                appWidgetId -> getWorkspace().removeWidget(appWidgetId),
                new QuickstepInteractionHandler(this));
onCreate(Bundle savedInstanceState)
onResume()
onPause()
startSplitToHome(SplitSelectSource source)
onNewIntent(Intent intent)
getAppTransitionManager()
onEnterAnimationComplete()

在转换到主页后,如果高分辨率缩略图加载程序没有作为quickstep的一部分启用,请启用它,以便下次我们输入概览时可以加载高分辨率缩略图

handleGestureContract ()

处理手势导航合同

onTrimMemory()
onUiChangedWhileSleeping()

移除snapshot,因为内容视图可能有明显的更改。

onScreenOnChanged()

结束 RecentsView动画

    @Override
    protected void onScreenOnChanged(boolean isOn) {
        super.onScreenOnChanged(isOn);
        if (!isOn) {
            RecentsView recentsView = getOverviewPanel();
            recentsView.finishRecentsAnimation(true /* toRecents */, null);
        }
    }
onAllAppsTransition()

调用onTaskbarInAppDisplayProgressUpdate

    @Override
    public void onAllAppsTransition(float progress) {
        super.onAllAppsTransition(progress);
        onTaskbarInAppDisplayProgressUpdate(progress, ALL_APPS_PAGE_PROGRESS_INDEX);
    }
onWidgetsTransition()

调用onTaskbarInAppDisplayProgressUpdate

    @Override
    public void onWidgetsTransition(float progress) {
        super.onWidgetsTransition(progress);
        onTaskbarInAppDisplayProgressUpdate(progress, WIDGETS_PAGE_PROGRESS_INDEX);
        if (mEnableWidgetDepth) {
            getDepthController().widgetDepth.setValue(Utilities.mapToRange(
                    progress, 0f, 1f, 0f, getDeviceProfile().bottomSheetDepth, EMPHASIZED));
        }
    }
registerBackDispatcher()

监听返回键

onTaskbarInAppDisplayProgressUpdate(,)

在转换到应该使用应用内布局的启动器状态期间为任务栏元素制作动画。
Animates Taskbar elements during a transition to a Launcher state that should use in-app
* 0 => use home layout
* 1 => use in-app layout

startIntentSenderForResult()
startActivityForResult()
handlePendingActivityRequest()

删除任何活动的ProxyActivityStarter任务,并将RESULT_CANCELD发送到Launcher。
ProxyActivityStarter启动时带有清除任务以重置任务,然后删除任务本身。

onTISConnected
runOnBindToTouchInteractionService

简化绑定TouchInteractionService的实用程序类

initUnfoldTransitionProgressProvider
   private void initUnfoldTransitionProgressProvider() {
        final UnfoldTransitionConfig config = new ResourceUnfoldTransitionConfig();
        if (config.isEnabled()) {
            if (RECEIVE_UNFOLD_EVENTS_FROM_SYSUI.get()) {
            // Receives animation progress from sysui process.
                initRemotelyCalculatedUnfoldAnimation(config);
            } else {
            //注册 hinge angle监听器并计算此过程中的动画进度
                initLocallyCalculatedUnfoldAnimation(config);
            }

        }
    }
useFadeOutAnimationForLauncherStart()
launchSplitTasks()

在splitscreen中启动给定的{@link GroupTask} 如果缺少第二个拆分任务,则正常启动第一个任务

createTouchControllers()

在DragLayer.java中调用,很明显是针対全屏模式以及不同模式下的导航键的滑动控制类的数组

    @Override
    public TouchController[] createTouchControllers() {
        NavigationMode mode = DisplayController.getNavigationMode(this);

        ArrayList<TouchController> list = new ArrayList<>();
        list.add(getDragController());
        switch (mode) {
            case NO_BUTTON:
                list.add(new NoButtonQuickSwitchTouchController(this));
                list.add(new NavBarToHomeTouchController(this));
                list.add(new NoButtonNavbarToOverviewTouchController(this));
                break;
            case TWO_BUTTONS:
                list.add(new TwoButtonNavbarTouchController(this));
                list.add(getDeviceProfile().isVerticalBarLayout()
                        ? new TransposedQuickSwitchTouchController(this)
                        : new QuickSwitchTouchController(this));
                list.add(new PortraitStatesTouchController(this));
                break;
            case THREE_BUTTONS:
            default:
                list.add(new PortraitStatesTouchController(this));
        }

        if (!getDeviceProfile().isMultiWindowMode) {
            list.add(new StatusBarTouchController(this));
        }

        list.add(new LauncherTaskViewController(this));
        return list.toArray(new TouchController[list.size()]);
    }
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值