Merge "Making the page spacing fixed in spring loaded mode. (Bug 6478409)" into jb-dev
This commit is contained in:
@@ -46,6 +46,7 @@
|
||||
<dimen name="hotseat_height_gap">-1dp</dimen>
|
||||
<dimen name="workspace_overscroll_drawable_padding">0dp</dimen>
|
||||
<dimen name="workspace_icon_text_size">12sp</dimen>
|
||||
<dimen name="workspace_spring_loaded_page_spacing">15dp</dimen>
|
||||
|
||||
<dimen name="app_icon_drawable_padding">6dp</dimen>
|
||||
<dimen name="app_icon_drawable_padding_land">2dp</dimen>
|
||||
|
||||
@@ -75,6 +75,8 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
|
||||
private static final int MIN_SNAP_VELOCITY = 1500;
|
||||
private static final int MIN_FLING_VELOCITY = 250;
|
||||
|
||||
static final int AUTOMATIC_PAGE_SPACING = -1;
|
||||
|
||||
protected int mFlingThresholdVelocity;
|
||||
protected int mMinFlingVelocity;
|
||||
protected int mMinSnapVelocity;
|
||||
@@ -450,17 +452,23 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
|
||||
|
||||
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
|
||||
final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
|
||||
final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
|
||||
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
|
||||
if (widthMode != MeasureSpec.EXACTLY) {
|
||||
throw new IllegalStateException("Workspace can only be used in EXACTLY mode.");
|
||||
}
|
||||
|
||||
// Return early if we aren't given a proper dimension
|
||||
if (widthSize <= 0 || heightSize <= 0) {
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Allow the height to be set as WRAP_CONTENT. This allows the particular case
|
||||
* of the All apps view on XLarge displays to not take up more space then it needs. Width
|
||||
* is still not allowed to be set as WRAP_CONTENT since many parts of the code expect
|
||||
* each page to have the same width.
|
||||
*/
|
||||
final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
|
||||
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
|
||||
int maxChildHeight = 0;
|
||||
|
||||
final int verticalPadding = getPaddingTop() + getPaddingBottom();
|
||||
@@ -507,12 +515,17 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
|
||||
|
||||
setMeasuredDimension(widthSize, heightSize);
|
||||
|
||||
// We can't call getChildOffset/getRelativeChildOffset until we set the measured dimensions.
|
||||
// We also wait until we set the measured dimensions before flushing the cache as well, to
|
||||
// ensure that the cache is filled with good values.
|
||||
invalidateCachedOffsets();
|
||||
|
||||
if (childCount > 0) {
|
||||
if (DEBUG) Log.d(TAG, "getRelativeChildOffset(): " + getMeasuredWidth() + ", "
|
||||
+ getChildWidth(0));
|
||||
|
||||
// Calculate the variable page spacing if necessary
|
||||
if (mPageSpacing < 0) {
|
||||
if (mPageSpacing == AUTOMATIC_PAGE_SPACING) {
|
||||
// The gap between pages in the PagedView should be equal to the gap from the page
|
||||
// to the edge of the screen (so it is not visible in the current screen). To
|
||||
// account for unequal padding on each side of the paged view, we take the maximum
|
||||
@@ -524,10 +537,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
|
||||
}
|
||||
}
|
||||
|
||||
// We can't call getChildOffset/getRelativeChildOffset until we set the measured dimensions.
|
||||
// We also wait until we set the measured dimensions before flushing the cache as well, to
|
||||
// ensure that the cache is filled with good values.
|
||||
invalidateCachedOffsets();
|
||||
updateScrollingIndicatorPosition();
|
||||
|
||||
if (childCount > 0) {
|
||||
|
||||
@@ -199,6 +199,7 @@ public class Workspace extends SmoothPagedView
|
||||
private Point mDisplaySize = new Point();
|
||||
private boolean mIsStaticWallpaper;
|
||||
private int mWallpaperTravelWidth;
|
||||
private int mSpringLoadedPageSpacing;
|
||||
|
||||
// Variables relating to the creation of user folders by hovering shortcuts over shortcuts
|
||||
private static final int FOLDER_CREATION_TIMEOUT = 0;
|
||||
@@ -322,6 +323,8 @@ public class Workspace extends SmoothPagedView
|
||||
|
||||
mSpringLoadedShrinkFactor =
|
||||
res.getInteger(R.integer.config_workspaceSpringLoadShrinkPercentage) / 100.0f;
|
||||
mSpringLoadedPageSpacing =
|
||||
res.getDimensionPixelSize(R.dimen.workspace_spring_loaded_page_spacing);
|
||||
|
||||
// if the value is manually specified, use that instead
|
||||
cellCountX = a.getInt(R.styleable.Workspace_cellCountX, cellCountX);
|
||||
@@ -1543,6 +1546,7 @@ public class Workspace extends SmoothPagedView
|
||||
|
||||
if (state != State.NORMAL) {
|
||||
finalScaleFactor = mSpringLoadedShrinkFactor - (stateIsSmall ? 0.1f : 0);
|
||||
setPageSpacing(mSpringLoadedPageSpacing);
|
||||
if (oldStateIsNormal && stateIsSmall) {
|
||||
zoomIn = false;
|
||||
setLayoutScale(finalScaleFactor);
|
||||
@@ -1552,6 +1556,7 @@ public class Workspace extends SmoothPagedView
|
||||
setLayoutScale(finalScaleFactor);
|
||||
}
|
||||
} else {
|
||||
setPageSpacing(PagedView.AUTOMATIC_PAGE_SPACING);
|
||||
setLayoutScale(1.0f);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user