Android, что должно быть точкой поворота для поворота изображения вокруг его центра базы

Пожалуйста, внимательно прочитайте весь вопрос, прежде чем отмечать дублирование или закрывать его

Я хочу повернуть изображение (в частности, изображение стрелки ) вокруг своей центральной точки базы.

Например, при запуске мое изображение будет похоже на секундную стрелку в часах на 9. И предположим, что если я поверну это изображение на 30 градусов, он должен выглядеть так, как секундная стрелка секундомера на 10, и если на 120 градусов секунда на 1 секунду.

Поэтому я хочу повернуть это изображение вокруг его центра (вдоль оси x) базы.

Итак, что я должен передать в качестве поворота (X и Y), если я первый код

imageView.setPivotX(1f); imageView.setPivotY(1f); imageView.setRotation(-30); 

Или второй код

 Matrix matrix = new Matrix(); imageView.setScaleType(ScaleType.MATRIX); matrix.postRotate((float) 20, 0f, 0f); imageView.setImageMatrix(matrix); 

Или третий код

 Bitmap myImg = BitmapFactory.decodeResource(getResources(), R.drawable.arrow_0_degree); Matrix matrix = new Matrix(); matrix.postRotate(30); Bitmap rotated = Bitmap.createBitmap(myImg, 0, 1, myImg.getWidth(), myImg.getHeight(), matrix, true); imageView.setImageBitmap(rotated); 

Или четвертый код

 final RotateAnimation rotateAnim = new RotateAnimation(0.0f, degree, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f); rotateAnim.setDuration(0); rotateAnim.setFillAfter(true); imgview.startAnimation(rotateAnim); 

Добавлено изображение для лучшего понимания, которое повернулось в 90 градусов по часовой стрелке.

И я надеюсь, что в будущем Google добавит более четкую документацию о опорных точках.

Заранее спасибо. Введите описание изображения здесь

    Вы были почти правы с четвертым кодом ^^

    Вы можете добиться этого так:

      final RotateAnimation rotateAnim = new RotateAnimation(0.0f, 30, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 1f); rotateAnim.setDuration(0); rotateAnim.setFillAfter(true); mImageView.setAnimation(rotateAnim); rotateAnim.start();