4

为 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();
4

2 回答 2

0

我不认为 View 动画会改变这些属性(大小、边界或可见性)。您必须在动画结束时自己执行此操作。

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

注意:无论您的动画如何移动或调整大小,保存动画的 View 的边界都不会自动调整以适应它。即便如此,动画仍然会被绘制到其 View 的边界之外,并且不会被剪裁。但是,如果动画超出了父 View 的边界,就会发生剪辑。

于 2013-12-31T14:21:19.993 回答
0

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

于 2016-07-18T11:51:11.743 回答