Cómo usar los gestos y los gestos de navegación basada en su aplicación de Android

Android gesture tutorial Android 10

Android gesture tutorial Android 10

Out-of-the-box, Android estándar de componentes de interfaz de usuario soporte de una amplia gama de Android gestos, pero de vez en cuando de su aplicación deba soportar más de onClick!

En este Android gesto tutorial, vamos a estar cubriendo todo lo necesario para implementar una amplia gama de Android gestos. Vamos a crear una amplia gama de aplicaciones simples que proporcionan una visión de los conceptos fundamentales de gestos táctiles, incluyendo cómo Android registra el «ciclo de vida» de un gesto, y cómo se rastrea el movimiento de los dedos individuales en una interacción multi-táctil.

En ocasiones su aplicación deba soportar más de onClick.

Para ayudar a demostrar cómo esta información puede traducirse en proyectos del mundo real, también vamos a crear una aplicación que permite a los usuarios acercar y alejar el zoom de una imagen, utilizando el gesto de pellizcar. Por último, desde Android 10 está a punto de revisar completamente de Android gesto de apoyo, vamos a estar buscando en cómo usted puede actualizar sus aplicaciones para el soporte de Android nueva basada en el gesto de navegación, incluyendo cómo asegurarse de que su propia aplicación gestos no entrar en conflicto con Android de 10 en todo el sistema de gestos.

Lea también: la Construcción de su interfaz de usuario Android: Todo lo que necesita saber acerca de las vistas

¿Cuáles son los gestos táctiles?

Gestos táctiles permiten a los usuarios interactuar con la aplicación mediante el tacto.

Android soporta una variedad de gestos táctiles, incluyendo toque, doble toque, pellizcar, deslizar el dedo, de desplazamiento, con una pulsación larga, arrastre y arrojar. A pesar de arrastrar y aventura son similares, el arrastre es el tipo de desplazamiento que se produce cuando un usuario arrastra el dedo por la pantalla táctil, mientras que una aventura gesto se produce cuando el usuario arrastra y, a continuación, levante el dedo rápidamente.

Android gestos pueden ser divididos en las siguientes categorías:

  • Gestos de navegación. Estos permiten al usuario moverse de su aplicación, y se puede utilizar para complementar otros métodos de entrada, tales como la navegación de los cajones y de los menús.
  • Los movimientos de acción. Como el nombre sugiere, los movimientos de acción permiten al usuario para completar una acción.
  • Transformar los gestos. Estos permiten al usuario cambiar un elemento del tamaño, la posición y la rotación, por ejemplo pellizcar para hacer zoom en una imagen o un mapa.

En Android, el individuo dedos u otros objetos que realizar un gesto de toque se conoce como punteros.

MotionEvents: Comprender el gesto del ciclo de vida de

Un toque de eventos se inicia cuando el usuario coloca uno o más punteros en la pantalla táctil del dispositivo, y termina cuando se retiren estos puntero(s) de la pantalla. Esto comienza Android gestos.

Mientras que uno o más indicadores se encuentran en contacto con la pantalla, MotionEvent objetos de recopilar información acerca de los eventos de toque. Esta información incluye el toque de movimiento en el evento, en términos de las coordenadas X e y, y la presión y el tamaño de la zona de contacto.

Android gesture tutorial

Android gesture tutorial

Un MotionEvent también describe los eventos de toque del estado, a través de un código de acción. Android soporta una larga lista de códigos de acción, pero algunos de los principales códigos de acción incluyen:

  • ACTION_DOWN. Un toque evento haya comenzado. Este es el lugar donde el puntero primero hace contacto con la pantalla.
  • ACTION_MOVE. Se ha producido un cambio durante el evento táctil (entre ACTION_DOWN y ACTION_UP). Un ACTION_MOVE contiene el puntero del más reciente coordenadas X e y, junto con todos los puntos intermedios desde el último hacia ABAJO o MOVER evento.
  • ACTION_UP. El toque evento ha terminado. Este contiene la versión final de la ubicación. Suponiendo que el gesto no está cancelada, todos los eventos de toque concluir con ACTION_UP.
  • ACTION_CANCEL. El gesto fue cancelado, y Android no recibir más información acerca de este evento. Usted debe manejar un ACTION_CANCEL exactamente de la misma manera en que usted maneja un ACTION_UP evento.

