2015-02-19 6 views
5

पर सेट करने के लिए ViewPropertyAnimator का उपयोग कैसे कर सकता है मैं अपनी दृश्य चौड़ाई सेट करने के लिए ViewPropertyAnimator का उपयोग कैसे कर सकता हूं?चौड़ाई को किसी विशिष्ट मान

मैं स्केल या अनुवाद कर सकता हूं (नीचे देखें) लेकिन मैं एक विशिष्ट चौड़ाई पर सेट नहीं कर सकता।

frame_1.animate().scaleX(5).scaleY(5).start(); 

लेकिन वहाँ ViewPropertyAnimator के बजाय कोई सरल एनीमेशन

frame_1.animate().width(1024).height(768).start(); 
+0

एक ही समस्या है :( –

उत्तर

1

उपयोग

public class ResizeWidthAnimation extends Animation 
{ 
    private int mWidth; 
    private int mStartWidth; 
    private View mView; 

public ResizeWidthAnimation(View view, int width) 
{ 
    mView = view; 
    mWidth = width; 
    mStartWidth = view.getWidth(); 
} 

@Override 
protected void applyTransformation(float interpolatedTime, Transformation t) 
{ 
    int newWidth = mStartWidth + (int) ((mWidth - mStartWidth) * interpolatedTime); 

    mView.getLayoutParams().width = newWidth; 
    mView.requestLayout(); 
} 

@Override 
public void initialize(int width, int height, int parentWidth, int parentHeight) 
{ 
    super.initialize(width, height, parentWidth, parentHeight); 
} 

@Override 
public boolean willChangeBounds() 
{ 
    return true; 
} 

}

1

इस, यहां तक ​​कि Android 2.3 से समर्थन का प्रयास है:

ValueAnimatorCompat exitAnimator = AnimatorCompatHelper.emptyValueAnimator(); 
    exitAnimator.setDuration(TransitCompat.ANIM_DURATION * 4); 
    exitAnimator.addUpdateListener(new AnimatorUpdateListenerCompat() { 
     private float oldWidth = view.getWidth(); 
     private float endWidth = 0; 
     private float oldHeight = view.getHeight(); 
     private float endHeight = 0; 
     private Interpolator interpolator2 = new BakedBezierInterpolator();//Any other will be also O.K. 

     @Override 
     public void onAnimationUpdate(ValueAnimatorCompat animation) { 
      float fraction = interpolator2.getInterpolation(animation.getAnimatedFraction()); 

      float width = oldWidth + (fraction * (endWidth - oldWidth)); 
      mTarget.get().getLayoutParams().width = (int) width; 

      float height = oldHeight + (fraction * (endHeight - oldHeight)); 
      view.getLayoutParams().height = (int) height; 


      view.requestLayout(); 
     } 
    }); 

    exitAnimator.start(); 
संबंधित मुद्दे