3

У меня есть фрагмент ниже точки зрения Recycler, при прокрутке вниз, фрагмент должен исчезнуть, когда прокручивается вверх, фрагмент должен появитьсяиспользование анимации только один раз на свитке

Я реализовал это, но проблема в том, когда я прокручиваю вниз мало, происходит фрагментация исчезающей анимации, когда я снова прокручиваю ее, она появляется снова, и происходит анимация сползания вниз, но я хочу, чтобы она оставалась скрытой до следующего прокрутки вверх.

Вот мой код:

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(); 


       } 




      } 
     }); 

ответ

0

Я получил его! Я просто использовал переменную флага

@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+""); 




      } 
     });