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

Commit 38893baa authored by Selim Cinek's avatar Selim Cinek Committed by Android Git Automerger
Browse files

am fed65a6b: Merge "Fixed issue on Keyguard camera icon, where dragging on it...

am fed65a6b: Merge "Fixed issue on Keyguard camera icon, where dragging on it did not properly trigger abortion of the camera animation."

* commit 'fed65a6b':
  Fixed issue on Keyguard camera icon, where dragging on it did not properly trigger abortion of the camera animation.
parents b4087c96 fed65a6b
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -953,17 +953,13 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit
                    // to keep event dispatch happy.
                    mCameraEventInProgress = true;
                    userActivity();
                    startPageWarp(cameraPage);
                    break;
                case MotionEvent.ACTION_UP:
                case MotionEvent.ACTION_CANCEL:
                    mCameraEventInProgress = false;
                    endWarp = isWarping();
                    break;
            }
            dispatchTouchEvent(event);
            // This has to happen after the event has been handled by the real widget pager
            if (endWarp) stopPageWarp();
        }
        endCameraEvent();
    }
+76 −49
Original line number Diff line number Diff line
@@ -36,15 +36,7 @@ import android.os.Parcelable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.ViewPropertyAnimator;
import android.view.*;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -262,6 +254,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
    // Page warping
    private int mPageSwapIndex = -1; // the page we swapped out if needed
    private int mPageWarpIndex = -1; // the page we intend to warp

    private boolean mWarpPageExposed;
    private ViewPropertyAnimator mWarpAnimation;

@@ -494,9 +487,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
            mIsPageMoving = true;
            if (isWarping()) {
                dispatchOnPageBeginWarp();
                if (mPageSwapIndex != -1) {
                    swapPages(mPageSwapIndex, mPageWarpIndex);
                }
            }
            onPageBeginMoving();
        }
@@ -523,22 +513,13 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
        if (mIsPageMoving) {
            mIsPageMoving = false;
            if (isWarping()) {
                if (mPageSwapIndex != -1) {
                    swapPages(mPageSwapIndex, mPageWarpIndex);
                }
                dispatchOnPageEndWarp();
                resetPageWarp();
                mWarpPageExposed = false;
            }
            onPageEndMoving();
        }
    }

    private void resetPageWarp() {
        // TODO: Verify pages have been reset correctly
        mPageSwapIndex = -1;
        mPageWarpIndex = -1;
    }

    protected boolean isPageMoving() {
        return mIsPageMoving;
    }
