¿La lógica detrás de startScroll en scroller?

No obtengo la idea de startScroll() en esta documentación .

Dice:

Los números positivos desplazarán el contenido hacia la izquierda.

No lo entiendo. Si 0 está siempre a la izquierda ¿por qué desplazarse hacia la izquierda? Y si es negativo, se desplazará hacia la derecha.

¿Pero por qué? Es tan difícil de rodear mi cabeza. ¿Cuál es la lógica detrás de esto? ¿Por qué mover positivo a izquierda?

En el juego y la programación gráfica 0 siempre será superior izquierda o bot-izquierda, pero siempre estará a la izquierda. Por lo tanto, tendrá sentido mover a la derecha con números positivos y pasar a la izquierda con negativo. ¿Pero por qué es diferente en startScroll?

Sólo estoy preguntando porque soy muy curioso por qué lo diseñó así.

Para ilustrar lo que está pasando, vea el dibujo:

  • Los dibujos superiores muestran el sistema de coordenadas: (0,0) está en la parte superior izquierda, y las direcciones positivas están a la derecha (coordenada x) y hacia abajo (coordenada y).
  • Las ilustraciones de abajo muestran el efecto del desplazamiento, tal como aparece cuando el "puerto de vista" se está moviendo.
  • A la izquierda está la posición antes de la llamada para desplazarse
  • A la derecha está la posición después de la llamada para desplazarse por x = + 2, y = + 3
  • El rectángulo azul claro es el "puerto de visualización" de la pantalla: el método de desplazamiento está moviendo realmente este rectángulo (la representación de la pantalla) y no el contenido. Ver como una cámara que mirar el mundo a través.
  • El punto rojo es sólo un elemento colocado en la vista, y no se mueve. Míralo como el mundo que miras.

Puede ver que mover el "puerto de vista" en positivo x un resultado de direcciones y en el punto rojo parecen estar moviéndose hacia arriba y hacia la izquierda. Al igual que mover una cámara a la derecha hará que el mundo en el movimiento de vídeo a la izquierda.

Introduzca aquí la descripción de la imagen

De hecho, está desplazando la vista hacia la derecha, lo que hace que la vista de contenido se desplace hacia la izquierda.

Tener |A|B|C| , Ahora el desplazamiento por valor positivo dará lugar a un desplazamiento a la derecha, que desplaza el contenido real a la izquierda: |B|C|A no es visible ya, porque se considera como un contenido y se desplaza a la izquierda.

Podemos imaginar un rollo de dos formas diferentes. Una es que la ventana se está moviendo y la otra es que el contenido se está moviendo. Según la documentación de Android de getScrollX ()

Devuelve la posición de desplazamiento hacia la izquierda de esta vista. Este es el borde izquierdo de la parte que se muestra en la vista. No es necesario dibujar ningún píxel más a la izquierda, ya que están fuera del marco de la vista en pantalla.

Está claro que Android prefiere el scroll de contenido respectivo en lugar de uno de ventana respectiva. En contenido scrolls respectivos

Los números positivos desplazarán el contenido hacia la izquierda.

No sólo startScroll() , otros métodos como View.scrollBy() , View.scrollTo() , etc. trabajan con la misma idea.

Si usted pregunta "¿cuál es la imaginación más natural, contenido respectivo o ventana respectiva?", Diré "no sé".

La vista Contenedor está fija en la pantalla. Cuando se desplaza a la derecha, los elementos correctos continúan fluyendo hacia la izquierda. Así, cuando lo haces

 scroller.startScroll (int 2 /*startX */, int startY, int dx, int dy, int duration); 

Hace que su contenido se desplace hacia la izquierda.

Scroller es en realidad la barra lateral horizontal o vertical, que aparecen cuando hay un gesto de desplazamiento. Piense en el movimiento con respecto a scroller y observe su comportamiento en una aplicación. Usted comprenderá por qué es implementar así. Usted está pensando en lo que respecta a la posición de contacto, causando la confusión.

  • Android ScrollView puede alojar sólo un hijo directo
  • Android scrollview no se llena la vista de los padres
  • Scrollview dentro de un fragmento de viewpager no se desplaza cuando se muestra el teclado
  • Cómo mostrar siempre la barra de desplazamiento
  • NestedScrollView (NSV) en CoordinatorLayout (CL): NSV no en la parte superior cuando se carga
  • Scrollview es extremadamente lento en ics (android 4.0) cuando contiene una larga textview
  • Android: detecta cuando ScrollView detiene el desplazamiento
  • Las filas ListView de Android en ScrollView no se muestran completamente - recortadas
  • Android ViewPager con ScrollViews con ViewPagers dentro de ScrollViews
  • Barra de botones inferior de Android y vista de desplazamiento con tema de diálogo
  • Cuadrícula de imágenes dentro de ScrollView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.