In situations where there isn’t a simple property getter/setter you should use ValueAnimator and perform the animation manually.
Assuming:
- v is the view you’re animating
- END_WIDTH is the target width of the view in pixels.
- DURATION is the desired length of the animation in milliseconds.
Your code should look something like this:
ValueAnimator anim = ValueAnimator.ofInt(v.getMeasuredWidth(), END_WIDTH);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int val = (Integer) valueAnimator.getAnimatedValue();
ViewGroup.LayoutParams layoutParams = v.getLayoutParams();
layoutParams.width = val;
v.setLayoutParams(layoutParams);
}
});
anim.setDuration(DURATION);
anim.start();