/** 对View重新排序 */ private void orderViewStack() { synchronized (obj1) { if (releasedViewList.size() == 0) { return; } CardItemView changedView = (CardItemView) releasedViewList.get(0); if (changedView.getLeft() == initCenterViewX) { return; } // 1. 消失的卡片View位置重置 changedView.offsetLeftAndRight(initCenterViewX - changedView.getLeft()); changedView.offsetTopAndBottom(initCenterViewY - changedView.getTop() + yOffsetStep * 2); float scale = 1.0f - SCALE_STEP * 2; changedView.setScaleX(scale); changedView.setScaleY(scale); // 2. 卡片View在ViewGroup中的顺次调整 int num = viewList.size(); for (int i = num - 1; i > 0; i--) { View tempView = viewList.get(i); tempView.bringToFront(); } // 3. changedView填充新数据 int newIndex = isShowing + 4; if (newIndex < dataList.size()) { CardDataItem dataItem = dataList.get(newIndex); changedView.fillData(dataItem); } else { changedView.setVisibility(View.INVISIBLE); } // 4. viewList中的卡片view的位次调整 viewList.remove(changedView); viewList.add(changedView); releasedViewList.remove(0); // 5. 更新showIndex、接口回调 if (isShowing + 1 < dataList.size()) { isShowing++; } if (null != cardSwitchListener) { cardSwitchListener.onShow(isShowing); } } }