У меня есть 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
вернутположение верхнего левого угла, как можно видеть здесь:
, поэтому в этом случае значение xcoordinate
равно x
и значениеxcoordinate
равно y
.
Теперь предположим, что я повернул imgv1
и поместил верхний левый угол в то же место, что и раньше, то есть в точке (x и y), как показано здесь:
Теперь, когда я бегу:
xcoordinate = imgv1.getX();
ycoordinate = imgv1.getY();
Я больше не получаю x
и y
, в зависимости от углаЯ получаю разные странные значения.Что это за возвращаемые значения и почему они не x
и y
?
В каком-то смысле после поворота нет верхнего левого угла.Так что getX()
возвращает крайнюю левую точку, которая является значением x для левого нижнего угла повернутого прямоугольника, а getY()
возвращает y
?