El MotionEvent objetos de transmitir el código de la acción y los valores de los ejes para el onTouchBack() el evento método de devolución de llamada para la Vista que recibió este evento táctil. Usted puede utilizar esta información para interpretar el patrón de el gesto de toque, y reaccionar en consecuencia. Tenga en cuenta que cada MotionEvent objeto contiene información acerca de todos los punteros que están actualmente activos, incluso si los punteros no se han movido desde la anterior MotionEvent fue entregado.

Mientras que Android intenta entregar una corriente constante de MotionEvents, es posible que un acontecimiento para ser eliminados o modificados antes de ser entregado con éxito. Para proporcionar una buena experiencia de usuario, la aplicación debe ser capaz de manejar inconsistente MotionEvents, por ejemplo, si se recibe un ACTION_DOWN evento sin recibir un ACTION_UP para el «anterior» el gesto. Esta es una consideración importante para nuestro Android gesto tutorial.

Para ayudar a ilustrar el «ciclo de vida» de un gesto de toque, vamos a crear una aplicación que recupera el código de la acción para cada MotionEvent objeto y, a continuación, imprime esta información a Android Studio Logcat.

En el código siguiente, estamos interceptando cada evento de toque con la invalidación de la onTouchEvent() método y, a continuación, la comprobación de los siguientes valores:

  • Verdadero. Nuestra aplicación ha manejado este evento de toque, y nos debe imprimir el mensaje correspondiente a Logcat.
  • Falso. Nuestra aplicación no ha manejado este evento táctil. El evento continuará a ser pasado a través de la pila, hasta que onTouchEvent devuelve true.

El onTouchEvent() método que se activa cada vez que un puntero de posición, la presión o el área de contacto de los cambios.

En el código siguiente, también estoy usando getActionMasked() para recuperar la acción que se realiza:

importación androidx.appcompat.app.AppCompatActivity;
importación androidx.núcleo.vista.MotionEventCompat; import android.os.Paquete;
import android.util.De registro;
import android.vista.MotionEvent; public class MainActivity extends AppCompatActivity { private static final String ETIQUETA = "MyActivity"; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R. layout.activity_main);
} @Override public boolean onTouchEvent (MotionEvent evento){ int myAction = MotionEventCompat.getActionMasked(evento); switch (myAction) { caso (MotionEvent.ACTION_UP): Registro.yo(TAG, "la acción"); return true; caso (MotionEvent.ACTION_DOWN):
Registro.d(TAG, "Abajo"); return true; caso (MotionEvent.ACTION_MOVE): Registro.d(TAG, "acción de Mover"); return true; caso (MotionEvent.ACTION_CANCEL): Registro.d(TAG, "acción de Cancelar"); return true;
por defecto: return super.onTouchEvent(evento);
}
} }

Instale esta aplicación en su físico smartphone o tablet con Android, y de experimentar la realización de diversos gestos táctiles. Android Studio debe imprimir mensajes diferentes a Logcat, basada en dónde usted está en el gesto de toque del ciclo de vida.

Android Studio will print different messages to Logcat, based on where you are in the touch gesture’s lifecycle.

Android Studio will print different messages to Logcat, based on where you are in the touch gesture’s lifecycle.

OnTouchListener: la Captura de eventos de toque para determinados puntos de vista

Usted también puede escuchar eventos de toque mediante la setOnTouchListener() método para adjuntar una Vista.OnTouchListener a la Vista del objeto. El setOnTouchListener() método registra una devolución de llamada que será invocado cada vez que un toque eventos se envían a su adjunto Ver, por ejemplo, aquí estamos invocando una devolución de llamada cada vez que el usuario toca un ImageView:

Ver imageView = findViewById(R. id.my_imageView);
mivista.setOnTouchListener(nueva OnTouchListener() { public boolean onTouch(Ver v, MotionEvent evento) { //Hacer: Responder a eventos de toque// return true;
}
});

Tenga en cuenta que si utiliza la Vista.OnTouchListener, entonces usted no debe crear un oyente que devuelve false para el ACTION_DOWN evento. Desde ACTION_DOWN es el punto de partida para todos los eventos de toque, un valor de falso hará que la aplicación se quede atascado en ACTION_DOWN, y el que escucha no será llamado para posteriores eventos.

Toque de decantación: la Grabación de movimiento basada en gestos

Gestos táctiles no son siempre exactos! Por ejemplo, es fácil que tu dedo para desplazar ligeramente cuando estaban tratando de tocar un botón, especialmente si usted está utilizando su teléfono inteligente o tableta en el ir, o que tienen problemas de destreza manual.

Para ayudar a prevenir accidentes de desplazamiento, Android gestos utilizar el concepto de «toque de decantación», que es la distancia en píxeles que un puntero se puede viajar antes de que un no-movimiento basado en el gesto, como un grifo, se convierte en un movimiento basado en el gesto, como un lastre.

Toque de decantación es la distancia en píxeles que un puntero se puede viajar antes de que un no-movimiento basado gesto

Cuando se utiliza el movimiento basado en gestos, usted necesita para asegurarse de que el usuario está en control de todo en la pantalla el movimiento que se produce. Por ejemplo, si el usuario está arrastrando un objeto a través de la pantalla, a continuación, la velocidad a la que este objeto es el viaje debe coincidir con la velocidad del usuario en el gesto.

Se puede medir la velocidad de un movimiento basado en el gesto, el uso de Android VelocityTracker clase. En la siguiente Actividad, estoy usando VelocityTracker para recuperar la velocidad de un gesto, y, a continuación, imprimir la velocidad a Android Studio Logcat:

import android.app.De la actividad;
import android.util.De registro;
import android.vista.MotionEvent;
import android.vista.VelocityTracker; public class MainActivity extends Actividad { public static final String ETIQUETA = "Velocidad"; privado VelocityTracker myVelocityTracker; @Override public boolean onTouchEvent(MotionEvent evento) {
obtainVelocityTracker(evento); switch (event.getAction()) { caso MotionEvent.ACTION_UP: final VelocityTracker velocityTracker = myVelocityTracker; //Determinar el puntero de la velocidad// velocityTracker.computeCurrentVelocity(1000); //Recuperar la velocidad para cada uno de puntero// float índice = myVelocityTracker.getXVelocity(); float yVelocity = myVelocityTracker.getYVelocity(); //Registro de la velocidad en píxeles por segundo// Registro.yo(TAG, "índice de:" + índice + ", yVelocity: "+ yVelocity); //Restablecer la velocidad tracker a su estado inicial, listo para grabar el siguiente gesto// myVelocityTracker.clear();
break;
por defecto:
break;
} return true;
} private void obtainVelocityTracker(MotionEvent evento) { si (myVelocityTracker == null) { //Recuperar una nueva VelocityTracker objeto// myVelocityTracker = VelocityTracker.obtener();
} myVelocityTracker.addMovement(evento);
} }

Instalar esta aplicación en tu dispositivo Android y experimentar mediante la realización de diferentes basados en el movimiento de los gestos; la velocidad de cada gesto debe ser impreso en el Logcat de la ventana.

The velocity of each gesture will be printed to Android Studio's Logcat window.

The velocity of each gesture will be printed to Android Studio's Logcat window.

GestureDetector: la Creación de un pinch-to-zoom de la aplicación con Android gestos

Asumiendo que usted está utilizando comunes Android gestos, como toca y pulsación larga, puede utilizar Android GestureDetector clase para detectar gestos sin tener que procesar los eventos de toque.

Para detectar un gesto, tendrás que crear una instancia de GestureDetector y, a continuación, llamar a onTouchEvent(android.vista.MotionEvent) en la Vista#onTouchEvent(MotionEvent) método. A continuación, puede definir cómo este evento táctil debe ser manejado, en la devolución de llamada.

Lea también: la Exploración de Android Q: la Adición de la burbuja de las notificaciones a la aplicación de la

Vamos a crear una aplicación donde el usuario puede hacer zoom dentro y fuera de un ImageView, mediante gestos. Para comenzar, cree un diseño simple que contiene una imagen:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientación="horizontal"> <ImageView android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:scaleType="matrix"
android:src="@dibujable/myImage"/> </LinearLayout>

Para crear el zoom in/zoom out efecto, estoy usando ScaleGestureDetector, que es una comodidad de la clase que puede escuchar un subconjunto de la ampliación de eventos, además de la SimpleOnScaleGestureListener clase auxiliar.

En la siguiente Actividad, estoy creando una instancia de ScaleGestureDetector para mi ImageView y, a continuación, llamar a onTouchEvent(android.vista.MotionEvent) en la Vista#onTouchEvent(Motionvent) método. Por último, estoy definir cómo la aplicación debe manejar este gesto.

import android.os.Paquete;
import android.vista.MotionEvent;
import android.widget.ImageView;
import android.vista.ScaleGestureDetector; import android.gráficos.De la matriz; importación androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { privado de la Matriz imageMatrix = new Matrix(); privado ImageView imageView; privado de flotador escala = 2f; privado ScaleGestureDetector gestureDetector; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R. layout.activity_main); imageView = (ImageView)findViewById(R. id.imageView); //Crear una instancia del gesto detector// gestureDetector = new ScaleGestureDetector(MainActivity.este,nuevo imageListener());
} @Override public boolean onTouchEvent(MotionEvent evento){ //Vamos a gestureDetector inspeccionar todos los eventos// gestureDetector.onTouchEvent(evento); return true;
} //Aplicar la escala de escucha// clase privada imageListener se extiende ScaleGestureDetector.SimpleOnScaleGestureListener{ @Override //Responder a eventos de escalado// public boolean onScale(ScaleGestureDetector detector) { //Devolver el factor de escala de la escala anterior evento// escala *= detector.getScaleFactor(); //Establecer un tamaño máximo y mínimo para nuestra imagen// escala = Matemáticas.max(0.2 f, Matemáticas.min(escala, 6.0 f)); imageMatrix.setScale(escala, escala);
imageView.setImageMatrix(imageMatrix); return true;
}
}
}

Intente instalar esta aplicación en física de un smartphone o tablet con Android, y usted será capaz de reducir y ampliar su imagen elegida, mediante pellizcos y pellizcar-gestos.

La gestión de los gestos multi-touch

Algunos gestos requieren el uso de múltiples indicadores, tales como el gesto de pellizcar. Cada vez que varios punteros hacer contacto con la pantalla, Android genera:

  • Un ACTION_DOWN evento para el primer puntero que toques la pantalla.
  • Un ACTION_POINTER_DOWN para todos los posteriores, no principal punteros que hacen contacto con la pantalla.
  • Un ACTION_POINTER_UP, cuando el principal no es el puntero se quita de la pantalla.
  • Un ACTION_UP evento cuando el último puntero se rompe el contacto con la pantalla.

Por ejemplo, en la siguiente Actividad, estoy detectar si un gesto es de un solo toque o multi-táctil y, a continuación, imprimir un mensaje apropiado para Android Studio Logcat. También tengo la impresión de que el código de la acción para cada evento, y las coordenadas X e y para cada indicador, para proporcionar una visión más clara de cómo Android pistas de indicadores individuales:

