am e6556396: Merge "Accounting for recent changes in padding when detecting backgound taps to close AllApps." into ub-launcher3-burnaby

* commit 'e655639609f3e6ae3124034860f975a66026a832':
  Accounting for recent changes in padding when detecting backgound taps to close AllApps.
This commit is contained in:
Winson Chung
2015-04-17 23:02:23 +00:00
committed by Android Git Automerger
3 changed files with 65 additions and 19 deletions
@@ -196,21 +196,6 @@ public class AppsContainerRecyclerView extends RecyclerView
}
break;
case MotionEvent.ACTION_UP:
ViewConfiguration viewConfig = ViewConfiguration.get(getContext());
float dx = ev.getX() - mDownX;
float dy = ev.getY() - mDownY;
float distance = (float) Math.sqrt(dx * dx + dy * dy);
if (distance < viewConfig.getScaledTouchSlop()) {
Rect backgroundPadding = new Rect();
getBackground().getPadding(backgroundPadding);
boolean isOutsideBounds = ev.getX() < backgroundPadding.left ||
ev.getX() > (getWidth() - backgroundPadding.right);
if (isOutsideBounds) {
Launcher launcher = (Launcher) getContext();
launcher.showWorkspace(true);
}
}
// Fall through
case MotionEvent.ACTION_CANCEL:
mDraggingFastScroller = false;
animateFastScrollerVisibility(false);
@@ -64,7 +64,8 @@ public class AppsContainerView extends FrameLayout implements DragSource, Insett
private EditText mSearchBarView;
private int mNumAppsPerRow;
private Point mLastTouchDownPos = new Point();
private Point mLastTouchDownPos = new Point(-1, -1);
private Point mLastTouchPos = new Point();
private Rect mInsets = new Rect();
private Rect mFixedBounds = new Rect();
private int mContentMarginStart;
@@ -235,12 +236,22 @@ public class AppsContainerView extends FrameLayout implements DragSource, Insett
updatePaddings();
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return handleTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return handleTouchEvent(ev);
}
@Override
public boolean onTouch(View v, MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
mLastTouchDownPos.set((int) ev.getX(), (int) ev.getY());
mLastTouchPos.set((int) ev.getX(), (int) ev.getY());
break;
}
return false;
@@ -257,7 +268,7 @@ public class AppsContainerView extends FrameLayout implements DragSource, Insett
if (!mLauncher.isDraggingEnabled()) return false;
// Start the drag
mLauncher.getWorkspace().beginDragShared(v, mLastTouchDownPos, this, false);
mLauncher.getWorkspace().beginDragShared(v, mLastTouchPos, this, false);
// We delay entering spring-loaded mode slightly to make sure the UI
// thready is free of any work.
@@ -429,6 +440,54 @@ public class AppsContainerView extends FrameLayout implements DragSource, Insett
}
}
/**
* Handles the touch events to dismiss all apps when clicking outside the bounds of the
* recycler view.
*/
private boolean handleTouchEvent(MotionEvent ev) {
LauncherAppState app = LauncherAppState.getInstance();
DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
if (!mFixedBounds.isEmpty()) {
// Outset the fixed bounds and check if the touch is outside all apps
Rect tmpRect = new Rect(mFixedBounds);
tmpRect.inset(-grid.allAppsIconSizePx / 2, 0);
if (ev.getX() < tmpRect.left || ev.getX() > tmpRect.right) {
mLastTouchDownPos.set((int) ev.getX(), (int) ev.getY());
return true;
}
} else {
// Check if the touch is outside all apps
if (ev.getX() < getPaddingLeft() ||
ev.getX() > (getWidth() - getPaddingRight())) {
mLastTouchDownPos.set((int) ev.getX(), (int) ev.getY());
return true;
}
}
break;
case MotionEvent.ACTION_UP:
if (mLastTouchDownPos.x > -1) {
ViewConfiguration viewConfig = ViewConfiguration.get(getContext());
float dx = ev.getX() - mLastTouchDownPos.x;
float dy = ev.getY() - mLastTouchDownPos.y;
float distance = (float) Math.hypot(dx, dy);
if (distance < viewConfig.getScaledTouchSlop()) {
// The background was clicked, so just go home
Launcher launcher = (Launcher) getContext();
launcher.showWorkspace(true);
return true;
}
}
// Fall through
case MotionEvent.ACTION_CANCEL:
mLastTouchDownPos.set(-1, -1);
break;
}
return false;
}
/**
* Update the padding of the Apps view and children. To ensure that the RecyclerView has the
* full width to handle touches right to the edge of the screen, we only apply the top and
+3 -1
View File
@@ -2265,7 +2265,9 @@ public class Workspace extends SmoothPagedView
float finalHotseatAndPageIndicatorAlpha = (stateIsNormal || stateIsSpringLoaded) ? 1f : 0f;
float finalOverviewPanelAlpha = stateIsOverview ? 1f : 0f;
// We keep the search bar visible on the workspace and in AllApps now
float finalSearchBarAlpha = (stateIsNormal || stateIsNormalHidden) ? 1f : 0f;
boolean showSearchBar = stateIsNormal ||
(mLauncher.isAllAppsSearchOverridden() && stateIsNormalHidden);
float finalSearchBarAlpha = showSearchBar ? 1f : 0f;
float finalWorkspaceTranslationY = stateIsOverview || stateIsOverviewHidden ?
getOverviewModeTranslationY() : 0;