向上滚动时展开Recyclerview项的动画效果

3

iPhone应用视频链接

如何设计和开发上面视频中发布的视图?这基本上是recyclerview的项扩展,带有动画效果。我尝试过使用recyclerview的onItemtouchlistener以及一些带有动画效果的自定义视图,但没有得到准确的结果。

最后,我找到了addonscrolllistener,这给了我结果,但不够准确。

 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            if(newState == RecyclerView.FOCUS_UP) {
                System.out.println("hello, ia m going up");
            }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if (dy > 0){
                TextView tv = (TextView)recyclerView.findViewById(R.id.title);
                //tv.setVisibility(View.VISIBLE);
                if (tv.getVisibility()==View.VISIBLE){
                     System.out.println("yes");
                }else {
                    slideToTop(tv);
                }
            }
        }
    });

 private void slideToTop(View view){
    TranslateAnimation animate = new TranslateAnimation(0,0,0,-view.getHeight());
    animate.setDuration(1000);
    animate.setFillAfter(false);
    view.startAnimation(animate);
    view.setVisibility(View.VISIBLE);
}

我知道当客户在最后一刻把工作丢给你时会很令人沮丧,但是读者不会因为紧急请求而匆忙。这里所有的问题都同等重要。如果你真的卡住了,值得保留其他Android开发人员的联系方式,或者使用像AirPair这样的付费服务,并支付紧急援助费用。 - halfer
读者需要观看您的视频才能理解问题吗?如果是这样,请描述一下视频内容 - 这里的问题应该是自包含的。 - halfer
2个回答

2

我觉得你的问题太宽泛了 - 不过,这里是一些伪代码:

onScrolled() {
    View child = getSecondVisibleChild();
    int distanceFromTop = child.getTop();
    int distanceAtWhichExpandingShouldOccur = 100;
    if(distanceFromTop < distanceAtWhichExpandingShouldOccur ) {
         child.setHeight(child.getOriginalHeight() + (distanceFromTop - distanceAtWhichExpandingShouldOccur))
    }
}

你会注意到,第二个可见的子元素是高度发生变化的那个。当它距离窗口顶部少于distanceAtWhichExpandingShouldOccur时,它的高度会改变。为了保持其bottom不变,其高度会以与其top移动相同的速度增加。

一旦它不再是第二个可见的子元素(即其top为0),它应该像正常滚动一样被滚出去,当下一个子元素的top小于distanceAtWhichExpandingShouldOccur时,其高度将被改变。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接