2016-06-14 10 views
0

Es gibt eine benutzerdefinierte Listenansicht und im unteren Bereich gibt es eine lineare Layout. Beim Scrollen der Liste sollten die Aktionsleiste und das untere Layout während des Scrollens der Listenansicht ausgeblendet werden, damit wir die Liste im Vollbildmodus sehen können. Ich verwende Animation, um das Layout zu verstecken/anzuzeigen, aber es gibt ein Flackern, wenn die Liste oben erreicht wird. Unten ist der Code für das Layout verstecken und anzeigen mit Aktionsleiste.Animation Flackern in Listview während Layout ausblenden

  @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); 
       } 


      } 
     } 

Ich bin durch SO gegangen, aber ich fand keine Lösung, die mein Problem löst. Bitte helfen.

Antwort