ImageView изменить ширину анимации

android animation imageview

389 просмотра

1 ответ

Я пытаюсь сделать анимацию на ImageView, чтобы изменить его ширину, но ничего не произошло

это мой код

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(); 
Автор: Abdelstar Ahmed Источник Размещён: 08.11.2019 11:20

Ответы (1)


0 плюса

Проблема в том, что вы используете неправильное значение для окончательной ширины. по умолчанию LayoutParams.MATCH_PARENTвозвращает -1 , поэтому у вас нет правильной анимации. Поэтому я думаю, вам нужно использовать getParent().getMeasuredWidth()метод, NewsDeitalHeaderImageчтобы получить правильное окончательное значение ширины:

...
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
    }
});
...
Автор: rom4ek Размещён: 20.08.2016 02:15
Вопросы из категории :
32x32