diff options
author | nebkat <nebkat@teamhacksung.org> | 2012-12-15 19:59:45 +0000 |
---|---|---|
committer | nebkat <nebkat@teamhacksung.org> | 2012-12-15 22:49:06 +0000 |
commit | 11b11c53a8638cbb0d26d7f55ca3d367b30f0cb2 (patch) | |
tree | e8be41c12621d1d93e55f9d37fa030ee21a16dbc /src/com/cyanogenmod/trebuchet/PagedView.java | |
parent | bbf4dd7599f8b60e48937cf16c9b1466f5466e97 (diff) | |
download | android_packages_apps_Trebuchet-11b11c53a8638cbb0d26d7f55ca3d367b30f0cb2.tar.gz android_packages_apps_Trebuchet-11b11c53a8638cbb0d26d7f55ca3d367b30f0cb2.tar.bz2 android_packages_apps_Trebuchet-11b11c53a8638cbb0d26d7f55ca3d367b30f0cb2.zip |
Transition Effects
Change-Id: I9191cad9ad9950144fffd75e5140ae11759eecc8
Diffstat (limited to 'src/com/cyanogenmod/trebuchet/PagedView.java')
-rw-r--r-- | src/com/cyanogenmod/trebuchet/PagedView.java | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/src/com/cyanogenmod/trebuchet/PagedView.java b/src/com/cyanogenmod/trebuchet/PagedView.java index 39f245f66..ec4a5fa00 100644 --- a/src/com/cyanogenmod/trebuchet/PagedView.java +++ b/src/com/cyanogenmod/trebuchet/PagedView.java @@ -99,7 +99,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc protected float mLastMotionXRemainder; protected float mLastMotionY; protected float mTotalMotionX; - private int mLastScreenCenter = -1; + private int mLastScreenScroll = -1; private int[] mChildOffsets; private int[] mChildRelativeOffsets; private int[] mChildOffsetsWithLayoutScale; @@ -158,6 +158,9 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc // If true, modify alpha of neighboring pages as user scrolls left/right protected boolean mFadeInAdjacentScreens = true; + // If true, mFadeInAdjacentScreens will be handled manually + protected boolean mHandleFadeInAdjacentScreens = false; + // It true, use a different slop parameter (pagingTouchSlop = 2 * touchSlop) for deciding // to switch to a new page protected boolean mUsePagingTouchSlop = true; @@ -655,17 +658,17 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc } } - protected void screenScrolled(int screenCenter) { + protected void screenScrolled(int screenScroll) { if (isScrollingIndicatorEnabled()) { updateScrollingIndicator(); } boolean isInOverscroll = mOverScrollX < 0 || mOverScrollX > mMaxScrollX; - if (mFadeInAdjacentScreens && !isInOverscroll) { + if (mFadeInAdjacentScreens && !isInOverscroll && !mHandleFadeInAdjacentScreens) { for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); if (child != null) { - float scrollProgress = getScrollProgress(screenCenter, child, i); + float scrollProgress = getScrollProgress(screenScroll, child, i); float alpha = 1 - Math.abs(scrollProgress); child.setAlpha(alpha); } @@ -780,22 +783,17 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc } protected boolean shouldDrawChild(View child) { - return child.getAlpha() > 0; + return child.getAlpha() > 0 && child.getVisibility() == VISIBLE; } @Override protected void dispatchDraw(Canvas canvas) { - int halfScreenSize = getMeasuredWidth() / 2; - // mOverScrollX is equal to getScrollX() when we're within the normal scroll range. - // Otherwise it is equal to the scaled overscroll position. - int screenCenter = mOverScrollX + halfScreenSize; - - if (screenCenter != mLastScreenCenter || mForceScreenScrolled) { + if (mOverScrollX != mLastScreenScroll || mForceScreenScrolled) { // set mForceScreenScrolled before calling screenScrolled so that screenScrolled can // set it for the next frame mForceScreenScrolled = false; - screenScrolled(screenCenter); - mLastScreenCenter = screenCenter; + screenScrolled(mOverScrollX); + mLastScreenScroll = mOverScrollX; } // Find out which screens are visible; as an optimization we only call draw on them @@ -1094,12 +1092,12 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc } } - protected float getScrollProgress(int screenCenter, View v, int page) { + protected float getScrollProgress(int screenScroll, View v, int page) { final int halfScreenSize = getMeasuredWidth() / 2; int totalDistance = getScaledMeasuredWidth(v) + mPageSpacing; - int delta = screenCenter - (getChildOffset(page) - - getRelativeChildOffset(page) + halfScreenSize); + int delta = screenScroll - (getChildOffset(page) - + getRelativeChildOffset(page)); float scrollProgress = delta / (totalDistance * 1.0f); scrollProgress = Math.min(scrollProgress, 1.0f); |