private void onFinishedAnimation(int newScreen) { final int previousScreen = mCurrentScreen; final boolean toLeft = newScreen > mCurrentScreen; final boolean toRight = newScreen < mCurrentScreen; final boolean changed = newScreen != mCurrentScreen; mCurrentScreen = newScreen; if (mIndicator != null) mIndicator.setLevel(mCurrentScreen, mItemCount); setNextSelectedPositionInt(INVALID_SCREEN); fillToGalleryRight(); fillToGalleryLeft(); if (toLeft) { detachOffScreenChildren(true); } else if (toRight) { detachOffScreenChildren(false); } if (changed || mItemCount == 1 || true) { View child = getChildAt(mCurrentScreen - mFirstPosition); if (null != child) { if (mAllowChildSelection) { if (null != mOldSelectedChild) { mOldSelectedChild.setSelected(false); mOldSelectedChild = null; } child.setSelected(true); mOldSelectedChild = child; } child.requestFocus(); } } clearChildrenCache(); if (mOnPageChangeListener != null && newScreen != mPreviousScreen) { post( new Runnable() { @Override public void run() { if (null != mOnPageChangeListener) mOnPageChangeListener.onPageChanged(mCurrentScreen, previousScreen); } }); } postUpdateIndicator(mCurrentScreen, mItemCount); mPreviousScreen = newScreen; }
void setCurrentScreen(int currentScreen) { if (LOG_ENABLED) { Log.i(LOG_TAG, "setCurrentScreen: " + currentScreen); } if (!mScroller.isFinished()) mScroller.abortAnimation(); mCurrentScreen = Math.max(0, Math.min(currentScreen, mItemCount - 1)); if (mIndicator != null) mIndicator.setLevel(mCurrentScreen, mItemCount); scrollTo(mCurrentScreen * getWidth(), 0); invalidate(); }
public void setIndicator(AviaryWorkspaceIndicator indicator) { mIndicator = indicator; mIndicator.setLevel(mCurrentScreen, mItemCount); }