使用View的setPivotX(float pivotX)、setPivotY(float pivotY)方法设置轴点
当我们对一个View设置缩放动画时,缩放轴点默认是该View的中心点。如果我们想改变缩放轴点位置,可以通过setPivotX(float pivotX)设置缩放轴点X轴的坐标,通过setPivotY(float pivotY)设置缩放轴点Y轴的坐标。
下面以一个view的缩放动画为例:
findViewById(R.id.view).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
//设置缩放轴点为view的中心点(默认是中心点)
view.setPivotX(view.getWidth() / 2);
view.setPivotY(view.getHeight() / 2);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
view.animate()
.scaleX(2.0f)
.scaleY(2.0f)
.setInterpolator(new BounceInterpolator())
.setDuration(500)
.start();
return true;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
view.animate()
.scaleX(1.0f)
.scaleY(1.0f)
.setInterpolator(new BounceInterpolator())
.setDuration(500)
.start();
return true;
}
return false;
}
});
在view执行缩放动画前,我们设置了view的中心点为缩放轴点,缩放效果如下:
将view的缩放轴点设置为view的右下角:
//设置缩放轴点为view的右下角
view.setPivotX(view.getWidth());
view.setPivotY(view.getHeight());
缩放效果如下:
将view的缩放轴点设置为view的左上角:
//设置缩放轴点为view的左上角
view.setPivotX(0);
view.setPivotY(0);
缩放效果如下: