summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2010-10-26 15:51:57 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-10-26 15:51:57 -0700
commite1838c773d45296dc4da6c325fea2d636b0fd0b4 (patch)
treefe9a38c58856ed2217ebcdea29e7a7aaf73f9104 /core
parentadf840ea0c41493fba9c4421918de080a2cfe71a (diff)
parent3352b6807f9b728b91cceb3ea5f2a065ace95da3 (diff)
downloadframeworks_base-e1838c773d45296dc4da6c325fea2d636b0fd0b4.zip
frameworks_base-e1838c773d45296dc4da6c325fea2d636b0fd0b4.tar.gz
frameworks_base-e1838c773d45296dc4da6c325fea2d636b0fd0b4.tar.bz2
Merge "- Made showNext() and showPrevious() on StackView remotable - Made StackView show the transition when showNext() or showPrevious() is called"
Diffstat (limited to 'core')
-rw-r--r--core/java/android/widget/StackView.java67
1 files changed, 53 insertions, 14 deletions
diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java
index 0e92eeb..e6d5984 100644
--- a/core/java/android/widget/StackView.java
+++ b/core/java/android/widget/StackView.java
@@ -114,6 +114,7 @@ public class StackView extends AdapterViewAnimator {
private int mTouchSlop;
private int mMaximumVelocity;
private VelocityTracker mVelocityTracker;
+ private boolean mTransitionIsSetup = false;
private static HolographicHelper sHolographicHelper;
private ImageView mHighlight;
@@ -225,6 +226,48 @@ public class StackView extends AdapterViewAnimator {
}
}
+ private void setupStackSlider(View v, int mode) {
+ mStackSlider.setMode(mode);
+ if (v != null) {
+ mHighlight.setImageBitmap(sHolographicHelper.createOutline(v));
+ mHighlight.setRotation(v.getRotation());
+ mHighlight.setTranslationY(v.getTranslationY());
+ mHighlight.bringToFront();
+ v.bringToFront();
+ mStackSlider.setView(v);
+
+ v.setVisibility(VISIBLE);
+ }
+ }
+
+ @Override
+ @android.view.RemotableViewMethod
+ public void showNext() {
+ if (!mTransitionIsSetup) {
+ View v = getViewAtRelativeIndex(1);
+ if (v != null) {
+ setupStackSlider(v, StackSlider.NORMAL_MODE);
+ mStackSlider.setYProgress(0);
+ mStackSlider.setXProgress(0);
+ }
+ }
+ super.showNext();
+ }
+
+ @Override
+ @android.view.RemotableViewMethod
+ public void showPrevious() {
+ if (!mTransitionIsSetup) {
+ View v = getViewAtRelativeIndex(0);
+ if (v != null) {
+ setupStackSlider(v, StackSlider.NORMAL_MODE);
+ mStackSlider.setYProgress(1);
+ mStackSlider.setXProgress(0);
+ }
+ }
+ super.showPrevious();
+ }
+
private void transformViewAtIndex(int index, View view) {
float maxPerpectiveShift = mMeasuredHeight * PERSPECTIVE_SHIFT_FACTOR;
@@ -256,11 +299,12 @@ public class StackView extends AdapterViewAnimator {
super.showOnly(childIndex, animate, onLayout);
// Here we need to make sure that the z-order of the children is correct
- for (int i = mCurrentWindowEnd; i >= mCurrentWindowStart; i--) {
+ for (int i = mCurrentWindowEnd; i >= mCurrentWindowStart; i--) {
int index = modulo(i, getWindowSize());
View v = mViewsMap.get(index).view;
if (v != null) v.bringToFront();
}
+ mTransitionIsSetup = false;
}
private void updateChildTransforms() {
@@ -364,29 +408,24 @@ public class StackView extends AdapterViewAnimator {
activeIndex = (swipeGestureType == GESTURE_SLIDE_DOWN) ? 1 : 0;
}
+ int stackMode;
if (mLoopViews) {
- mStackSlider.setMode(StackSlider.NORMAL_MODE);
+ stackMode = StackSlider.NORMAL_MODE;
} else if (mCurrentWindowStartUnbounded + activeIndex == -1) {
activeIndex++;
- mStackSlider.setMode(StackSlider.BEGINNING_OF_STACK_MODE);
+ stackMode = StackSlider.BEGINNING_OF_STACK_MODE;
} else if (mCurrentWindowStartUnbounded + activeIndex == mAdapter.getCount() - 1) {
- mStackSlider.setMode(StackSlider.END_OF_STACK_MODE);
+ stackMode = StackSlider.END_OF_STACK_MODE;
} else {
- mStackSlider.setMode(StackSlider.NORMAL_MODE);
+ stackMode = StackSlider.NORMAL_MODE;
}
+ mTransitionIsSetup = stackMode == StackSlider.NORMAL_MODE;
+
View v = getViewAtRelativeIndex(activeIndex);
if (v == null) return;
- mHighlight.setImageBitmap(sHolographicHelper.createOutline(v));
- mHighlight.setRotation(v.getRotation());
- mHighlight.setTranslationY(v.getTranslationY());
- mHighlight.bringToFront();
- v.bringToFront();
- mStackSlider.setView(v);
-
- if (swipeGestureType == GESTURE_SLIDE_DOWN)
- v.setVisibility(VISIBLE);
+ setupStackSlider(v, stackMode);
// We only register this gesture if we've made it this far without a problem
mSwipeGestureType = swipeGestureType;