Add API to launcher to insert a custom page to the left of workspace

Change-Id: I85a4e096aab9bfcb1de74f04075bcabcb7e3262f
This commit is contained in:
Adam Cohen
2013-06-11 12:48:00 -07:00
parent ecf33e4819
commit 66a01fd24b
3 changed files with 73 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<com.android.launcher3.CellLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:hapticFeedbackEnabled="false"
launcher:cellWidth="@dimen/workspace_cell_width"
launcher:cellHeight="@dimen/workspace_cell_height"
launcher:widthGap="@dimen/workspace_width_gap"
launcher:heightGap="@dimen/workspace_height_gap"
launcher:maxGap="@dimen/workspace_max_gap" />
+34
View File
@@ -826,6 +826,34 @@ public class Launcher extends Activity
mDragController.resetLastGestureUpTime();
}
protected void onFinishBindingItems() {
}
// Add a fullscreen unpadded view to the workspace to the left all other screens.
public void addCustomContentToLeft(View customContent) {
CellLayout customScreen = (CellLayout)
getLayoutInflater().inflate(R.layout.workspace_custom_content, null);
int spanX = customScreen.getCountX();
int spanY = customScreen.getCountY();
CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, spanX, spanY);
lp.canReorder = false;
customScreen.addViewToCellLayout(customContent, 0, 0, lp, true);
mWorkspace.addView(customScreen, 0);
// We don't want to change the current or the default screen
mWorkspace.post(new Runnable() {
@Override
public void run() {
mWorkspace.incrementDefaultScreen();
mWorkspace.setCurrentPage(mWorkspace.getCurrentPage() + 1);
}
});
}
@Override
public Object onRetainNonConfigurationInstance() {
// Flag the loader to stop early before switching
@@ -3617,6 +3645,12 @@ public class Launcher extends Activity
mWorkspace.stripDuplicateApps();
mIntentsOnWorkspaceFromUpgradePath = mWorkspace.stripDuplicateApps();
}
mWorkspace.post(new Runnable() {
@Override
public void run() {
onFinishBindingItems();
}
});
}
private boolean canRunNewAppsAnimation() {
+6
View File
@@ -398,6 +398,12 @@ public class Workspace extends SmoothPagedView
UninstallShortcutReceiver.disableAndFlushUninstallQueue(getContext());
}
// Just a hack so that if a custom content screen is added to the left, we adjust the
// default screen accordingly so that it stays the same.
void incrementDefaultScreen() {
mDefaultPage++;
}
/**
* Initializes various states for this workspace.
*/