Подтвердить что ты не робот

Где прокручивается Android View.scrollTo(x, y)?

scrollTo(int x, int y) говорит:

x положение x для прокрутки до

y положение y для прокрутки до

onScrollChanged(int l, int t, int oldl, int oldt) говорит:

l Текущее начало горизонтальной прокрутки.

t Текущее начало вертикальной прокрутки.

Что я хотел бы знать и не могу найти нигде, где х, у? Верхний левый? Центр? Я пробовал несколько тестов и не могу понять.

4b9b3361

Ответ 1

После обширных исследований и тестирования я наконец понял, как работает scrollTo().

(0,0) - это координаты в верхнем левом углу контейнера View. При прокрутке к любой точке (x,y) верхний левый угол View будет помещен в координаты (x,y).

Если View показывает изображение, Bitmap, больше, чем View, прокрутка до (0,0) приведет к View в центре изображения. Таким образом, верхний левый угол изображения будет расположен в (-dX/2, -dY/2) и в правом нижнем углу в (mW - dX/2, mH - dY/2). dX представляет собой разницу между ширинами изображения и View. А dY представляет разницу между высотами изображения и View.

Чтобы увидеть нижний правый угол и не пройти его (ниже или дальше вправо), это правильный вызов: scrollTo(mW - ivW - dX/2, mH - ivH - dY/2);

Прилагаемое изображение показывает графическое представление View и позиционирование изображения растрового изображения.

Graphical representation of the relationship between the image and the view.

Ответ 2

Из getX():

Визуальная позиция x этого вида в пикселях. Это эквивалентно свойство translationX плюс текущее свойство left.

Для getY() это сверху. Итак, (0,0) - верхний левый.

Я не знаю, принимает ли scrollTo() свойство translationX, потому что оно "последнее", и я некоторое время не кодировался, но я бы сказал, что так оно и есть.