¿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
  • ListView no desplazable dentro de ScrollView
  • ScrollView no está jugando bien con RelativeLayout
  • Escaneando con múltiples RecyclerViews en Layout
  • ¿Por qué el teclado virtual muestra o no cuando se inicia una actividad?
  • Android 7 WebView con wrap_content
  • Hacer scrollbars flash de código (como iOS flashScrollIndicators)
  • Android paddingBottom no funciona sin paddingTop
  • Android Scrollview en RelativeLayout con ButtonBar
  • Detener ScrollView de establecer el enfoque en EditText
  • Scrollview hace que las vistas inferiores desaparezcan en un diálogo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.