FancyOverFlow的使用

本文介绍如何改进FancyCoverFlow组件,包括调整图片显示方式、优化滑动体验及增强样式美观度。通过修改源码实现图片全屏展示,自定义滑动行为,并提供了一套默认样式设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目地址:

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);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值