Ширина представления не изменяется после масштабирования ObjectAnimator

Не следует ли изменить ширину после того, как я одушевляю свойство scaleX? Я заметил, что площадь сжимаемого объекта уменьшается, когда я уменьшаю ширину представлений, поэтому я предполагаю, что ширина должна быть адаптирована. Но когда я вызываю view.getWidth (), я все еще получаю начальное значение.

Log.d(TAG, "" + getWidth()); //Initial value setPivotX(getWidth() / 2); ObjectAnimator animator = ObjectAnimator.ofFloat(this, View.SCALE_X, 1.0f, 0.8f); animator.setInterpolator(new DecelerateInterpolator(1)); animator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { Log.d(TAG, "" + getWidth()); //Initial value :( } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); animator.start(); 

Я не думаю, что анимации View изменяют эти свойства (размер, границы или видимость). Вы должны сделать это самостоятельно, в конце анимации.

Из этого: http://developer.android.com/guide/topics/graphics/view-animation.html

Примечание. Независимо от того, как ваша анимация может перемещаться или изменять размер, границы представления, которые содержат вашу анимацию, не будут автоматически настраиваться для ее размещения. Тем не менее, анимация по-прежнему будет выходить за пределы ее представления и не будет обрезана. Тем не менее, отсечение произойдет, если анимация превышает границы родительского представления.

Нет возможности анимации ширины или высоты с помощью VPA, попробуйте это с помощью сопоставления value-property-animator: https://stackoverflow.com/a/38435848/1835650