3

Iphone App 视频链接

我如何设计和开发上面视频中发布的视图?这基本上就是带有动画的recyclerview的item扩展。我尝试过使用 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);
}
4

2 回答 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),它应该正常滚动,并且下一个孩子的高度应该在顶部小于distanceAtWhichExpandingShouldOccur.

于 2015-09-01T09:48:43.833 回答
0

这个库可以成为你的学习案例:https ://github.com/florent37/MaterialLeanBack

于 2015-09-01T12:04:49.547 回答