如何将 PivotX 设置到视图的右边缘? (不适用于动画)

How to set PivotX to the right edge of a view? (Not for animation)

View.setPivotX(float value) 

一开始我以为这个方法需要一个"percentage"作为输入,其中0f代表左边,1f代表右边。

但是经过测试,并不是。而从documentation来看,虽然不是很清楚,但是好像需要传入一个绝对位置,以像素为单位。

我试过view.setPivotX(view.getRight()),但结果不是我所期望的。视图变为屏幕外。

所以...我怎样才能正确地将视图旋转到其右边缘? (下边缘相同,对于 PivotY)

P.S。请注意,我不是为了执行动画而要求的,我只是想按一定比例缩小视图的大小。

左上:

view.setPivotX(0);
view.setPivotY(0);

左中:

view.setPivotX(0);
view.setPivotY(view.getHeight() / 2);

左下角:

view.setPivotX(0);
view.setPivotY(view.getHeight());

如果您想在 Activity onCreate()Fragment onCreateView(...) 方法中设置数据透视(当观看次数尚未测量时),您可以这样做:

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            view.setPivotX(0);
            view.setPivotY(0);                

            //some other view transformations

            view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
    });

Kotlin 版本:

// top left
view.pivotX = 0f
view.pivotY = 0f

// bottom right
view.pivotX = width.toFloat()
view.pivotY = height.toFloat()

...

在 Activity 的 onCreate() 或 Fragment 的 onCreateView(...) 中,您只需使用 Android KTXdoOnPreDraw 扩展即可访问宽度和高度,即:

view.apply {
    doOnPreDraw {
        pivotX = width.toFloat()
        pivotY = height.toFloat()
    }
}