android - 滚动时只使用一次动画

标签 android android-fragments animation android-recyclerview

我在 Recycler View 下方有一个 fragment ,当向下滚动时, fragment 应该消失,当向上滚动时, fragment 应该重新出现

我实现了它,但问题是,当我向下滚动一点时,会出现 fragment 消失动画,当我进一步滚动时,它会重新出现并出现向下滑动动画,但我希望它保持隐藏状态,直到下一次向上滚动.

这是我的代码:

 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);

                Log.d("newstate",newState+"");


            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
               Log.d("dx",dx+"");
                Log.d("dy",dy+"");

                FragmentTransaction ft1 = getFragmentManager().beginTransaction();
                ft1.setCustomAnimations(R.anim.entry, R.anim.exit);
                ft1.show(bmfragment);
                ft1.commit();
                    visibleItemCount = recyclerView.getChildCount();
                    totalItemCount = mLinearLayoutManager.getItemCount();
                    firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();


                if(dy<0) {

                        FragmentTransaction ft = getFragmentManager().beginTransaction();
                        ft.setCustomAnimations(R.anim.entry, R.anim.exit);
                        ft.show(bmfragment);
                        ft.commit();


                }else if(firstVisibleItem>=1)
                {

                        FragmentTransaction ft = getFragmentManager().beginTransaction();

                        ft.setCustomAnimations(0, R.anim.exit);
                        ft.hide(bmfragment);
                        ft.commit();


                }




            }
        });

最佳答案

我明白了!我只是使用了一个标志变量

@Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
               Log.d("dx",dx+"");
                Log.d("dy",dy+"");

                if(flag==false) {
                    FragmentTransaction ft1 = getFragmentManager().beginTransaction();
                    ft1.setCustomAnimations(R.anim.entry, R.anim.exit);
                    ft1.show(bmfragment);
                    ft1.commit();
                    visibleItemCount = recyclerView.getChildCount();
                    totalItemCount = mLinearLayoutManager.getItemCount();
                    firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();
                }


                if(dy<0) {

                        FragmentTransaction ft = getFragmentManager().beginTransaction();
                        ft.setCustomAnimations(R.anim.entry, R.anim.exit);
                        ft.show(bmfragment);
                        ft.commit();
                        flag = false;

                }else if(firstVisibleItem>=1)
                {
                    if(flag==false) {

                        FragmentTransaction ft = getFragmentManager().beginTransaction();

                        ft.setCustomAnimations(0, R.anim.exit);
                        ft.hide(bmfragment);
                        ft.commit();
                        flag=true;
                    }


                }
                Log.d("visibleItemCount",visibleItemCount+"");
                Log.d("firstVisibleItem",firstVisibleItem+"");




            }
        });

关于android - 滚动时只使用一次动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38199465/

相关文章:

android - 如何在操作栏选项卡中以编程方式更改选定的选项卡指示器颜色

android - 如何在一个 fragment 中的操作栏下做一个选项菜单

android - Android 中的 float 视频 View

javascript - 为 Chrome、Safari 等同步 jQuery 动画

android - 从 Firebase 数据库检索数据并将其设置到 recyclerview 适配器中

Android 父 Activity 历史堆栈问题

javascript - 单击箭头按钮时如何更快地移动矩形?

Android - 丰富的图形和动画

android - 广播接收器没有获得 MY_PACKAGE_REPLACED Intent

android - 动态更新 ViewPager?