import android.app.De la actividad;
import android.util.De registro;
import android.vista.MotionEvent; importación androidx.núcleo.vista.MotionEventCompat; public class MainActivity extends Actividad { public static final String ETIQUETA = "SingleorMulti"; @Override public boolean onTouchEvent(MotionEvent evento) { int action = MotionEventCompat.getActionMasked(evento); Cadena de actionCode = ""; switch (acción) { caso MotionEvent.ACTION_DOWN: actionCode = "Abajo";
break; caso MotionEvent.ACTION_POINTER_DOWN: actionCode = "Puntero hacia Abajo";
break; caso MotionEvent.ACTION_MOVE: actionCode = "Mover";
break; caso MotionEvent.ACTION_UP: actionCode = "Arriba";
break; caso MotionEvent.ACTION_POINTER_UP: actionCode = "Puntero";
break; caso MotionEvent.ACTION_OUTSIDE: actionCode = "Afuera";
break; caso MotionEvent.ACTION_CANCEL: actionCode = "Cancelar";
break;
} Registro.yo(TAG, "La acción es :" + actionCode); int índice = MotionEventCompat.getActionIndex(evento); int xPos = -1; int yPos = -1; if (evento.getPointerCount() > 1) { Registro.yo(TAG, "Multi-Touch de eventos"); } else { Registro.yo(TAG, "Solo Toque de eventos"); return true;
} xPos = (int) MotionEventCompat.getX(evento, index); yPos = (int) MotionEventCompat.getY(evento, index); Registro.yo(TAG, "xPosition:" + xPos + ", yPosition: "+ yPos); return true;
}
}

La gestión de los gestos en ViewGroups

Al manejar eventos de toque dentro de un ViewGroup, es posible que el ViewGroup pueden tener los niños que son el objetivo de los diferentes eventos de toque de los padres de familia ViewGroup.

Para asegurar que cada niño reciba la correcta eventos de toque, necesitará reemplazar la onInterceptTouchEvent() método. Este método es llamado cada vez que se detecta un evento táctil en la superficie de un ViewGroup, que permite interceptar un evento de toque antes de que sea enviado al hijo Vistas.

Lea también:

Si el onInterceptTouchEvent() método devuelve true, entonces el niño que era anteriormente el manejo de los eventos de toque recibirá un ACTION_CANCEL, y este evento será enviada a los padres del onTouchEvent() método en su lugar.

Por ejemplo, en el siguiente fragmento estamos decidir si interceptar un evento de toque, en función de si es un desplazamiento del evento:

@Override public boolean onInterceptTouchEvent(MotionEvent ev) { final int action = MotionEventCompat.getActionMasked(ev); si (acción == MotionEvent.ACTION_CANCEL || acción == MotionEvent.ACTION_UP) { mIsScrolling = false; //No interceptar los eventos de toque// return false;
} switch (acción) { caso MotionEvent.ACTION_MOVE: { si (mIsScrolling) { //Interceptar los eventos de toque// return true;
} } ...
...
... return false;
} @Override public boolean onTouchEvent(MotionEvent ev) { //Hacer: Manejar los eventos de toque// }
}

Ejecutar esta aplicación en su dispositivo Android, y el Logcat resultado debe ser algo como esto:

Asegúrate de que tu aplicación en un blanco fácil: la Expansión de áreas tangible

Usted puede hacer pequeños elementos de interfaz de usuario más fácil interactuar con, ampliando el tamaño de la Vista tangible de la región, a veces referido como el hit rectángulo. Alternativamente, si su interfaz de usuario contiene múltiples interactivo de elementos de interfaz de usuario, entonces usted puede reducir su irresistible objetivos, para evitar que los usuarios activen el «mal Vista».

Usted puede ajustar el tamaño de un niño de la Vista tangible de la zona, mediante la TouchDelegate clase.

Vamos a crear un botón, y luego ver cómo nos gustaría ampliar este botón tangible de la región.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:herramientas="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
herramientas:context=".MainActivity"> Botón <
android:id="@+id/botón de"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Button" /> </RelativeLayout>

Para cambiar la Vista del irresistible región, debemos completar los siguientes pasos:

1. Recuperar la Vista principal y después de un Ejecutable en el subproceso de interfaz de usuario

Antes de llamar a la getHitRect() método y recuperar el niño tangible de la zona, tenemos que asegurarnos de que el padre ha establecido con su hijo Vistas:

parentView.post(new Runnable() {
@Override public void run() { Rect delegateArea = new Rect();

2. Recuperar los límites de la del niño tangible de la zona

Podemos recuperar el botón de la corriente irresistible de destino, mediante el getHitRect() método:

Rect delegateArea = new Rect();
Botón myButton = (Button) findViewById(R. id.el botón);
...
...
...
myButton.getHitRect(delegateArea);

3. Extender los límites de la irresistible área

Aquí, vamos a aumentar los botones tactiles de destino en la parte inferior y los lados derechos:

delegateArea.derecho += 400;
delegateArea.abajo += 400;

4. Crear una instancia de un TouchDelegate

Por último, tenemos que pasar la ampliación de la irresistible destino a una instancia de Android TouchDelegate clase:

TouchDelegate touchDelegate = new TouchDelegate(delegateArea,
myButton);
si (Ver.clase.isInstance(myButton.getParent())) { ((Ver) myButton.getParent()).setTouchDelegate(touchDelegate);

Aquí está nuestra completado MainActivity:

importación androidx.appcompat.app.AppCompatActivity;
import android.os.Paquete;
import android.widget.Botón;
import android.vista.TouchDelegate;
import android.vista.Vista;
import android.widget.Brindis;
import android.gráficos.Rect; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R. layout.activity_main); Ver parentView = findViewById(R. id.el botón); parentView.post(new Runnable() { @Override public void run() { Rect delegateArea = new Rect(); Botón myButton = (Button) findViewById(R. id.el botón);
myButton.setEnabled(true); myButton.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View View) {
Pan tostado.makeText(MainActivity.esto, El botón de "clic",
Pan tostado.LENGTH_SHORT).show();
}
}); myButton.getHitRect(delegateArea); delegateArea.derecho += 400; delegateArea.abajo += 400; TouchDelegate touchDelegate = new TouchDelegate(delegateArea,
myButton); si (Ver.clase.isInstance(myButton.getParent())) { ((Ver) myButton.getParent()).setTouchDelegate(touchDelegate);
}
}
});
}
}

