Android: возвращаемое значение getX () и getY () при повороте ImageView - PullRequest
0 голосов
/ 11 мая 2018

У меня есть FrameLayout например, вот так:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 

xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/tools_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">

    <ImageView
        android:id="@+id/imgv1"
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:layout_gravity="center_vertical|center_horizontal"
        app:cameraCropOutput="true"
        app:cameraPlaySounds="false" />

    <ImageView
        android:id="@+id/imgv2"
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:visibility="gone" />

</FrameLayout>

Для imgv1 пользователь может перемещать, масштабировать и поворачивать изображение.После того, как пользователь перемещает imgv1, например, перетаскивая его на экран, если я использую:

ImageView imgv1;
float xcoordinate, ycoordinate;

xcoordinate = imgv1.getX();
ycoordinate = imgv1.getY();

Если я не повернул imgv1, то getX() и getY вернутположение верхнего левого угла, как можно видеть здесь:

enter image description here

, поэтому в этом случае значение xcoordinate равно x и значениеxcoordinate равно y.

Теперь предположим, что я повернул imgv1 и поместил верхний левый угол в то же место, что и раньше, то есть в точке (x и y), как показано здесь:

enter image description here

Теперь, когда я бегу:

xcoordinate = imgv1.getX();       
ycoordinate = imgv1.getY();

Я больше не получаю x и y, в зависимости от углаЯ получаю разные странные значения.Что это за возвращаемые значения и почему они не x и y?

В каком-то смысле после поворота нет верхнего левого угла.Так что getX() возвращает крайнюю левую точку, которая является значением x для левого нижнего угла повернутого прямоугольника, а getY() возвращает y?

...