@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;
   }
 }
  private void hideFlipAnimation() {
    if (inFlipAnimation) {
      inFlipAnimation = false;

      updateVisibleView(bufferIndex);

      if (onViewFlipListener != null) {
        onViewFlipListener.onViewFlipped(bufferedViews.get(bufferIndex), adapterIndex);
        if (playPauseCallBack != null) playPauseCallBack.onFliped(bufferedViews.get(bufferIndex));
      }

      handler.post(
          new Runnable() {
            public void run() {
              if (!inFlipAnimation) {
                cards.setVisible(false);
                surfaceView.requestRender(); // ask OpenGL to clear its display
              }
            }
          });
    }
  }
 // add by hz
 public void flipToPageAgain() {
   if (onViewFlipListener != null) {
     onViewFlipListener.onViewFlipped(bufferedViews.get(bufferIndex), adapterIndex);
     if (playPauseCallBack != null) playPauseCallBack.onFliped(bufferedViews.get(bufferIndex));
   }
 }