Instale este proyecto en su dispositivo Android y tratar de tocar alrededor de la parte derecha e inferior de los botones ya que hemos ampliado el irresistible área en una cantidad significativa, el brindis debe aparecer cada vez que toque en cualquier lugar cerca de el botón.

Android 10 del nuevo modelo de navegación: basada en el Gesto de navegación

Comenzando con la API de nivel 29, Android soporta completa basada en el gesto de navegación.

Los usuarios en la última y mejor versión de Android será capaz de provocar las siguientes acciones mediante gestos solos:

  • De la espalda. Desliza el dedo hacia adentro desde el borde derecho o izquierdo de la pantalla.
  • Casa. Desliza el dedo hacia arriba desde la parte inferior de la pantalla.
  • Lanzamiento De Asistente. Deslice el dedo desde la esquina inferior de la pantalla.

Android 10 continuará para apoyar el tradicional 3-botón de navegación, por lo que los usuarios tendrán la opción de volver a botón de navegación basada en la, si lo prefieren.

In Android 10, gesture-based navigation is the default.

In Android 10, gesture-based navigation is the default.

Según Google, basada en el gesto de navegación será el predeterminado para Android de 10 y más alto, por lo que necesita para asegurarse de que su aplicación proporciona una buena experiencia de usuario con Android gesto nuevo basado en el modelo.

Tome su interfaz de usuario, de borde a borde

Basado en gestos de navegación hace que más de la pantalla disponible para su aplicación, de modo que puede ofrecer una experiencia inmersiva mediante la ampliación de los contenidos de la aplicación, de borde a borde.

De forma predeterminada, las aplicaciones se colocan debajo de la barra de estado y por encima de la barra de navegación (referidos colectivamente como el sistema de barras). En un borde a borde de la pantalla, su aplicación se sentó detrás de la barra de navegación, y, opcionalmente, detrás de la barra del sistema si es que tiene sentido para su aplicación en particular.

Se puede decir que el sistema disponga la aplicación de detrás de la barra del sistema, mediante la Vista.setSystemUiVisibility() método, y el SYSTEM_UI_FLAG_LAYOUT_STABLE y SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION banderas. Por ejemplo:

vista.setSystemUiVisibility(Ver.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | Vista.SYSTEM_UI_FLAG_LAYOUT_STABLE);

