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);
}

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

被折叠的 条评论
为什么被折叠?



