Как Android scrollview работает внутри? - PullRequest
1 голос
/ 05 марта 2020

Мне очень любопытно понять, как работает ScrollView. ScrollView делает много интересных вещей, например, отображает только часть своего контента и заставляет его двигаться в зависимости от сенсорных событий пользователя.

Я попытался прочитать ..../Library/Android/sdk/sources/android-29/android/widget/ScrollView.java, чтобы понять внутренний механизм ScrollView, но я слишком сложен, чтобы gr asp. Может кто-нибудь разбить его на его основы и объяснить, как это работает, пожалуйста?

Если бы мне пришлось написать свой собственный вид прокрутки, как мне это сделать, и какие фундаментальные понятия я должен понять о Android UI внутренний механизм?

1 Ответ

2 голосов
/ 05 марта 2020

Наиболее важные моменты:

  1. Переопределяет public boolean onInterceptTouchEvent(MotionEvent ev), который отвечает за запуск фактического события касания, когда пользователь начинает перетаскивание.
  2. Когда перехват возвращает значение true ScrollView принимает касание событие и public boolean onTouchEvent(MotionEvent ev) начинает вызываться. Он просто отслеживает расстояние перетаскивания и вычисляет любые броски, выполненные пользователем.
  3. Во время анимации перетаскивания или бросания вызывается public void scrollTo(int x, int y). Это основной метод, который эффективно применяет видимое смещение ко всем дочерним элементам.

Сам исходный файл довольно сложен, потому что он обрабатывает крайние случаи и более «скучные» вещи, такие как прокрутка клавиатуры, навигация по фокусу, события специальных возможностей и т. Д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...