43

मेरे ऐप में मैं का उपयोग करके एक विशिष्ट ईवेंट पर AppBarLayout का विस्तार या अनुबंध करता हूं।AppBarLayout.setExpanded (बूलियन, सच) समर्थन लाइब्रेरी में अजीब एनीमेशन 23.1.1

मुझे com.android.support:design:23.1.0 का उपयोग करके एक स्नैपी और तरल एनीमेशन के साथ अच्छा परिणाम मिला है, तो मैंने 23.1.1 पर अपडेट किया और एनीमेशन बहुत धीमा हो गया और बिल्कुल भी नहीं।

android.support.design.widget.AppBarLayout के स्रोत कोड में, मैं animateOffsetTo में समस्या स्थित (public static class Behavior extends HeaderBehavior<AppBarLayout> से कम), उस संस्करण में 23.1.0 इस तरह था:

private void animateOffsetTo(final CoordinatorLayout coordinatorLayout, 
    final AppBarLayout child, int offset) { 
    if (mAnimator == null) { 
     mAnimator = ViewUtils.createAnimator(); 
     mAnimator.setInterpolator(AnimationUtils.DECELERATE_INTERPOLATOR); 
     mAnimator.setUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() { 

      @Override 
      public void onAnimationUpdate(ValueAnimatorCompat animator) { 
       setHeaderTopBottomOffset(coordinatorLayout, child, 
        animator.getAnimatedIntValue()); 
      } 
     }); 
    } else { 
     mAnimator.cancel(); 
    } 
    mAnimator.setIntValues(getTopBottomOffsetForScrollingSibling(), offset); 
    mAnimator.start(); 
} 

और संस्करण 23.1.1 इस तरह है में :

private void animateOffsetTo(final CoordinatorLayout coordinatorLayout, 
    final AppBarLayout child, final int offset) { 
    final int currentOffset = getTopBottomOffsetForScrollingSibling(); 
    if (currentOffset == offset) { 
     if (mAnimator != null && mAnimator.isRunning()) { 
      mAnimator.cancel(); 
     } 
     return; 
    } 
    if (mAnimator == null) { 
     mAnimator = ViewUtils.createAnimator(); 
     mAnimator.setInterpolator(AnimationUtils.DECELERATE_INTERPOLATOR); 
     mAnimator.setUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() { 
      @Override 
      public void onAnimationUpdate(ValueAnimatorCompat animator) { 
      setHeaderTopBottomOffset(coordinatorLayout, child, 
        animator.getAnimatedIntValue()); 
      } 
     }); 
    } else { 
     mAnimator.cancel(); 
    } 
    // Set the duration based on the amount of dips we're travelling in 
    final float distanceDp = Math.abs(currentOffset - offset)/
     coordinatorLayout.getResources().getDisplayMetrics().density; 
    mAnimator.setDuration(Math.round(distanceDp * 1000/ANIMATE_OFFSET_DIPS_PER_SECOND)); 
    mAnimator.setIntValues(currentOffset, offset); 
    mAnimator.start(); 
} 

मैं विस्तार/अनुबंध एनीमेशन कैसे बदल सकता हूं और तेज़ी से कर सकता हूं?

+0

सेट अवधि बदलें ??? ... –

+0

क्या आप वाकई यह सही समस्या है जो आप इंगित कर रहे हैं ??? – Pankaj

+0

@MicheleLacorte: कैसे? यह com.android.support:design – Nifhel

उत्तर

1

बस 25.3.1 संस्करण के लिए पुस्तकालय अद्यतन करें।

संबंधित मुद्दे