ListView的渐变。。淡入和淡出 第一个Item和最后一个Item

一些是查资料参考

<span style="font-size:18px;">public class AlphaListView extends ListView implements AbsListView.OnScrollListener {

    private int height;
    private int itemHeight;

    public AlphaListView(Context context) {
        super(context);
        init();
    }

    public AlphaListView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public AlphaListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        setOnScrollListener(this);
    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {

    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        //将所有View的透明度设置为1
        for(int i = 0; i < getChildCount(); i++){
            getChildAt(i).setAlpha(1);
        }
        //得到第一个可见的View
        View v = getChildAt(0);
        if(v != null){
            //得到这个v的高度
            itemHeight = v.getHeight();
            //得到可见部分
            int visiableLength = v.getBottom();
            //得到可见不分部分比例
            float ratio = visiableLength * 1.0f / itemHeight;
            v.setAlpha(ratio);
        }
        //得到最后一个可见的View
        v = getChildAt(visibleItemCount - 1);
        if(v != null){
            //得到这个v的高度
            itemHeight = v.getHeight();
            //得到可见部分
            int visiableLength = height - v.getTop();
            //得到可见不分部分比例
            float ratio = visiableLength * 1.0f / itemHeight;
            v.setAlpha(ratio);
        }
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        height = MeasureSpec.getSize(heightMeasureSpec);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}</span>
其中 setAlpha(0) 里面的参数 0.00 到 1.00 设置百分比透明度

 // 对任何控件 View ListView ScrollView 都适用
        // 设置 逐渐消逝; 逐渐消失
        mListView.setVerticalFadingEdgeEnabled(true);
        // 设置消失的距离
        mListView.setFadingEdgeLength(100);

后来发现另一种更简单的方法 可以直接通过View设置属性





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值