【源码剖析】Launcher 8.0 源码 (9) --- Launcher 启动流程 第四步之第2小步OverViewPanel及其三个按钮

本文详细解析了Android Launcher 8.0启动流程中的OverviewPanel部分,包括其布局、按钮功能及实现逻辑。OverviewPanel在长按桌面时显示,包含wallpaper、widget和settings三个按钮。wallpaper按钮用于设置壁纸,widget按钮切换到小部件模式,settings按钮打开设置。每个按钮通过OnClickListener和OnTouchListener实现相应功能,点击事件触发特定方法,如onClickWallpaperPicker、onClickAddWidgetButton和onClickSettingsButton。此外,还介绍了workspace的长按响应和DragController的作用。
摘要由CSDN通过智能技术生成

Launcher8.0启动流程的第四步,第2小步。定义OverViewPanel,关于OverViewPanel的布局整体在res里面以xml文件形式存在,而对于其细节层面,比如点击之后有什么用则再java层详细定义,而第2小步则是定义OverViewPanel三个按钮的功能。

 

在setupView的完整源码,以setupOverviewPanel方法为分界线,分为3小步。说明setupOverviewPanel非常复杂。和setupview方法一样,setupOverviewPanel也是在Launcher类里面。所创建内容服务于Launcher整体。

那么什么是OverviewPanel?

在Launcher使用时,长按桌面空白处,我们会发现,workspace缩小,hotseat消失,并且在下方出现三个选项:wallpapers,widget,home settings  这个提供特殊选项的栏,就叫做OverviewPanel

 

 

其源码如下:

private void setupOverviewPanel() {
    mOverviewPanel = (ViewGroup) findViewById(R.id.overview_panel);

    View wallpaperButton = findViewById(R.id.wallpaper_button);
    new OverviewButtonClickListener(ControlType.WALLPAPER_BUTTON) {
        @Override
        public void handleViewClick(View view) {
            onClickWallpaperPicker(view);
        }
    }.attachTo(wallpaperButton);
    wallpaperButton.setOnTouchListener(getHapticFeedbackTouchListener());

    mWidgetsButton = findViewById(R.id.widget_button);
    new OverviewButtonClickListener(ControlType.WIDGETS_BUTTON) {
        @Override
        public void handleViewClick(View view) {
            onClickAddWidgetButton(view);
        }
    }.attachTo(mWidgetsButton);
    mWidgetsButton.setOnTouchListener(getHapticFeedbackTouchListener());

    View settingsButton = findViewById(R.id.settings_button);
    boolean hasSettings = hasSettings();
    if (hasSettings) {
        new OverviewButtonClickListener(ControlType.SETTINGS_BUTTON) {
            @Override
            public void handleViewClick(View view) {
                onClickSettingsButton(view);
            }
        }.attachTo(settingsButton);
        settingsButton.setOnTouchListener(getHapticFeedbackTouchListener());
    } else {
        settingsButton.setVisibility(View.GONE);
    }

    mOverviewPanel.setAlpha(0f);
}

 

源码逻辑清晰,首先获取overview_panel的View,然后依次创建wallpaper,widget,settings这3个buttom。

 

overview_panel是oncreate流程第三步统一创建对象的时候,在UI布局文件Launcher.xml里面提到的多个组成Launcher的其中之一。核心就是三个button。

 

首先认真研读第一个wallpaperButton 的创建,而后举一反三。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值