Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1838c77 authored by Adam Cohen's avatar Adam Cohen Committed by Android (Google) Code Review
Browse files

Merge "- Made showNext() and showPrevious() on StackView remotable - Made...

Merge "- Made showNext() and showPrevious() on StackView remotable - Made StackView show the transition when showNext() or   showPrevious() is called"
parents adf840ea 3352b680
Loading
Loading
Loading
Loading
+53 −14
Original line number Diff line number Diff line
@@ -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;

@@ -261,6 +304,7 @@ public class StackView extends AdapterViewAnimator {
            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;