Tenga en cuenta que si usted está utilizando una Vista de la clase que gestiona automáticamente la barra de estado, tales como CoordinatorLayout, a continuación, estos indicadores pueden ser establecidas.

Encender el sistema de la barra transparente

Una vez que su aplicación está mostrando, de borde a borde, usted necesita para asegurarse de que el usuario puede ver el contenido de la aplicación detrás del sistema de barras.

Para hacer que el sistema de barras totalmente transparente, añadir el siguiente tema:

<style name="AppTheme" parent="...">  <item name="android:navigationBarColor">@android:color/transparente</item>  <item name="android:statusBarColor">@android:color/transparente</item> </style>

Android 10 va a cambiar el sistema de color de la barra de forma automática basándose en el contenido detrás de él, en un proceso conocido como de color dinámico de adaptación, así que usted no necesita preocuparse de realizar estos ajustes manualmente.

Verificación de conflicto de gestos

Usted necesitará prueba de que Android gesto nuevo sistema de navegación no entra en conflicto con la aplicación existente de gestos.

En particular, se debe comprobar que el gesto Atrás (deslizar hacia adentro desde el borde derecho o izquierdo de la pantalla) no desencadenan ninguna de la aplicación de elementos interactivos. Por ejemplo, si la aplicación cuenta con un cajón de navegación en el lado izquierdo de la pantalla, a continuación, cada vez que el usuario intenta arrastrar este cajón abierto, que va a desencadenar Android gesto Atrás, y pueden acabar de salir de la aplicación.

Si las pruebas revelan gesto de conflictos, a continuación, puede proporcionar una lista de las áreas dentro de su aplicación, donde el sistema no debe interpretar eventos de toque como de Vuelta gestos.

Para proporcionar esta lista de exclusión rects, pasar una Lista para Android la nueva Vista.setSystemGestureExclusionRects() método, por ejemplo:

Lista de exclusionRects; public void onLayout( boolean changedCanvas, int izquierda, int superior, int derecha, int inferior) {
setSystemGestureExclusionRects(exclusionRects);
} public void onDraw(Canvas canvas) {
setSystemGestureExclusionRects(exclusionRects);
}

Tenga en cuenta que sólo se debe desactivar el gesto Atrás para las Vistas que requieren una precisión gesto dentro de un área pequeña, y no por grandes regiones o simple toque en los objetivos, como los Botones.

¿Qué acerca de Android 10 la Casa de gesto?

En el momento de la escritura, no es posible optar por Android 10 la Casa de gesto (deslizar hacia arriba desde la parte inferior de la pantalla). Si usted está experimentando problemas con el gesto, entonces una posible solución es establecer el reconocimiento táctil de los umbrales de uso de WindowInsets.getMandatorySystemGestureInsets().

Programming on Laptop Android Studio

Programming on Laptop Android Studio

Basada en el gesto de navegación para las apps de juegos

Algunas aplicaciones, como los juegos de móvil, no tienen una jerarquía, pero que pueden requerir que el usuario realice de los gestos en las áreas que generan Android gesto del sistema de navegación.

Si usted está encontrando gesto conflictos en su aplicación de juego, a continuación, utilizar la Ventana.setSystemGestureExclusionRects() método para proporcionar una lista de las áreas donde el sistema no debe interpretar eventos de toque como de Vuelta gestos.

Alternativamente, usted puede solicitar que su solicitud se presenta en modo inmersivo, que desactiva todos los gestos del sistema.

Puede habilitar el modo inmersivo llamando setSystemUiVisibility() y, a continuación, pasando los siguientes indicadores:

  • SYSTEM_UI_FLAG_FULLSCREEN. Todos los no-crítica de los elementos del sistema se oculta, permitiendo que el contenido de la aplicación para apoderarse de la totalidad de la pantalla.
  • SYSTEM_UI_FLAG_HIDE_NAVIGATION. Ocultar temporalmente el sistema de navegación.
  • SYSTEM_UI_FLAG_IMMERSIVE. Este punto de Vista debe permanecer interactivo cuando la barra de estado está oculto. Tenga en cuenta que para este indicador tiene ningún efecto, debe ser utilizado en combinación con SYSTEM_UI_FLAG_HIDE_NAVIGATION.

