隐藏布局时,动画在列表视图中闪烁

时间:2016-06-14 09:14:44

标签: android listview android-animation onscrolllistener

有自定义列表视图,底部有一个线性布局。因此,在滚动列表时,操作栏和底部布局应该在滚动列表视图时隐藏,以便我们可以全屏查看列表。我正在使用动画来隐藏/显示布局,但是当列表到达顶部时会出现闪烁。下面是使用操作栏隐藏和显示布局的代码。

           @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
          final int lastItem = firstVisibleItem + visibleItemCount;
            android.support.v7.app.ActionBar actionBar = getSupportActionBar();
            if(mViews.lists.getFirstVisiblePosition() == 0 && (mViews.lists.getChildCount() == 0 || mViews.lists.getChildAt(0).getTop() == 0)){
                actionBar.show();
             //   mViews.linear.startAnimation(animShow);
               // mViews.linear.setVisibility(View.VISIBLE);
               TranslateAnimation animate = new TranslateAnimation(0,0,2000,0 );

               animate.setDuration(100);

                animate.setFillBefore(true);


                animate.setAnimationListener(new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {
                        mViews.linear.startAnimation(animation);
                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        mViews.linear.clearAnimation();

                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {

                    }
                });

                mViews.linear.setVisibility(View.VISIBLE);



            }else  {
                if (actionBar != null) {
                    actionBar.hide();
                  // mViews.linear.startAnimation(animHide);
                    //mViews.linear.setVisibility(View.GONE);
                  TranslateAnimation animate = new TranslateAnimation(0,0,0,0);
                   animate.setDuration(100);
                    animate.setFillAfter(true);
                    mViews.linear.startAnimation(animate);
                    animate.setAnimationListener(new Animation.AnimationListener() {
                        @Override
                        public void onAnimationStart(Animation animation) {
                            mViews.linear.startAnimation(animation);
                        }

                        @Override
                        public void onAnimationEnd(Animation animation) {
                            mViews.linear.clearAnimation();

                        }

                        @Override
                        public void onAnimationRepeat(Animation animation) {

                        }
                    });

                    mViews.linear.setVisibility(View.GONE);
                }


            }
        }

我已经走了但我没有找到解决我问题的任何解决方案。请帮忙。

1 个答案:

答案 0 :(得分:0)

https://mzgreen.github.io/2015/02/15/How-to-hideshow-Toolbar-when-list-is-scroling(part1)/

你必须绑定你的视图,然后使用

FrameLayout.LayoutParams lp =(FrameLayout.LayoutParams)yourView.getLayoutParams();

yourView.animate()。translationY(mFabButton.getHeight()+ fabBottomMargin).setInterpolator(new AccelerateInterpolator(2))。start();

请参阅教程,并在下面找到github代码