/** This function must be called from the UI thread. */ public void abortAnimation() { checkMainThread(); // this happens when gecko changes the viewport on us or if the device is rotated. // if that's the case, abort any animation in progress and re-zoom so that the page // snaps to edges. for other cases (where the user's finger(s) are down) don't do // anything special. switch (mState) { case FLING: mX.stopFling(); mY.stopFling(); // fall through case BOUNCE: case ANIMATED_ZOOM: // the zoom that's in progress likely makes no sense any more (such as if // the screen orientation changed) so abort it setState(PanZoomState.NOTHING); // fall through case NOTHING: // Don't do animations here; they're distracting and can cause flashes on page // transitions. synchronized (mTarget.getLock()) { mTarget.setViewportMetrics(getValidViewportMetrics()); } break; } }
private void finishAnimation() { checkMainThread(); stopAnimationTimer(); // Force a viewport synchronisation mTarget.setForceRedraw(); }
/** This function must be called on the UI thread. */ public void preventedTouchFinished() { checkMainThread(); if (mState == PanZoomState.WAITING_LISTENERS) { // if we enter here, we just finished a block of events whose default actions // were prevented by touch listeners. Now there are no touch points left, so // we need to reset our state and re-bounce because we might be in overscroll bounce(); } }
/** This function must be called on the UI thread. */ public void startingNewEventBlock(MotionEvent event, boolean waitingForTouchListeners) { checkMainThread(); mSubscroller.cancel(); if (waitingForTouchListeners && (event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) { // this is the first touch point going down, so we enter the pending state // seting the state will kill any animations in progress, possibly leaving // the page in overscroll setState(PanZoomState.WAITING_LISTENERS); } }
public PanZoomController(PanZoomTarget target, EventDispatcher eventDispatcher) { mTarget = target; mSubscroller = new SubdocumentScrollHelper(this, eventDispatcher); mX = new AxisX(mSubscroller); mY = new AxisY(mSubscroller); mMainThread = GeckoApp.mAppContext.getMainLooper().getThread(); checkMainThread(); setState(PanZoomState.NOTHING); mEventDispatcher = eventDispatcher; registerEventListener(MESSAGE_ZOOM_RECT); registerEventListener(MESSAGE_ZOOM_PAGE); Axis.initPrefs(); }
/** This function must be called from the UI thread. */ public void abortPanning() { checkMainThread(); bounce(); }