1

I'm trying to make animation on ImageView to change it's width but nothing happened

this is my code

final ImageView NewsDeitalHeaderImage = (ImageView) findViewById(R.id.NewsDeitalHeaderImage);
     NewsDeitalHeaderImage.setImageResource(NewsDeitalSharedImage);

     ValueAnimator anim = ValueAnimator.ofInt(  NewsDeitalHeaderImage.getMeasuredWidth() , WindowManager.LayoutParams.MATCH_PARENT);
         anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
         @Override
         public void onAnimationUpdate(ValueAnimator valueAnimator) {
             int val = (Integer) valueAnimator.getAnimatedValue();
             LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)NewsDeitalHeaderImage.getLayoutParams();
             layoutParams.width =val;
             NewsDeitalHeaderImage.setLayoutParams(layoutParams);
         }
     });
     anim.setDuration(300);
     anim.start(); 
Shabbir Dhangot
  • 8,642
  • 9
  • 58
  • 78
Abdelstar Ahmed
  • 135
  • 1
  • 9

1 Answers1

0

The problem is that you use wrong value for final width. LayoutParams.MATCH_PARENT returns -1 by default, that's why you don't have a proper animation. So I guess you need to use getParent().getMeasuredWidth() method of NewsDeitalHeaderImage to get the proper final width value:

...
ValueAnimator anim = ValueAnimator.ofInt(NewsDeitalHeaderImage.getMeasuredWidth(), NewsDeitalHeaderImage.getParent().getMeasuredWidth());
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator valueAnimator) {
        // your code here for animation
    }
});
...
romtsn
  • 11,234
  • 2
  • 28
  • 47