3

Ich habe ein Fragment unter Recycler Ansicht, wenn nach unten gescrollt, sollte das Fragment verschwinden, wenn nach oben gescrollt, sollte das FragmentVerwendung Animation nur einmal auf Scroll

wieder ich es implementiert, aber Problem ist, wenn ich nach unten scrollen eine wenig, die Fragment-Verschwinden-Animation findet statt, wenn ich weiter scrolle, erscheint sie wieder und die gleitende Animation tritt auf, aber ich möchte, dass sie bis zum nächsten Bildlauf verborgen bleibt.

Hier ist mein Code:

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


       } 




      } 
     }); 

Antwort

0

Ich habe es! Ich habe gerade eine Flag-Variable verwendet

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




      } 
     });