使用onScrollStateChanged为列表视图管理淡入淡出列表项目的动画

时间:2015-07-02 05:35:05

标签: android animation scroll fadein

使用淡入式动画动画ListView项,onScrollStateChanged

我一直在尝试下面的代码

LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(
                this, R.anim.anim2);
        getListView().setLayoutAnimation(controller);


        getListView().setOnScrollListener(new OnScrollListener(){
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                // TODO Auto-generated method stub


            }
            public void onScrollStateChanged(AbsListView view, int scrollState) {

                // TODO Auto-generated method stub
                if(scrollState == 0) {
                    LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(
                            MainActivity.this, R.anim.anim2);
                    getListView().setLayoutAnimation(controller);

                }
            }
        });
    }   

如何运作

当我们加载ListView时,首先是项目淡出

当我们向上或向下滚动时,淡入效果将应用于列表中的所有项目(VISIBLE)

我想要什么

假设我们有20个项目的列表

现在当列表加载前10个项目可见时,淡入效果将应用于这10个

当我们向下滚动已经可见的列表时,项目应保持原样,并且淡入效果应该应用于之前不可见的剩余项目,例如,如果我们滚动到第15项前5项(来自早期10)[仍然可见]应保持原样,动画应适用于剩下的5个(总共15个)[现在可见]

以上代码会发生什么

如果我们向下或向上滚动,淡入效果适用于所有可见的项目,包括前5个项目和接下来的5个项目

我的问题是

1)我们可以识别哪些项目已经可见并且动画已经完成(并防止动画应用于它们)

2)将动画应用于现在可见的剩余项目

0 个答案:

没有答案