在缩放ObjectAnimator之后,视图宽度未更改

时间:2013-12-31 14:15:21

标签: android android-animation android-custom-view 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();

2 个答案:

答案 0 :(得分:0)

我认为View动画不会改变这些属性(大小,边界或可见性)。你必须在动画结束时自己动手。

从此:http://developer.android.com/guide/topics/graphics/view-animation.html

  

注意:无论动画如何移动或调整大小,都是边界   保存动画的视图不会自动调整为   容纳它。即便如此,动画仍然会超越   其视图的边界,不会被剪裁。但是,裁剪会   如果动画超出父视图的边界,则会出现。

答案 1 :(得分:0)

没有机会使用VPA为宽度或高度设置动画, 尝试使用value-property-animator compat:https://stackoverflow.com/a/38435848/1835650