项目地址:
https://github.com/davidschreiber/FancyCoverFlow
在使用时做了如下改良
1. 设置FancyCoverFlowItemWrapper类内childView占用父view全部的空间,这样能使图片显示在整个组件上,不留白
即改FancyCoverFlowItemWrapper类的224,255(remeasureChildren方法为 int heightSpec = MeasureSpec.makeMeasureSpec(childHeight, MeasureSpec.EXACTLY);
int widthSpec = MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.EXACTLY);
2. 默认是根据用户的滑动速度来确定滑几页,但用户一般希望一次滑一页,需要在FancyCoverFlow类覆写onFling方法
3. 觉得效果有点丑,就添加了更改样式的方法 setGeneralStyle
FancyCoverFlow类增加的代码如下:
private int FLING_THRESHOLD;
private int FLING_MOVE_THRESHOLD;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
float rateX = 1.2f*velocityX;
if (FLING_THRESHOLD == 0) {
FLING_THRESHOLD = Tool.dp2px(getResources(),900);
}
if (rateX>FLING_THRESHOLD)
rateX = FLING_THRESHOLD;
if (rateX < -FLING_THRESHOLD)
rateX = -FLING_THRESHOLD;
return super.onFling(e1, e2, rateX, velocityY);
}
//设置默认样式,更美观
public void setGeneralStyle() {
setUnselectedAlpha(1.0f);
setUnselectedSaturation(0.0f);
setUnselectedScale(0.75f);
setSpacing(5);
setMaxRotation(0);
setScaleDownGravity(0.2f);
setActionDistance(FancyCoverFlow.ACTION_DISTANCE_AUTO);
setCallbackDuringFling(false);
}