-Added 3D effect to home screen scrolling

-Added background outline fade in / out
-Modified the feel of scrolling: now using quintic
 interpolator and modified the influence of
 scroll velocity

Change-Id: Ifddcab5223ac20be7d9f800ccf09442d9b4db781

Conflicts:

	src/com/android/launcher2/CellLayout.java
This commit is contained in:
Adam Cohen
2010-09-30 14:11:56 -07:00
parent 3fb4fc921f
commit f34bab59fc
8 changed files with 267 additions and 123 deletions
+19 -2
View File
@@ -73,11 +73,13 @@ public abstract class PagedView extends ViewGroup {
private float mDownMotionX;
private float mLastMotionX;
private float mLastMotionY;
private int mLastScreenCenter = -1;
protected final static int TOUCH_STATE_REST = 0;
protected final static int TOUCH_STATE_SCROLLING = 1;
protected final static int TOUCH_STATE_PREV_PAGE = 2;
protected final static int TOUCH_STATE_NEXT_PAGE = 3;
protected final static float ALPHA_QUANTIZE_LEVEL = 0.01f;
protected int mTouchState = TOUCH_STATE_REST;
@@ -367,7 +369,6 @@ public abstract class PagedView extends ViewGroup {
if (mDirtyPageAlpha || (mTouchState == TOUCH_STATE_SCROLLING) || !mScroller.isFinished()) {
int halfScreenSize = getMeasuredWidth() / 2;
int screenCenter = mScrollX + halfScreenSize;
final int childCount = getChildCount();
for (int i = 0; i < childCount; ++i) {
View layout = (View) getChildAt(i);
@@ -391,6 +392,12 @@ public abstract class PagedView extends ViewGroup {
dimAlpha = Math.max(0.0f, Math.min(1.0f, (dimAlpha * dimAlpha)));
float alpha = 1.0f - dimAlpha;
if (alpha < ALPHA_QUANTIZE_LEVEL) {
alpha = 0.0f;
} else if (alpha > 1.0f - ALPHA_QUANTIZE_LEVEL) {
alpha = 1.0f;
}
if (Float.compare(alpha, layout.getAlpha()) != 0) {
layout.setAlpha(alpha);
}
@@ -400,9 +407,19 @@ public abstract class PagedView extends ViewGroup {
}
}
protected void screenScrolled(int screenCenter) {
}
@Override
protected void dispatchDraw(Canvas canvas) {
updateAdjacentPagesAlpha();
int halfScreenSize = getMeasuredWidth() / 2;
int screenCenter = mScrollX + halfScreenSize;
if (screenCenter != mLastScreenCenter) {
screenScrolled(screenCenter);
updateAdjacentPagesAlpha();
mLastScreenCenter = screenCenter;
}
// Find out which screens are visible; as an optimization we only call draw on them
// As an optimization, this code assumes that all pages have the same width as the 0th