@@ -794,11 +775,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
            setHorizontalScrollBarEnabled(true);
            mFirstLayout = false;
        }
        // If a page was swapped when we rebuilt the layout, swap it again now.
        if (mPageSwapIndex  != -1) {
            if (DEBUG_WARP) Log.v(TAG, "onLayout: swapping pages");
            swapPages(mPageSwapIndex, mPageWarpIndex);
        }
    }

    protected void screenScrolled(int screenCenter) {
@@ -1252,6 +1228,25 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
        }
    }

    private boolean isHorizontalCameraScroll(MotionEvent ev) {
        // Disallow scrolling if we don't have a valid pointer index
        final int pointerIndex = ev.findPointerIndex(mActivePointerId);
        if (pointerIndex == -1) return false;

        // If we're only allowing edge swipes, we break out early if the down event wasn't
        // at the edge.
        if (mOnlyAllowEdgeSwipes && !mDownEventOnEdge) return false;

        final float x = ev.getX(pointerIndex);
        final int xDiff = (int) Math.abs(x - mDownMotionX);

        final int touchSlop = Math.round(TOUCH_SLOP_SCALE * mTouchSlop);
        boolean xPaged = xDiff > mPagingTouchSlop;
        boolean xMoved = xDiff > touchSlop;

        return mIsCameraEvent && (mUsePagingTouchSlop ? xPaged : xMoved);
    }

    /*
     * Determines if we should change the touch state to start scrolling after the
     * user moves their touch point too far.
@@ -1271,14 +1266,12 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
        if (mOnlyAllowEdgeSwipes && !mDownEventOnEdge) return false;

        final int xDiff = (int) Math.abs(x - mLastMotionX);
        final int yDiff = (int) Math.abs(y - mLastMotionY);

        final int touchSlop = Math.round(TOUCH_SLOP_SCALE * mTouchSlop);
        boolean xPaged = xDiff > mPagingTouchSlop;
        boolean xMoved = xDiff > touchSlop;
        boolean yMoved = yDiff > touchSlop;

        return (xMoved || xPaged || yMoved) && (mUsePagingTouchSlop ? xPaged : xMoved);
        return mUsePagingTouchSlop ? xPaged : xMoved;
    }

    private void startScrolling(MotionEvent ev) {
@@ -1446,7 +1439,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
                    mTouchX += deltaX;
                    mSmoothingTime = System.nanoTime() / NANOTIME_DIV;
                    if (isWarping()) {
                        KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(mPageWarpIndex);
                        KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(getPageWarpIndex());
                        v.setTranslationX(v.getTranslationX() - deltaX);
                    } else if (!mDeferScrollUpdate) {
                        scrollBy((int) deltaX, 0);
@@ -1565,8 +1558,13 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
                    removeCallbacks(mSidePageHoverRunnable);
                    mSidePageHoverIndex = -1;
                }
            } else if (mIsCameraEvent || determineScrollingStart(ev)) {
            } else if (determineScrollingStart(ev)) {
                startScrolling(ev);
            } else if (isHorizontalCameraScroll(ev)) {
                startScrolling(ev);
                // we need to cancel the camera animation
                KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(getPageWarpIndex());
                v.animate().cancel();
            }
            break;

@@ -1612,7 +1610,8 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
                } else if (((isSignificantMove && deltaX < 0 && !isFling) ||
                        (isFling && velocityX < 0)) &&
                        mCurrentPage < getChildCount() - 1) {
                    finalPage = returnToOriginalPage ? mCurrentPage : mCurrentPage + 1;
                    finalPage = returnToOriginalPage ? mCurrentPage :
                            isWarping() ? getPageWarpIndex() : mCurrentPage + 1;
                    snapToPageWithVelocity(finalPage, velocityX);
                } else {
                    snapToDestination();
@@ -1929,20 +1928,19 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
    }

    protected void snapToPage(int whichPage, int delta, int duration, boolean immediate) {
        if (mPageSwapIndex != -1 && whichPage == mPageSwapIndex) {
            mNextPage = mPageWarpIndex; // jump to the warp page
        if (isWarping() && whichPage == mCurrentPage+1) {
            mNextPage = getPageWarpIndex(); // jump to the warp page
            if (DEBUG_WARP) Log.v(TAG, "snapToPage(" + whichPage + ") : reset mPageSwapIndex");
        } else {
            mNextPage = whichPage;
        }

        if (isWarping()) {
        if(mWarpPageExposed) {
            dispatchOnPageEndWarp();
            notifyPageSwitching(whichPage);
            resetPageWarp();
        } else {
            notifyPageSwitching(whichPage);
            mWarpPageExposed = false;
        }
        notifyPageSwitching(whichPage);


        View focusedChild = getFocusedChild();
        if (focusedChild != null && whichPage != mCurrentPage &&
@@ -1973,7 +1971,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
    }

    protected boolean isWarping() {
        return mPageWarpIndex != -1;
        return mWarpPageExposed;
    }

    public void scrollLeft() {
@@ -2716,6 +2714,12 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
                animateWarpPageOffScreen("onScreen end", true);
            }
        }

        @Override
        public void onAnimationCancel(Animator animation) {
            super.onAnimationCancel(animation);
            mWarpAnimation = null;
        }
    };

    AnimatorListenerAdapter mOffScreenAnimationListener = new AnimatorListenerAdapter() {
@@ -2723,6 +2727,14 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
        public void onAnimationEnd(Animator animation) {
            mWarpAnimation = null;
            mWarpPageExposed = false;
            KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(getPageWarpIndex());
            v.setTranslationX(0.0f);
        }

        @Override
        public void onAnimationCancel(Animator animation) {
            super.onAnimationCancel(animation);
            mWarpAnimation = null;
        }
    };

@@ -2731,7 +2743,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
        if (abortAnimation) {
            // We're done with the animation and moving to a new page.  Let the scroller
            // take over the animation.
            KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(mPageWarpIndex);
            KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(getPageWarpIndex());
            v.animate().cancel();
            // Make the scroll amount match the current warp position.
            scrollBy(Math.round(-v.getTranslationX()), 0);
@@ -2747,28 +2759,43 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc

    private void animateWarpPageOnScreen(String reason) {
        if (DEBUG_WARP) Log.v(TAG, "animateWarpPageOnScreen(" + reason + ")");
        if (isWarping() && !mWarpPageExposed) {
        if (!mWarpPageExposed) {
            mWarpPageExposed = true;
            dispatchOnPageBeginWarp();
            KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(mPageWarpIndex);
            KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(getPageWarpIndex());
            if (DEBUG_WARP) Log.v(TAG, "moving page on screen: Tx=" + v.getTranslationX());
            DecelerateInterpolator interp = new DecelerateInterpolator(1.5f);
            int totalOffset = getCurrentWarpOffset();
            v.setTranslationX(totalOffset);
            mWarpAnimation = v.animate();
            mWarpAnimation.translationX(mWarpPeekAmount)
            mWarpAnimation.translationX(mWarpPeekAmount+totalOffset)
                    .setInterpolator(interp)
                    .setDuration(WARP_PEEK_ANIMATION_DURATION)
                    .setListener(mOnScreenAnimationListener);
        }
    }

    private int getCurrentWarpOffset() {
        if (mCurrentPage == getPageWarpIndex()) {
            return 0;
        }
        View viewRight = getPageAt(mCurrentPage + 1);
        View warpView = getPageAt(getPageWarpIndex());
        if (viewRight != warpView && viewRight != null && warpView != null) {
            return viewRight.getLeft() - warpView.getLeft();
        }
        return 0;
    }

    private void animateWarpPageOffScreen(String reason, boolean animate) {
        if (DEBUG_WARP) Log.v(TAG, "animateWarpPageOffScreen(" + reason + " anim:" + animate + ")");
        if (isWarping()) {
        if (mWarpPageExposed) {
            dispatchOnPageEndWarp();
            KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(mPageWarpIndex);
            KeyguardWidgetFrame v = (KeyguardWidgetFrame) getPageAt(getPageWarpIndex());
            if (DEBUG_WARP) Log.v(TAG, "moving page off screen: Tx=" + v.getTranslationX());
            AccelerateInterpolator interp = new AccelerateInterpolator(1.5f);
            v.animate().translationX(0.0f)
            int totalOffset = getCurrentWarpOffset();
            v.animate().translationX(totalOffset)
                    .setInterpolator(interp)
                    .setDuration(animate ? WARP_PEEK_ANIMATION_DURATION : 0)
                    .setListener(mOffScreenAnimationListener);
@@ -2799,7 +2826,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
    }

    protected int getPageWarpIndex() {
        return mPageWarpIndex;
        return getPageCount() - 1;
    }

    public void stopPageWarp() {