1、可以看到条目的起始位置是从屏幕的一半的地方再减去item宽度的一半的位置开始,而且每个item都是叠在上一个item宽度一般的位置
mStartX = getWidth()/2 - getItemShowWidth(); for (int i = 0; i < getItemCount(); i++) { Rect rect = new Rect(mStartX + temp, 0, mStartX + temp + mItemWidth, itemHeight); mSparseArray.put(i, rect); mBooleanArray.put(i, false); temp += getItemShowWidth(); } private int getItemShowWidth() { return mItemWidth / 2;}
2、我们可以看到所有的item都重叠起来了,画廊的效果是中间的item完全显示,而其它地方都只显示了一半,这里我们要重写Recycleview中的方法,来改变item绘制的顺序,我们想要画廊的效果是中间显示其它显示一半,所以我们中间的item最后来绘制,这里介绍下Recycleview中的这个方法
@Override protected int getChildDrawingOrder(int childCount, int i) { if (mChildDrawingOrderCallback == null) { return super.getChildDrawingOrder(childCount, i); } else { return mChildDrawingOrderCallback.onGetChild