QuickLauncher.java 方法初步梳理

发布时间:2024年01月16日

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()]);
    }
文章来源:https://blog.csdn.net/qq_30295213/article/details/135631364
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。