void showFlipAnimation() { if (!inFlipAnimation) { inFlipAnimation = true; cards.setVisible(true); cards.setFirstDrawFinished(false); surfaceView.requestRender(); } }
@Override public void setSelection(int position) { if (adapter == null) { return; } Assert.assertTrue("Invalid selection position", position >= 0 && position < adapterDataCount); releaseViews(); View selectedView = viewFromAdapter(position, true); bufferedViews.add(selectedView); for (int i = 1; i <= sideBufferSize; i++) { int previous = position - i; int next = position + i; if (previous >= 0) { bufferedViews.addFirst(viewFromAdapter(previous, false)); } if (next < adapterDataCount) { bufferedViews.addLast(viewFromAdapter(next, true)); } } bufferIndex = bufferedViews.indexOf(selectedView); adapterIndex = position; requestLayout(); updateVisibleView(inFlipAnimation ? -1 : bufferIndex); cards.resetSelection(position, adapterDataCount); }
// -------------------------------------------------------------------------------------------------------------------- // Touch Event @Override public boolean onInterceptTouchEvent(MotionEvent event) { if (flipByTouchEnabled) { return cards.handleTouchEvent(event, false); } else { return false; } }
@Override public boolean onTouchEvent(MotionEvent event) { if (playPauseCallBack != null && (event.getAction() == MotionEvent.ACTION_DOWN)) { playPauseCallBack.pauseOrPlay(bufferedViews.get(bufferIndex), event); } if (flipByTouchEnabled) { return cards.handleTouchEvent(event, true); } else { return false; } }
// add by hz public void autoFlip() { if (adapterIndex + 1 < adapterDataCount) { cards.nextPage(); } }
/** Force the animator reload all preloaded pages */ public void refreshAllPages() { cards.refreshAllPages(); requestLayout(); }
/** @see #refreshPage(android.view.View) */ public void refreshPage(int pageIndex) { if (cards.refreshPage(pageIndex)) { requestLayout(); } }
/** * Request the animator to update display if the pageView has been preloaded. * * <p>If the pageView is being used in the animation or its content has been buffered, the * animator forcibly reloads it. * * <p>The reloading process is a bit heavy for an active page, so please don't invoke it too * frequently for an active page. The cost is trivial for inactive pages. */ public void refreshPage(View pageView) { if (cards.refreshPageView(pageView)) { requestLayout(); } }