Куда Android View.scrollTo (x, y) прокручивается до? - PullRequest
22 голосов
/ 15 октября 2011

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

x позиция x для прокрутки до

y y позиция для прокрутки до

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

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

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

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

Ответы [ 2 ]

65 голосов
/ 21 октября 2011

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

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

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

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

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

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

1 голос
/ 15 октября 2011

С getX():

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

Для getY() это сверху. Таким образом, (0,0) вверху слева.

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

...