Removing the SearchDropTarget bar as it no longer contains the QSB
> Renaming it to simply DropTargetBar
> Moving AppInfo to the top bar as well
> The workspace pages will extend to the top edge (minus some padding).
Since the QSB is no longer displayed on top of every page, there is
no reason to reserve the space.
> In spring-loaded mode, the workspace cell layout will scale enough
to make room for the drop target bar at the top
Change-Id: I2baf607310335dd576c9d9fcbb75ab708f47ac03
diff --git a/src/com/android/launcher3/AppInfoDropTargetBar.java b/src/com/android/launcher3/AppInfoDropTargetBar.java
deleted file mode 100644
index e06f941..0000000
--- a/src/com/android/launcher3/AppInfoDropTargetBar.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.launcher3;
-
-import android.content.Context;
-import android.util.AttributeSet;
-
-import com.android.launcher3.dragndrop.DragController;
-
-public class AppInfoDropTargetBar extends BaseDropTargetBar {
- private ButtonDropTarget mAppInfoDropTarget;
-
- public AppInfoDropTargetBar(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public AppInfoDropTargetBar(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
-
- // Get the individual components
- mAppInfoDropTarget = (ButtonDropTarget) mDropTargetBar.findViewById(R.id.info_target_text);
-
- mAppInfoDropTarget.setDropTargetBar(this);
- }
-
- @Override
- public void setup(Launcher launcher, DragController dragController) {
- dragController.addDragListener(this);
-
- dragController.addDragListener(mAppInfoDropTarget);
- dragController.addDropTarget(mAppInfoDropTarget);
-
- mAppInfoDropTarget.setLauncher(launcher);
- }
-
- @Override
- public void showDropTargets() {
- animateDropTargetBarToAlpha(1f, DEFAULT_DRAG_FADE_DURATION);
- }
-
- @Override
- public void hideDropTargets() {
- animateDropTargetBarToAlpha(0f, DEFAULT_DRAG_FADE_DURATION);
- }
-
- private void animateDropTargetBarToAlpha(float alpha, int duration) {
- resetAnimation(duration);
- if (duration > 0) {
- animateAlpha(mDropTargetBar, alpha, DEFAULT_INTERPOLATOR);
- mCurrentAnimation.start();
- } else {
- mDropTargetBar.setAlpha(alpha);
- AlphaUpdateListener.updateVisibility(mDropTargetBar, mAccessibilityEnabled);
- }
- }
-
- @Override
- public void enableAccessibleDrag(boolean enable) {
- mAppInfoDropTarget.enableAccessibleDrag(enable);
- }
-}
diff --git a/src/com/android/launcher3/BaseDropTargetBar.java b/src/com/android/launcher3/BaseDropTargetBar.java
deleted file mode 100644
index 9b38623..0000000
--- a/src/com/android/launcher3/BaseDropTargetBar.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.launcher3;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.animation.TimeInterpolator;
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.accessibility.AccessibilityManager;
-import android.view.animation.AccelerateInterpolator;
-import android.widget.FrameLayout;
-
-import com.android.launcher3.dragndrop.DragController;
-
-/**
- * Base class for drop target bars (where you can drop apps to do actions such as uninstall).
- */
-public abstract class BaseDropTargetBar extends FrameLayout implements DragController.DragListener {
- protected static final int DEFAULT_DRAG_FADE_DURATION = 175;
- protected static final TimeInterpolator DEFAULT_INTERPOLATOR = new AccelerateInterpolator();
-
- protected View mDropTargetBar;
- protected boolean mAccessibilityEnabled = false;
-
- protected AnimatorSet mCurrentAnimation;
- protected boolean mDeferOnDragEnd;
-
- public BaseDropTargetBar(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public BaseDropTargetBar(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
-
- mDropTargetBar = findViewById(R.id.drag_target_bar);
-
- // Create the various fade animations
- mDropTargetBar.setAlpha(0f);
- }
-
- /**
- * Convenience method to animate the alpha of a view.
- */
- protected void animateAlpha(View v, float alpha, TimeInterpolator interpolator) {
- if (Float.compare(v.getAlpha(), alpha) != 0) {
- ObjectAnimator anim = ObjectAnimator.ofFloat(v, View.ALPHA, alpha);
- anim.setInterpolator(interpolator);
- anim.addListener(new ViewVisiblilyUpdateHandler(v));
- mCurrentAnimation.play(anim);
- }
- }
-
- protected void resetAnimation(int newAnimationDuration) {
- // Update the accessibility state
- AccessibilityManager am = (AccessibilityManager)
- getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
- mAccessibilityEnabled = am.isEnabled();
-
- // Cancel any existing animation
- if (mCurrentAnimation != null) {
- mCurrentAnimation.cancel();
- mCurrentAnimation = null;
- }
-
- if (newAnimationDuration > 0) {
- mCurrentAnimation = new AnimatorSet();
- mCurrentAnimation.setDuration(newAnimationDuration);
- }
- }
-
- /*
- * DragController.DragListener implementation
- */
- @Override
- public void onDragStart(DragSource source, ItemInfo info, int dragAction) {
- showDropTargets();
- }
-
- /**
- * This is called to defer hiding the delete drop target until the drop animation has completed,
- * instead of hiding immediately when the drag has ended.
- */
- protected void deferOnDragEnd() {
- mDeferOnDragEnd = true;
- }
-
- @Override
- public void onDragEnd() {
- if (!mDeferOnDragEnd) {
- hideDropTargets();
- } else {
- mDeferOnDragEnd = false;
- }
- }
-
- public abstract void showDropTargets();
-
- public abstract void hideDropTargets();
-
- public abstract void enableAccessibleDrag(boolean enable);
-
- public abstract void setup(Launcher launcher, DragController dragController);
-
- private class ViewVisiblilyUpdateHandler extends AnimatorListenerAdapter {
- private final View mView;
-
- ViewVisiblilyUpdateHandler(View v) {
- mView = v;
- }
-
- @Override
- public void onAnimationStart(Animator animation) {
- // Ensure that the view is visible for the animation
- mView.setVisibility(View.VISIBLE);
- }
-
- @Override
- public void onAnimationEnd(Animator animation){
- AlphaUpdateListener.updateVisibility(mView, mAccessibilityEnabled);
- }
-
- }
-}
diff --git a/src/com/android/launcher3/ButtonDropTarget.java b/src/com/android/launcher3/ButtonDropTarget.java
index 43afbe5..61ac713 100644
--- a/src/com/android/launcher3/ButtonDropTarget.java
+++ b/src/com/android/launcher3/ButtonDropTarget.java
@@ -55,10 +55,10 @@
private static final int DRAG_VIEW_DROP_DURATION = 285;
private final boolean mHideParentOnDisable;
+ protected final Launcher mLauncher;
- protected Launcher mLauncher;
private int mBottomDragPadding;
- protected BaseDropTargetBar mDropTargetBar;
+ protected DropTargetBar mDropTargetBar;
/** Whether this drop target is active for the current drag */
protected boolean mActive;
@@ -80,6 +80,8 @@
public ButtonDropTarget(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
+ mLauncher = (Launcher) context;
+
Resources resources = getResources();
mBottomDragPadding = resources.getDimensionPixelSize(R.dimen.drop_target_drag_padding);
@@ -109,11 +111,7 @@
}
}
- public void setLauncher(Launcher launcher) {
- mLauncher = launcher;
- }
-
- public void setDropTargetBar(BaseDropTargetBar dropTargetBar) {
+ public void setDropTargetBar(DropTargetBar dropTargetBar) {
mDropTargetBar = dropTargetBar;
}
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 8d11aaa..4a550ed 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -70,7 +70,10 @@
public final Rect defaultWidgetPadding;
private final int pageIndicatorHeightPx;
private final int defaultPageSpacingPx;
+ private final int topWorkspacePadding;
private float dragViewScale;
+ public float workspaceSpringLoadShrinkFactor;
+ public final int workspaceSpringLoadedBottomSpace;
// Workspace icons
public int iconSizePx;
@@ -92,8 +95,7 @@
public int hotseatCellWidthPx;
public int hotseatCellHeightPx;
public int hotseatIconSizePx;
- private int normalHotseatBarHeightPx, shortHotseatBarHeightPx;
- private int hotseatBarHeightPx; // One of the above.
+ private int hotseatBarHeightPx;
// All apps
public int allAppsNumCols;
@@ -102,15 +104,8 @@
public final int allAppsIconSizePx;
public final float allAppsIconTextSizeSp;
- // QSB
- private int searchBarWidgetInternalPaddingTop, searchBarWidgetInternalPaddingBottom;
- private int searchBarTopPaddingPx;
- private int tallSearchBarNegativeTopPaddingPx, normalSearchBarTopExtraPaddingPx;
- private int searchBarTopExtraPaddingPx; // One of the above.
- private int normalSearchBarBottomPaddingPx, tallSearchBarBottomPaddingPx;
- private int searchBarBottomPaddingPx; // One of the above.
- private int normalSearchBarSpaceHeightPx, tallSearchBarSpaceHeightPx;
- private int searchBarSpaceHeightPx; // One of the above.
+ // Drop Target
+ public int dropTargetBarSizePx;
public DeviceProfile(Context context, InvariantDeviceProfile inv,
Point minSize, Point maxSize,
@@ -140,6 +135,8 @@
res.getDimensionPixelSize(R.dimen.dynamic_grid_page_indicator_height);
defaultPageSpacingPx =
res.getDimensionPixelSize(R.dimen.dynamic_grid_workspace_page_spacing);
+ topWorkspacePadding =
+ res.getDimensionPixelSize(R.dimen.dynamic_grid_workspace_top_padding);
overviewModeMinIconZoneHeightPx =
res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_min_icon_zone_height);
overviewModeMaxIconZoneHeightPx =
@@ -152,6 +149,9 @@
res.getInteger(R.integer.config_dynamic_grid_overview_icon_zone_percentage) / 100f;
iconDrawablePaddingOriginalPx =
res.getDimensionPixelSize(R.dimen.dynamic_grid_icon_drawable_padding);
+ dropTargetBarSizePx = res.getDimensionPixelSize(R.dimen.dynamic_grid_drop_target_size);
+ workspaceSpringLoadedBottomSpace =
+ res.getDimensionPixelSize(R.dimen.dynamic_grid_min_spring_loaded_space);
// AllApps uses the original non-scaled icon text size
allAppsIconTextSizeSp = inv.iconTextSize;
@@ -195,7 +195,7 @@
float usedHeight = (cellHeightPx * inv.numRows);
// We only care about the top and bottom workspace padding, which is not affected by RTL.
- Rect workspacePadding = getWorkspacePadding(false /* isLayoutRtl */);
+ Rect workspacePadding = getWorkspacePadding();
int maxHeight = (availableHeightPx - workspacePadding.top - workspacePadding.bottom);
if (usedHeight > maxHeight) {
scale = maxHeight / usedHeight;
@@ -211,33 +211,6 @@
iconDrawablePaddingPx = drawablePadding;
hotseatIconSizePx = (int) (Utilities.pxFromDp(inv.hotseatIconSize, dm) * scale);
- // Search Bar
- normalSearchBarSpaceHeightPx = res.getDimensionPixelSize(
- R.dimen.dynamic_grid_search_bar_height);
- tallSearchBarSpaceHeightPx = res.getDimensionPixelSize(
- R.dimen.dynamic_grid_search_bar_height_tall);
- searchBarWidgetInternalPaddingTop = res.getDimensionPixelSize(
- R.dimen.qsb_internal_padding_top);
- searchBarWidgetInternalPaddingBottom = res.getDimensionPixelSize(
- R.dimen.qsb_internal_padding_bottom);
- normalSearchBarTopExtraPaddingPx = res.getDimensionPixelSize(
- R.dimen.dynamic_grid_search_bar_extra_top_padding);
- tallSearchBarNegativeTopPaddingPx = res.getDimensionPixelSize(
- R.dimen.dynamic_grid_search_bar_negative_top_padding_short);
- if (isTablet && !isVerticalBarLayout()) {
- searchBarTopPaddingPx = searchBarWidgetInternalPaddingTop;
- normalSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom +
- res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_bottom_padding_tablet);
- tallSearchBarBottomPaddingPx = normalSearchBarBottomPaddingPx;
- } else {
- searchBarTopPaddingPx = searchBarWidgetInternalPaddingTop;
- normalSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom +
- res.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_bottom_padding);
- tallSearchBarBottomPaddingPx = searchBarWidgetInternalPaddingBottom
- + res.getDimensionPixelSize(
- R.dimen.dynamic_grid_search_bar_bottom_negative_padding_short);
- }
-
// Calculate the actual text height
Paint textPaint = new Paint();
textPaint.setTextSize(iconTextSizePx);
@@ -249,11 +222,22 @@
dragViewScale = (iconSizePx + scaleDps) / iconSizePx;
// Hotseat
- normalHotseatBarHeightPx = iconSizePx + 4 * edgeMarginPx;
- shortHotseatBarHeightPx = iconSizePx + 2 * edgeMarginPx;
+ hotseatBarHeightPx = iconSizePx + 4 * edgeMarginPx;
hotseatCellWidthPx = iconSizePx;
hotseatCellHeightPx = iconSizePx;
+ if (!isVerticalBarLayout()) {
+ int expectedWorkspaceHeight = availableHeightPx - hotseatBarHeightPx
+ - pageIndicatorHeightPx - topWorkspacePadding;
+ float minRequiredHeight = dropTargetBarSizePx + workspaceSpringLoadedBottomSpace;
+ workspaceSpringLoadShrinkFactor = Math.min(
+ res.getInteger(R.integer.config_workspaceSpringLoadShrinkPercentage) / 100.0f,
+ 1 - (minRequiredHeight / expectedWorkspaceHeight));
+ } else {
+ workspaceSpringLoadShrinkFactor =
+ res.getInteger(R.integer.config_workspaceSpringLoadShrinkPercentage) / 100.0f;
+ }
+
// Folder
int folderCellPadding = isTablet || isLandscape ? 6 * edgeMarginPx : 3 * edgeMarginPx;
// Don't let the folder get too close to the edges of the screen.
@@ -281,60 +265,33 @@
allAppsNumPredictiveCols = numPredictiveAppCols;
}
- /** Returns the amount of extra space to allocate to the search bar for vertical padding. */
- private int getSearchBarTotalVerticalPadding() {
- return searchBarTopPaddingPx + searchBarTopExtraPaddingPx + searchBarBottomPaddingPx;
- }
-
/** Returns the width and height of the search bar, ignoring any padding. */
- public Point getSearchBarDimensForWidgetOpts(Resources res) {
- Rect searchBarBounds = getSearchBarBounds(Utilities.isRtl(res));
+ public Point getSearchBarDimensForWidgetOpts() {
if (isVerticalBarLayout()) {
- return new Point(searchBarBounds.width(), searchBarBounds.height());
- }
- int widgetInternalPadding = searchBarWidgetInternalPaddingTop +
- searchBarWidgetInternalPaddingBottom;
- return new Point(searchBarBounds.width(), searchBarSpaceHeightPx + widgetInternalPadding);
- }
-
- /** Returns the search bar bounds in the current orientation */
- public Rect getSearchBarBounds(boolean isLayoutRtl) {
- Rect bounds = new Rect();
- if (isVerticalBarLayout()) {
- if (isLayoutRtl) {
- bounds.set(availableWidthPx - normalSearchBarSpaceHeightPx, edgeMarginPx,
- availableWidthPx, availableHeightPx - edgeMarginPx);
- } else {
- bounds.set(0, edgeMarginPx, normalSearchBarSpaceHeightPx,
- availableHeightPx - edgeMarginPx);
- }
+ return new Point(dropTargetBarSizePx, availableHeightPx - 2 * edgeMarginPx);
} else {
- int boundsBottom = searchBarSpaceHeightPx + getSearchBarTotalVerticalPadding();
+ int gap;
if (isTablet) {
// Pad the left and right of the workspace to ensure consistent spacing
// between all icons
int width = getCurrentWidth();
// XXX: If the icon size changes across orientations, we will have to take
// that into account here too.
- int gap = (int) ((width - 2 * edgeMarginPx -
- (inv.numColumns * cellWidthPx)) / (2 * (inv.numColumns + 1)));
- bounds.set(edgeMarginPx + gap, 0,
- availableWidthPx - (edgeMarginPx + gap), boundsBottom);
+ gap = ((width - 2 * edgeMarginPx
+ - (inv.numColumns * cellWidthPx)) / (2 * (inv.numColumns + 1)))
+ + edgeMarginPx;
} else {
- bounds.set(desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.left,
- 0,
- availableWidthPx - (desiredWorkspaceLeftRightMarginPx -
- defaultWidgetPadding.right), boundsBottom);
+ gap = desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.right;
}
+ return new Point(availableWidthPx - 2 * gap, dropTargetBarSizePx);
}
- return bounds;
}
public Point getCellSize() {
Point result = new Point();
// Since we are only concerned with the overall padding, layout direction does
// not matter.
- Rect padding = getWorkspacePadding(false /* isLayoutRtl */ );
+ Rect padding = getWorkspacePadding();
result.x = calculateCellWidth(availableWidthPx - padding.left - padding.right,
inv.numColumns);
result.y = calculateCellHeight(availableHeightPx - padding.top - padding.bottom,
@@ -343,20 +300,13 @@
}
/** Returns the workspace padding in the specified orientation */
- public Rect getWorkspacePadding(boolean isLayoutRtl) {
- Rect searchBarBounds = getSearchBarBounds(isLayoutRtl);
+ public Rect getWorkspacePadding() {
Rect padding = new Rect();
if (isVerticalBarLayout()) {
- // Pad the left and right of the workspace with search/hotseat bar sizes
- if (isLayoutRtl) {
- padding.set(normalHotseatBarHeightPx, edgeMarginPx,
- searchBarBounds.width(), edgeMarginPx);
- } else {
- padding.set(searchBarBounds.width(), edgeMarginPx,
- normalHotseatBarHeightPx, edgeMarginPx);
- }
+ // in case of isVerticalBarLayout, the hotseat is always on the right and the drop
+ // target bar is on the left, independent of the layout direction.
+ padding.set(dropTargetBarSizePx, edgeMarginPx, hotseatBarHeightPx, edgeMarginPx);
} else {
- int paddingTop = searchBarBounds.bottom;
int paddingBottom = hotseatBarHeightPx + pageIndicatorHeightPx;
if (isTablet) {
// Pad the left and right of the workspace to ensure consistent spacing
@@ -369,14 +319,14 @@
((inv.numColumns - 1) * gapScale * cellWidthPx)));
availablePaddingX = (int) Math.min(availablePaddingX,
width * MAX_HORIZONTAL_PADDING_PERCENT);
- int availablePaddingY = Math.max(0, height - paddingTop - paddingBottom
+ int availablePaddingY = Math.max(0, height - topWorkspacePadding - paddingBottom
- (int) (2 * inv.numRows * cellHeightPx));
- padding.set(availablePaddingX / 2, paddingTop + availablePaddingY / 2,
+ padding.set(availablePaddingX / 2, topWorkspacePadding + availablePaddingY / 2,
availablePaddingX / 2, paddingBottom + availablePaddingY / 2);
} else {
// Pad the top and bottom of the workspace with search/hotseat bar sizes
padding.set(desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.left,
- paddingTop,
+ topWorkspacePadding,
desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.right,
paddingBottom);
}
@@ -384,7 +334,7 @@
return padding;
}
- private int getWorkspacePageSpacing(boolean isLayoutRtl) {
+ private int getWorkspacePageSpacing() {
if (isVerticalBarLayout() || isLargeTablet) {
// In landscape mode the page spacing is set to the default.
return defaultPageSpacingPx;
@@ -392,7 +342,7 @@
// In portrait, we want the pages spaced such that there is no
// overhang of the previous / next page into the current page viewport.
// We assume symmetrical padding in portrait mode.
- return Math.max(defaultPageSpacingPx, 2 * getWorkspacePadding(isLayoutRtl).left);
+ return Math.max(defaultPageSpacingPx, 2 * getWorkspacePadding().left);
}
}
@@ -444,50 +394,28 @@
return visibleChildren;
}
- // TODO(twickham): b/25154513
- public void setSearchBarHeight(int searchBarHeight) {
- if (searchBarHeight == LauncherCallbacks.SEARCH_BAR_HEIGHT_TALL) {
- hotseatBarHeightPx = shortHotseatBarHeightPx;
- searchBarSpaceHeightPx = tallSearchBarSpaceHeightPx;
- searchBarBottomPaddingPx = tallSearchBarBottomPaddingPx;
- searchBarTopExtraPaddingPx = isPhone ? tallSearchBarNegativeTopPaddingPx
- : normalSearchBarTopExtraPaddingPx;
- } else {
- hotseatBarHeightPx = normalHotseatBarHeightPx;
- searchBarSpaceHeightPx = normalSearchBarSpaceHeightPx;
- searchBarBottomPaddingPx = normalSearchBarBottomPaddingPx;
- searchBarTopExtraPaddingPx = normalSearchBarTopExtraPaddingPx;
- }
- }
-
public void layout(Launcher launcher) {
FrameLayout.LayoutParams lp;
boolean hasVerticalBarLayout = isVerticalBarLayout();
final boolean isLayoutRtl = Utilities.isRtl(launcher.getResources());
// Layout the search bar space
- Rect searchBarBounds = getSearchBarBounds(isLayoutRtl);
- View searchBar = launcher.getSearchDropTargetBar();
+ Point searchBarBounds = getSearchBarDimensForWidgetOpts();
+ View searchBar = launcher.getDropTargetBar();
lp = (FrameLayout.LayoutParams) searchBar.getLayoutParams();
- lp.width = searchBarBounds.width();
- lp.height = searchBarBounds.height();
- lp.topMargin = searchBarTopExtraPaddingPx;
+ lp.width = searchBarBounds.x;
+ lp.height = searchBarBounds.y;
+ lp.topMargin = edgeMarginPx;
searchBar.setLayoutParams(lp);
- // Layout the app info bar space
- View appInfoBar = launcher.getAppInfoDropTargetBar();
- lp = (FrameLayout.LayoutParams) appInfoBar.getLayoutParams();
- lp.bottomMargin = hotseatBarHeightPx;
- appInfoBar.setLayoutParams(lp);
-
// Layout the workspace
PagedView workspace = (PagedView) launcher.findViewById(R.id.workspace);
lp = (FrameLayout.LayoutParams) workspace.getLayoutParams();
lp.gravity = Gravity.CENTER;
- Rect padding = getWorkspacePadding(isLayoutRtl);
+ Rect padding = getWorkspacePadding();
workspace.setLayoutParams(lp);
workspace.setPadding(padding.left, padding.top, padding.right, padding.bottom);
- workspace.setPageSpacing(getWorkspacePageSpacing(isLayoutRtl));
+ workspace.setPageSpacing(getWorkspacePageSpacing());
// Layout the hotseat
View hotseat = launcher.findViewById(R.id.hotseat);
@@ -503,7 +431,7 @@
// Vertical hotseat -- The hotseat is fixed in the layout to be on the right of the
// screen regardless of RTL
lp.gravity = Gravity.RIGHT;
- lp.width = normalHotseatBarHeightPx;
+ lp.width = hotseatBarHeightPx;
lp.height = LayoutParams.MATCH_PARENT;
hotseat.findViewById(R.id.layout).setPadding(0, 2 * edgeMarginPx, 0, 2 * edgeMarginPx);
} else if (isTablet) {
diff --git a/src/com/android/launcher3/DropTargetBar.java b/src/com/android/launcher3/DropTargetBar.java
new file mode 100644
index 0000000..5966af5
--- /dev/null
+++ b/src/com/android/launcher3/DropTargetBar.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+package com.android.launcher3;
+
+import android.animation.TimeInterpolator;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewDebug;
+import android.view.ViewPropertyAnimator;
+import android.view.accessibility.AccessibilityManager;
+import android.view.animation.AccelerateInterpolator;
+import android.widget.LinearLayout;
+
+import com.android.launcher3.dragndrop.DragController;
+
+/*
+ * The top bar containing various drop targets: Delete/App Info/Uninstall.
+ */
+public class DropTargetBar extends LinearLayout implements DragController.DragListener {
+
+ protected static final int DEFAULT_DRAG_FADE_DURATION = 175;
+ protected static final TimeInterpolator DEFAULT_INTERPOLATOR = new AccelerateInterpolator();
+
+ private final Runnable mFadeAnimationEndRunnable = new Runnable() {
+
+ @Override
+ public void run() {
+ AccessibilityManager am = (AccessibilityManager)
+ getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
+ boolean accessibilityEnabled = am.isEnabled();
+ AlphaUpdateListener.updateVisibility(DropTargetBar.this, accessibilityEnabled);
+ }
+ };
+
+ @ViewDebug.ExportedProperty(category = "launcher")
+ protected boolean mDeferOnDragEnd;
+
+ @ViewDebug.ExportedProperty(category = "launcher")
+ protected boolean mVisible = false;
+
+ private ViewPropertyAnimator mCurrentAnimation;
+
+ // Drop targets
+ private ButtonDropTarget mDeleteDropTarget;
+ private ButtonDropTarget mAppInfoDropTarget;
+ private ButtonDropTarget mUninstallDropTarget;
+
+ public DropTargetBar(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public DropTargetBar(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+
+ // Get the individual components
+ mDeleteDropTarget = (ButtonDropTarget) findViewById(R.id.delete_target_text);
+ mAppInfoDropTarget = (ButtonDropTarget) findViewById(R.id.info_target_text);
+ mUninstallDropTarget = (ButtonDropTarget) findViewById(R.id.uninstall_target_text);
+
+ mDeleteDropTarget.setDropTargetBar(this);
+ mAppInfoDropTarget.setDropTargetBar(this);
+ mUninstallDropTarget.setDropTargetBar(this);
+
+ // Initialize with hidden state
+ setAlpha(0f);
+ }
+
+ public void setup(DragController dragController) {
+ dragController.addDragListener(this);
+ dragController.setFlingToDeleteDropTarget(mDeleteDropTarget);
+
+ dragController.addDragListener(mDeleteDropTarget);
+ dragController.addDragListener(mAppInfoDropTarget);
+ dragController.addDragListener(mUninstallDropTarget);
+
+ dragController.addDropTarget(mDeleteDropTarget);
+ dragController.addDropTarget(mAppInfoDropTarget);
+ dragController.addDropTarget(mUninstallDropTarget);
+ }
+
+ private void animateToVisibility(boolean isVisible) {
+ if (mVisible != isVisible) {
+ mVisible = isVisible;
+
+ // Cancel any existing animation
+ if (mCurrentAnimation != null) {
+ mCurrentAnimation.cancel();
+ mCurrentAnimation = null;
+ }
+
+ float finalAlpha = mVisible ? 1 : 0;
+ if (Float.compare(getAlpha(), finalAlpha) != 0) {
+ setVisibility(View.VISIBLE);
+ mCurrentAnimation = animate().alpha(finalAlpha)
+ .setInterpolator(DEFAULT_INTERPOLATOR)
+ .setDuration(DEFAULT_DRAG_FADE_DURATION)
+ .withEndAction(mFadeAnimationEndRunnable);
+ }
+
+ }
+ }
+
+ public void enableAccessibleDrag(boolean enable) {
+ mDeleteDropTarget.enableAccessibleDrag(enable);
+ mAppInfoDropTarget.enableAccessibleDrag(enable);
+ mUninstallDropTarget.enableAccessibleDrag(enable);
+ }
+
+ /*
+ * DragController.DragListener implementation
+ */
+ @Override
+ public void onDragStart(DragSource source, ItemInfo info, int dragAction) {
+ animateToVisibility(true);
+ }
+
+ /**
+ * This is called to defer hiding the delete drop target until the drop animation has completed,
+ * instead of hiding immediately when the drag has ended.
+ */
+ protected void deferOnDragEnd() {
+ mDeferOnDragEnd = true;
+ }
+
+ @Override
+ public void onDragEnd() {
+ if (!mDeferOnDragEnd) {
+ animateToVisibility(false);
+ } else {
+ mDeferOnDragEnd = false;
+ }
+ }
+}
diff --git a/src/com/android/launcher3/FocusHelper.java b/src/com/android/launcher3/FocusHelper.java
index f99c08a..0b9e4ac 100644
--- a/src/com/android/launcher3/FocusHelper.java
+++ b/src/com/android/launcher3/FocusHelper.java
@@ -356,7 +356,7 @@
CellLayout iconLayout = (CellLayout) parent.getParent();
final Workspace workspace = (Workspace) iconLayout.getParent();
final ViewGroup dragLayer = (ViewGroup) workspace.getParent();
- final ViewGroup tabs = (ViewGroup) dragLayer.findViewById(R.id.search_drop_target_bar);
+ final ViewGroup tabs = (ViewGroup) dragLayer.findViewById(R.id.drop_target_bar);
final Hotseat hotseat = (Hotseat) dragLayer.findViewById(R.id.hotseat);
final ItemInfo itemInfo = (ItemInfo) v.getTag();
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 13690b4..e1d292c 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -252,8 +252,7 @@
private View mAllAppsButton;
private View mWidgetsButton;
- private SearchDropTargetBar mSearchDropTargetBar;
- private AppInfoDropTargetBar mAppInfoDropTargetBar;
+ private DropTargetBar mDropTargetBar;
// Main container view for the all apps screen.
@Thunk AllAppsContainerView mAppsView;
@@ -435,8 +434,6 @@
setContentView(R.layout.launcher);
- app.getInvariantDeviceProfile().landscapeProfile.setSearchBarHeight(getSearchBarHeight());
- app.getInvariantDeviceProfile().portraitProfile.setSearchBarHeight(getSearchBarHeight());
setupViews();
mDeviceProfile.layout(this);
mExtractedColors = new ExtractedColors();
@@ -1374,11 +1371,7 @@
mDragController.addDragListener(mWorkspace);
// Get the search/delete/uninstall bar
- mSearchDropTargetBar = (SearchDropTargetBar)
- mDragLayer.findViewById(R.id.search_drop_target_bar);
- // Get the app info bar
- mAppInfoDropTargetBar = (AppInfoDropTargetBar)
- mDragLayer.findViewById(R.id.app_info_drop_target_bar);
+ mDropTargetBar = (DropTargetBar) mDragLayer.findViewById(R.id.drop_target_bar);
// Setup Apps and Widgets
mAppsView = (AllAppsContainerView) findViewById(R.id.apps_view);
@@ -1394,12 +1387,7 @@
mDragController.setScrollView(mDragLayer);
mDragController.setMoveTarget(mWorkspace);
mDragController.addDropTarget(mWorkspace);
- if (mSearchDropTargetBar != null) {
- mSearchDropTargetBar.setup(this, mDragController);
- }
- if (mAppInfoDropTargetBar != null) {
- mAppInfoDropTargetBar.setup(this, mDragController);
- }
+ mDropTargetBar.setup(mDragController);
if (TestingUtils.MEMORY_DUMP_ENABLED) {
TestingUtils.addWeightWatcher(this);
@@ -1808,12 +1796,8 @@
return mOverviewPanel;
}
- public SearchDropTargetBar getSearchDropTargetBar() {
- return mSearchDropTargetBar;
- }
-
- public AppInfoDropTargetBar getAppInfoDropTargetBar() {
- return mAppInfoDropTargetBar;
+ public DropTargetBar getDropTargetBar() {
+ return mDropTargetBar;
}
public LauncherAppWidgetHost getAppWidgetHost() {
@@ -4039,11 +4023,6 @@
return mDeviceProfile.isVerticalBarLayout();
}
- /** Returns the search bar bounds in pixels. */
- protected Rect getSearchBarBounds() {
- return mDeviceProfile.getSearchBarBounds(Utilities.isRtl(getResources()));
- }
-
public int getSearchBarHeight() {
if (mLauncherCallbacks != null) {
return mLauncherCallbacks.getSearchBarHeight();
diff --git a/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java b/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java
index 28d8052..f245cd3 100644
--- a/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java
+++ b/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java
@@ -63,9 +63,8 @@
LauncherAppState app = LauncherAppState.getInstance();
InvariantDeviceProfile idp = app.getInvariantDeviceProfile();
- // We only care out the cell size, which is independent of the the layout direction.
- Rect paddingLand = idp.landscapeProfile.getWorkspacePadding(false /* isLayoutRtl */);
- Rect paddingPort = idp.portraitProfile.getWorkspacePadding(false /* isLayoutRtl */);
+ Rect paddingLand = idp.landscapeProfile.getWorkspacePadding();
+ Rect paddingPort = idp.portraitProfile.getWorkspacePadding();
// Always assume we're working with the smallest span to make sure we
// reserve enough space in both orientations.
diff --git a/src/com/android/launcher3/LauncherStateTransitionAnimation.java b/src/com/android/launcher3/LauncherStateTransitionAnimation.java
index 41e30b1..b409174 100644
--- a/src/com/android/launcher3/LauncherStateTransitionAnimation.java
+++ b/src/com/android/launcher3/LauncherStateTransitionAnimation.java
@@ -460,12 +460,6 @@
Animator workspaceAnim = mLauncher.startWorkspaceStateChangeAnimation(toWorkspaceState,
animated, layerViews);
- // Animate the search bar
- final SearchDropTargetBar.State toSearchBarState =
- toWorkspaceState.searchDropTargetBarState;
- mLauncher.getSearchDropTargetBar().animateToState(toSearchBarState,
- animated ? revealDuration : 0, animation);
-
if (animated && initialized) {
// Play the workspace animation
if (workspaceAnim != null) {
diff --git a/src/com/android/launcher3/SearchDropTargetBar.java b/src/com/android/launcher3/SearchDropTargetBar.java
deleted file mode 100644
index e43e96c..0000000
--- a/src/com/android/launcher3/SearchDropTargetBar.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.launcher3;
-
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.animation.TimeInterpolator;
-import android.content.Context;
-import android.graphics.Rect;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewDebug;
-import android.view.animation.DecelerateInterpolator;
-
-import com.android.launcher3.dragndrop.DragController;
-import com.android.launcher3.util.Thunk;
-
-/*
- * This bar will manage the transition between the QSB search bar and the delete/uninstall drop
- * targets so that each of the individual ButtonDropTargets don't have to.
- */
-public class SearchDropTargetBar extends BaseDropTargetBar {
-
- /** The different states that the search bar space can be in. */
- public enum State {
- INVISIBLE (0f),
- DROP_TARGET (1f);
-
- private final float mDropTargetBarAlpha;
-
- State(float dtbAlpha) {
- mDropTargetBarAlpha = dtbAlpha;
- }
- }
-
-
- @ViewDebug.ExportedProperty(category = "launcher")
- private State mState = State.INVISIBLE;
-
- // Drop targets
- private ButtonDropTarget mDeleteDropTarget;
- private ButtonDropTarget mUninstallDropTarget;
-
- public SearchDropTargetBar(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public SearchDropTargetBar(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
-
- // Get the individual components
- mDeleteDropTarget = (ButtonDropTarget) mDropTargetBar.findViewById(R.id.delete_target_text);
- mUninstallDropTarget = (ButtonDropTarget) mDropTargetBar
- .findViewById(R.id.uninstall_target_text);
-
- mDeleteDropTarget.setDropTargetBar(this);
- mUninstallDropTarget.setDropTargetBar(this);
- }
-
- @Override
- public void setup(Launcher launcher, DragController dragController) {
- dragController.addDragListener(this);
- dragController.setFlingToDeleteDropTarget(mDeleteDropTarget);
-
- dragController.addDragListener(mDeleteDropTarget);
- dragController.addDragListener(mUninstallDropTarget);
-
- dragController.addDropTarget(mDeleteDropTarget);
- dragController.addDropTarget(mUninstallDropTarget);
-
- mDeleteDropTarget.setLauncher(launcher);
- mUninstallDropTarget.setLauncher(launcher);
- }
-
- @Override
- public void showDropTargets() {
- animateToState(State.DROP_TARGET, DEFAULT_DRAG_FADE_DURATION);
- }
-
- @Override
- public void hideDropTargets() {
- animateToState(State.INVISIBLE, DEFAULT_DRAG_FADE_DURATION);
- }
-
- /**
- * Animates the current search bar state to a new state. If the {@param duration} is 0, then
- * the state is applied immediately.
- */
- public void animateToState(State newState, int duration) {
- animateToState(newState, duration, null);
- }
-
- public void animateToState(State newState, int duration, AnimatorSet animation) {
- if (mState != newState) {
- mState = newState;
-
- resetAnimation(duration);
- if (duration > 0) {
- animateAlpha(mDropTargetBar, mState.mDropTargetBarAlpha, DEFAULT_INTERPOLATOR);
- } else {
- mDropTargetBar.setAlpha(mState.mDropTargetBarAlpha);
- AlphaUpdateListener.updateVisibility(mDropTargetBar, mAccessibilityEnabled);
- }
-
- // Start the final animation
- if (duration > 0) {
- if (animation != null) {
- animation.play(mCurrentAnimation);
- } else {
- mCurrentAnimation.start();
- }
- }
- }
- }
-
- @Override
- public void enableAccessibleDrag(boolean enable) {
- mDeleteDropTarget.enableAccessibleDrag(enable);
- mUninstallDropTarget.enableAccessibleDrag(enable);
- }
-}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index da262ca..dd487fd 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -176,26 +176,22 @@
private Matrix mTempMatrix = new Matrix();
private SpringLoadedDragController mSpringLoadedDragController;
- private float mSpringLoadedShrinkFactor;
private float mOverviewModeShrinkFactor;
// State variable that indicates whether the pages are small (ie when you're
// in all apps or customize mode)
enum State {
- NORMAL (SearchDropTargetBar.State.INVISIBLE, false, false),
- NORMAL_HIDDEN (SearchDropTargetBar.State.INVISIBLE, false, false),
- SPRING_LOADED (SearchDropTargetBar.State.DROP_TARGET, false, true),
- OVERVIEW (SearchDropTargetBar.State.INVISIBLE, true, true),
- OVERVIEW_HIDDEN (SearchDropTargetBar.State.INVISIBLE, true, false);
+ NORMAL (false, false),
+ NORMAL_HIDDEN (false, false),
+ SPRING_LOADED (false, true),
+ OVERVIEW (true, true),
+ OVERVIEW_HIDDEN (true, false);
- public final SearchDropTargetBar.State searchDropTargetBarState;
public final boolean shouldUpdateWidget;
public final boolean hasMultipleVisiblePages;
- State(SearchDropTargetBar.State searchBarState, boolean shouldUpdateWidget,
- boolean hasMultipleVisiblePages) {
- searchDropTargetBarState = searchBarState;
+ State(boolean shouldUpdateWidget, boolean hasMultipleVisiblePages) {
this.shouldUpdateWidget = shouldUpdateWidget;
this.hasMultipleVisiblePages = hasMultipleVisiblePages;
}
@@ -316,9 +312,6 @@
mWallpaperManager = WallpaperManager.getInstance(context);
mWallpaperOffset = new WallpaperOffsetInterpolator(this);
-
- mSpringLoadedShrinkFactor =
- res.getInteger(R.integer.config_workspaceSpringLoadShrinkPercentage) / 100.0f;
mOverviewModeShrinkFactor =
res.getInteger(R.integer.config_workspaceOverviewShrinkPercentage) / 100f;
@@ -347,6 +340,7 @@
// estimate the size of a widget with spans hSpan, vSpan. return MAX_VALUE for each
// dimension if unsuccessful
public int[] estimateItemSize(ItemInfo itemInfo, boolean springLoaded) {
+ float shrinkFactor = mLauncher.getDeviceProfile().workspaceSpringLoadShrinkFactor;
int[] size = new int[2];
if (getChildCount() > 0) {
// Use the first non-custom page to estimate the child position
@@ -355,8 +349,8 @@
size[0] = r.width();
size[1] = r.height();
if (springLoaded) {
- size[0] *= mSpringLoadedShrinkFactor;
- size[1] *= mSpringLoadedShrinkFactor;
+ size[0] *= shrinkFactor;
+ size[1] *= shrinkFactor;
}
return size;
} else {
@@ -1380,7 +1374,6 @@
// TODO(adamcohen): figure out a final effect here. We may need to recommend
// different effects based on device performance. On at least one relatively high-end
// device I've tried, translating the launcher causes things to get quite laggy.
- setTranslationAndAlpha(mLauncher.getSearchDropTargetBar(), transX, alpha);
setTranslationAndAlpha(getPageIndicator(), transX, alpha);
setTranslationAndAlpha(getChildAt(getCurrentPage()), transX, alpha);
setTranslationAndAlpha(mLauncher.getHotseat(), transX, alpha);
@@ -1536,8 +1529,7 @@
// Reset our click listener
setOnClickListener(mLauncher);
}
- mLauncher.getSearchDropTargetBar().enableAccessibleDrag(enable);
- mLauncher.getAppInfoDropTargetBar().enableAccessibleDrag(enable);
+ mLauncher.getDropTargetBar().enableAccessibleDrag(enable);
mLauncher.getHotseat().getLayout()
.enableAccessibleDrag(enable, CellLayout.WORKSPACE_ACCESSIBILITY_DRAG);
}
@@ -1938,7 +1930,7 @@
int getOverviewModeTranslationY() {
DeviceProfile grid = mLauncher.getDeviceProfile();
- Rect workspacePadding = grid.getWorkspacePadding(Utilities.isRtl(getResources()));
+ Rect workspacePadding = grid.getWorkspacePadding();
int overviewButtonBarHeight = grid.getOverviewModeButtonBarHeight();
int scaledHeight = (int) (mOverviewModeShrinkFactor * getNormalChildHeight());
@@ -1951,15 +1943,26 @@
return -workspaceOffsetTopEdge + overviewOffsetTopEdge;
}
- int getSpringLoadedTranslationY() {
+ float getSpringLoadedTranslationY() {
DeviceProfile grid = mLauncher.getDeviceProfile();
- Rect workspacePadding = grid.getWorkspacePadding(Utilities.isRtl(getResources()));
- int scaledHeight = (int) (mSpringLoadedShrinkFactor * getNormalChildHeight());
- int workspaceTop = mInsets.top + workspacePadding.top;
- int workspaceBottom = getViewportHeight() - mInsets.bottom - workspacePadding.bottom;
- int workspaceHeight = workspaceBottom - workspaceTop;
- // Center the spring-loaded pages by translating it up by half of the reduced height.
- return -(workspaceHeight - scaledHeight) / 2;
+ if (grid.isVerticalBarLayout() || getChildCount() == 0) {
+ return 0;
+ }
+ Rect workspacePadding = grid.getWorkspacePadding();
+
+ float scaledHeight = grid.workspaceSpringLoadShrinkFactor * getNormalChildHeight();
+ float shrunkTop = mInsets.top + grid.dropTargetBarSizePx;
+ float shrunkBottom = getViewportHeight() - mInsets.bottom
+ - workspacePadding.bottom - grid.workspaceSpringLoadedBottomSpace;
+ float totalShrunkSpace = shrunkBottom - shrunkTop;
+
+ float desiredCellTop = shrunkTop + (totalShrunkSpace - scaledHeight) / 2;
+
+ float halfHeight = getHeight() / 2;
+ float myCenter = getTop() + halfHeight;
+ float cellTopFromCenter = halfHeight - getChildAt(0).getTop();
+ float actualCellTop = myCenter - cellTopFromCenter * grid.workspaceSpringLoadShrinkFactor;
+ return (desiredCellTop - actualCellTop) / grid.workspaceSpringLoadShrinkFactor;
}
float getOverviewModeShrinkFactor() {
diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
index e268640..0f437c1 100644
--- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
+++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
@@ -211,8 +211,7 @@
mOverviewTransitionTime = res.getInteger(R.integer.config_overviewTransitionTime);
mOverlayTransitionTime = res.getInteger(R.integer.config_overlayTransitionTime);
mSpringLoadedTransitionTime = mOverlayTransitionTime / 2;
- mSpringLoadedShrinkFactor =
- res.getInteger(R.integer.config_workspaceSpringLoadShrinkPercentage) / 100f;
+ mSpringLoadedShrinkFactor = mLauncher.getDeviceProfile().workspaceSpringLoadShrinkFactor;
mOverviewModeShrinkFactor =
res.getInteger(R.integer.config_workspaceOverviewShrinkPercentage) / 100f;
mWorkspaceScrimAlpha = res.getInteger(R.integer.config_workspaceScrimAlpha) / 100f;
diff --git a/src/com/android/launcher3/dragndrop/DragLayer.java b/src/com/android/launcher3/dragndrop/DragLayer.java
index e4c8436..94cce44 100644
--- a/src/com/android/launcher3/dragndrop/DragLayer.java
+++ b/src/com/android/launcher3/dragndrop/DragLayer.java
@@ -29,7 +29,6 @@
import android.graphics.Region;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
-import android.util.Log;
import android.view.DragEvent;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -52,7 +51,7 @@
import com.android.launcher3.LauncherAppWidgetHostView;
import com.android.launcher3.PinchToOverviewListener;
import com.android.launcher3.R;
-import com.android.launcher3.SearchDropTargetBar;
+import com.android.launcher3.DropTargetBar;
import com.android.launcher3.ShortcutAndWidgetContainer;
import com.android.launcher3.Utilities;
import com.android.launcher3.Workspace;
@@ -184,31 +183,17 @@
private boolean isEventOverFolderTextRegion(Folder folder, MotionEvent ev) {
getDescendantRectRelativeToSelf(folder.getEditTextRegion(), mHitRect);
- if (mHitRect.contains((int) ev.getX(), (int) ev.getY())) {
- return true;
- }
- return false;
+ return mHitRect.contains((int) ev.getX(), (int) ev.getY());
}
private boolean isEventOverFolder(Folder folder, MotionEvent ev) {
getDescendantRectRelativeToSelf(folder, mHitRect);
- if (mHitRect.contains((int) ev.getX(), (int) ev.getY())) {
- return true;
- }
- return false;
+ return mHitRect.contains((int) ev.getX(), (int) ev.getY());
}
private boolean isEventOverDropTargetBar(MotionEvent ev) {
- getDescendantRectRelativeToSelf(mLauncher.getSearchDropTargetBar(), mHitRect);
- if (mHitRect.contains((int) ev.getX(), (int) ev.getY())) {
- return true;
- }
-
- getDescendantRectRelativeToSelf(mLauncher.getAppInfoDropTargetBar(), mHitRect);
- if (mHitRect.contains((int) ev.getX(), (int) ev.getY())) {
- return true;
- }
- return false;
+ getDescendantRectRelativeToSelf(mLauncher.getDropTargetBar(), mHitRect);
+ return mHitRect.contains((int) ev.getX(), (int) ev.getY());
}
private boolean handleTouchDown(MotionEvent ev, boolean intercept) {
@@ -356,7 +341,7 @@
return super.onRequestSendAccessibilityEvent(child, event);
}
- if (isInAccessibleDrag() && child instanceof SearchDropTargetBar) {
+ if (isInAccessibleDrag() && child instanceof DropTargetBar) {
return super.onRequestSendAccessibilityEvent(child, event);
}
// Skip propagating onRequestSendAccessibilityEvent all for other children
@@ -374,8 +359,7 @@
childrenForAccessibility.add(currentFolder);
if (isInAccessibleDrag()) {
- childrenForAccessibility.add(mLauncher.getSearchDropTargetBar());
- childrenForAccessibility.add(mLauncher.getAppInfoDropTargetBar());
+ childrenForAccessibility.add(mLauncher.getDropTargetBar());
}
} else {
super.addChildrenForAccessibility(childrenForAccessibility);
diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java
index 6df296e..af93707 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -318,7 +318,7 @@
@Override
public void enableAccessibleDrag(boolean enable) {
- mLauncher.getSearchDropTargetBar().enableAccessibleDrag(enable);
+ mLauncher.getDropTargetBar().enableAccessibleDrag(enable);
for (int i = 0; i < mContent.getChildCount(); i++) {
mContent.getPageAt(i).enableAccessibleDrag(enable, CellLayout.FOLDER_ACCESSIBILITY_DRAG);
}
@@ -1054,7 +1054,7 @@
int top = Math.min(Math.max(sTempRect.top, centeredTop),
sTempRect.top + sTempRect.height() - height);
- int distFromEdgeOfScreen = grid.getWorkspacePadding(isLayoutRtl()).left + getPaddingLeft();
+ int distFromEdgeOfScreen = grid.getWorkspacePadding().left + getPaddingLeft();
if (grid.isPhone && (grid.availableWidthPx - width) < 4 * distFromEdgeOfScreen) {
// Center the folder if it is very close to being centered anyway, by virtue of
@@ -1093,7 +1093,7 @@
private int getContentAreaHeight() {
DeviceProfile grid = mLauncher.getDeviceProfile();
- Rect workspacePadding = grid.getWorkspacePadding(mContent.mIsRtl);
+ Rect workspacePadding = grid.getWorkspacePadding();
int maxContentAreaHeight = grid.availableHeightPx -
workspacePadding.top - workspacePadding.bottom -
mFooterHeight;