Merge "Maintaining separate alpha for x and y translations" into ub-launcher3-calgary

This commit is contained in:
Sunny Goyal
2016-06-21 17:46:56 +00:00
committed by Android (Google) Code Review
2 changed files with 41 additions and 19 deletions
+38 -17
View File
@@ -199,6 +199,21 @@ public class Workspace extends PagedView
}
}
// Direction used for moving the workspace and hotseat UI
public enum Direction {
X (TRANSLATION_X),
Y (TRANSLATION_Y);
private final Property<View, Float> viewProperty;
Direction(Property<View, Float> viewProperty) {
this.viewProperty = viewProperty;
}
}
private float[] mPageAlpha = new float[] {1, 1};
private float[] mHotseatAlpha = new float[] {1, 1};
@ViewDebug.ExportedProperty(category = "launcher")
private State mState = State.NORMAL;
private boolean mIsSwitchingState = false;
@@ -1388,50 +1403,56 @@ public class Workspace extends PagedView
// 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.
setWorkspaceTranslation(TRANSLATION_X, transX, alpha);
setHotseatTranslation(TRANSLATION_X, transX, alpha);
setWorkspaceTranslation(Direction.X, transX, alpha);
setHotseatTranslation(Direction.X, transX, alpha);
}
/**
* Moves the workspace UI in the provided direction.
* @param direction either {@link #TRANSLATION_X} or {@link #TRANSLATION_Y}
* @param translation the amound of shift.
* @param direction the direction to move the workspace
* @param translation the amount of shift.
* @param alpha the alpha for the workspace page
*/
public void setWorkspaceTranslation(
Property<View, Float> direction, float translation, float alpha) {
public void setWorkspaceTranslation(Direction direction, float translation, float alpha) {
Property<View, Float> property = direction.viewProperty;
mPageAlpha[direction.ordinal()] = alpha;
float finalAlpha = mPageAlpha[0] * mPageAlpha[1];
View currentChild = getChildAt(getCurrentPage());
if (currentChild != null) {
direction.set(currentChild, translation);
currentChild.setAlpha(alpha);
property.set(currentChild, translation);
currentChild.setAlpha(finalAlpha);
}
// When the animation finishes, reset all pages, just in case we missed a page.
if (Float.compare(translation, 0) == 0) {
for (int i = getChildCount() - 1; i >= 0; i--) {
View child = getChildAt(i);
direction.set(child, translation);
child.setAlpha(alpha);
property.set(child, translation);
child.setAlpha(finalAlpha);
}
}
}
/**
* Moves the Hotseat UI in the provided direction.
* @param direction either {@link #TRANSLATION_X} or {@link #TRANSLATION_Y}
* @param direction the direction to move the workspace
* @param translation the amound of shift.
* @param alpha the alpha for the hotseat page
*/
public void setHotseatTranslation(
Property<View, Float> direction, float translation, float alpha) {
public void setHotseatTranslation(Direction direction, float translation, float alpha) {
Property<View, Float> property = direction.viewProperty;
mHotseatAlpha[direction.ordinal()] = alpha;
float finalAlpha = mHotseatAlpha[0] * mHotseatAlpha[1];
View pageIndicator = getPageIndicator();
if (pageIndicator != null) {
direction.set(pageIndicator, translation);
pageIndicator.setAlpha(alpha);
property.set(pageIndicator, translation);
pageIndicator.setAlpha(finalAlpha);
}
direction.set(mLauncher.getHotseat(), translation);
mLauncher.getHotseat().setAlpha(alpha);
property.set(mLauncher.getHotseat(), translation);
mLauncher.getHotseat().setAlpha(finalAlpha);
}
@Override
@@ -18,6 +18,7 @@ import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherAnimUtils;
import com.android.launcher3.PagedView;
import com.android.launcher3.Workspace;
import com.android.launcher3.Workspace.Direction;
import com.android.launcher3.util.TouchController;
/**
@@ -222,10 +223,10 @@ public class AllAppsTransitionController implements TouchController, VerticalPul
mDecelInterpolator.getInterpolation(alpha))));
mAppsView.getContentView().setAlpha(alpha);
mAppsView.setTranslationY(progress);
mWorkspace.setWorkspaceTranslation(View.TRANSLATION_Y,
mWorkspace.setWorkspaceTranslation(Direction.Y,
PARALLAX_COEFFICIENT *(-mTranslation + progress),
mAccelInterpolator.getInterpolation(workspaceHotseatAlpha));
mWorkspace.setHotseatTranslation(View.TRANSLATION_Y, -mTranslation + progress,
mWorkspace.setHotseatTranslation(Direction.Y, -mTranslation + progress,
mAccelInterpolator.getInterpolation(workspaceHotseatAlpha));
}