如何将 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 KTX 的 doOnPreDraw
扩展即可访问宽度和高度,即:
view.apply {
doOnPreDraw {
pivotX = width.toFloat()
pivotY = height.toFloat()
}
}
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 KTX 的 doOnPreDraw
扩展即可访问宽度和高度,即:
view.apply {
doOnPreDraw {
pivotX = width.toFloat()
pivotY = height.toFloat()
}
}