Ширина просмотра не изменилась после масштабирования 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();

person Kuno    schedule 31.12.2013    source источник
comment
Я знаю, что это было давно, но вы решили проблему? Если да, то не могли бы вы дать несколько советов? :)   -  person keybee    schedule 24.04.2017


Ответы (2)


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

Отсюда: http://developer.android.com/guide/topics/graphics/view-animation.html

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

person Leaudro    schedule 31.12.2013
comment
Что ж, это касается анимации просмотра. Мой вопрос касался анимации свойств, которая доступна начиная с уровня API 11 или, в моем примере, даже с 14. Преимущество должно заключаться в том, что вам не нужно иметь дело с материалом fillAfter после завершения анимации. developer.android.com/guide/topics/graphics/prop-animation. html - person Kuno; 31.12.2013

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

person TeeTracker    schedule 18.07.2016