Я узнал, что setPivotX
(также setPivotY
) работает странно в Android. Если вы установите точку поворота, когда масштаб просмотра установлен на 1.00f, ничего не происходит (только изменения поворота). Но если масштаб не равен 1.0f (например, setScaleX(0.9f)
), и вы устанавливаете точку поворота, вид перемещается относительно (?) На новый опорный стержень. Разве это не странно? Я знаю, что горизонтальные и вертикальные положения (переводы) не связаны со значением поворота, но почему вид движется с масштабным коэффициентом, чем другие 1.0f?
Пожалуйста, проверьте это с помощью и без масштабирующей части.
public class ScaleView extends View {
private final ScaleGestureDetector mScaleGestureDetector;
public ScaleView(Context context, AttributeSet attrs) {
super(context, attrs);
//setScaleX(0.9f);
//setScaleY(0.9f);
mScaleGestureDetector = new ScaleGestureDetector(context, new ScaleGestureDetector.OnScaleGestureListener() {
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
// does nothing intentionally
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
setPivotX(detector.getFocusX());
setPivotY(detector.getFocusY());
return true;
}
@Override
public boolean onScale(ScaleGestureDetector detector) {
return false;
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mScaleGestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
}
Как установить ту же позицию зрения, которая была до поворота изменилось?