Durante el modo inmersivo, el usuario puede volver a habilitar el sistema de gestos en cualquier punto, deslice rápidamente el dedo desde la parte inferior de la pantalla.

Mejores prácticas: el Uso de los gestos de manera efectiva

Ahora que hemos visto cómo implementar diferentes gestos táctiles, y los pasos que puede tomar para obtener su aplicación listos para Android gesto nuevo sistema de navegación, echemos un vistazo a algunas de las mejores prácticas para garantizar el uso de los gestos de manera efectiva.

No deje a sus usuarios de adivinanzas: Resaltar componentes interactivos

Si usted está utilizando el estándar de puntos de vista, entonces la mayor parte del tiempo los usuarios automáticamente debe ser capaz de identificar la aplicación de componentes interactivos, y comprender cómo interactúan con ellos. Por ejemplo, si un usuario ve un botón, a continuación, inmediatamente se sabe que los que están en espera pulse el botón. Sin embargo, en ocasiones puede no ser claro que un particular punto de Vista es interactivo, y en estos casos deberá proporcionar con algunas otras señales visuales.

Hay varias maneras que usted puede llamar la atención a su aplicación Vistas interactivas. En primer lugar, se podría agregar un corto de animación, tales como un efecto de pulsación, o elevar la Vista, por ejemplo, la elevación de una tarjeta que el usuario puede arrastrar en la pantalla para ampliar.

highlighting interactive UI components

highlighting interactive UI components

Alternativamente, usted podría ser más explícito y el uso de iconos, tales como una flecha que apunta a la Vista que el usuario debe interactuar con el siguiente.

Para obtener más complejo de interacciones, se podría diseñar un corto de animación que muestra cómo el usuario debe interactuar con la Vista, por ejemplo la animación de la tarjeta para que se deslice parcialmente a través de la pantalla y luego de vuelta otra vez.

Uso de animaciones de transformación y gestos

Cuando un usuario realiza un transformador gesto, afectados todos los elementos de interfaz de usuario debe animar de una manera que indica qué va a pasar cuando este gesto se ha completado. Por ejemplo, si el usuario es pellizcar para reducir una imagen, a continuación, la imagen debería disminuir en tamaño, mientras que el usuario está realizando en ese gesto, en lugar de «ajuste» a la nueva tamaño una vez que el gesto es completa.

Proporcionar señales visuales para el progreso de las acciones

Por los gestos que ejecutar acciones, se deberá comunicar a la acción de este gesto realizar una vez que se completa. Por ejemplo, cuando se empieza a arrastrar un correo electrónico en la aplicación de Gmail, lo voy a revelar un Archivo de icono, denunciando que este correo electrónico se archivarán en caso de continuar con el arrastre de la acción.

The Gmail mobile app uses icons for its action gestures.

The Gmail mobile app uses icons for its action gestures.

Por lo que indica la acción que se ha completado , mientras que el usuario está realizando la acción, el gesto, les está dando la oportunidad de abortar el gesto, si el resultado no es lo que esperaba.

El embalaje de este Android gesto tutorial

En este artículo, te mostramos cómo aplicar diversos gestos en sus aplicaciones para Android, y cómo recuperar la información acerca del progreso de los gestos, incluyendo el gesto de velocidad y si hay varios punteros involucrados. También cubrimos Android 10 del gesto nuevo sistema de navegación, y los pasos que usted puede tomar para asegurarse de que su solicitud está listo para esta gran revisión en la forma en que los usuarios interactúan con sus dispositivos Android.

¿Tienes ya las mejores prácticas para el uso de Android gestos en su aplicación? Háganos saber en los comentarios de abajo!

Ahorrar un 60% en nuestra Introducción al Curso de Desarrollo Android

Android Autoridad ha creado un curso para aprender a desarrollar Aplicaciones para Android! Ninguna Codificación Se Requiere Experiencia. Comience Su Viaje en Convertirse en un Desarrollador de Android hoy en día.

Más posts acerca de desarrollo de Android

Deja un comentario

A %d blogueros les gusta esto: