Android - ObjectAnimator设置透视值

Anu*_*ool 5 android pivot android-animation scaleanimation

我想要一个相对布局放大,视图的底部应该是固定的.
我有一个相对布局 -

private RelativeLayout rlOutdoorSection;
Run Code Online (Sandbox Code Playgroud)

初始化它 -

rlOutdoorSection = (RelativeLayout) findViewById(R.id.rlOutdoorSection);
Run Code Online (Sandbox Code Playgroud)

创建了一个ObjectAnimator -

scaleUpOutdoor = ObjectAnimator.ofFloat(rlOutdoorSection, "scaleY", 1f,
            2.6f);
    scaleUpOutdoor.setDuration(3000);
Run Code Online (Sandbox Code Playgroud)

开始动画 -

scaleDownOutdoor.start();
Run Code Online (Sandbox Code Playgroud)

目前,视图将在视图中心使用透视值进行缩放.

如何确保视图缩放,视图底部固定?

提前致谢.

Anu*_*ool 10

首先,我们必须计算HEIGHT视图 -

iOutdoorCompressedHeight = rlOutdoorSection.getMeasuredHeight();
Run Code Online (Sandbox Code Playgroud)

使用此height作为视角必须缩放的枢轴.

rlOutdoorSection.setPivotX(0f);
rlOutdoorSection.setPivotY(iOutdoorCompressedHeight);
Run Code Online (Sandbox Code Playgroud)

这里的技巧可以是获得测量的视图高度.
Activity计算高度

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    super.onWindowFocusChanged(hasFocus);
    // Here calculate the height / width
}
Run Code Online (Sandbox Code Playgroud)

FRAGMENT使用全局布局监听器中 -

rlOutdoorSection = (RelativeLayout) vMain
            .findViewById(R.id.rlOutdoorSection);
    ViewTreeObserver vtoOutdoor = rlIndoorSection.getViewTreeObserver();
    vtoOutdoor.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            iOutdoorCompressedHeight = rlOutdoorSection.getMeasuredHeight();
            rlOutdoorSection.setPivotX(0f);
            rlOutdoorSection.setPivotY(iOutdoorCompressedHeight);

        }
    });
Run Code Online (Sandbox Code Playgroud)

希望这对一些人有所帮助.