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,954
  • 10
  • 58
  • 80
Abdelstar Ahmed
  • 132
  • 1
  • 10

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,704
  • 2
  • 31
  • 49