Ir al contenido

Más visitados

Visitados recientemente

navigation

Definir vistas de recorte y sombras

Material Design introduce una elevación para los elementos de la IU. La elevación ayuda a los usuarios a comprender la importancia relativa de cada elemento y a centrar su atención en la tarea para realizar.

La elevación de una vista, representada por la propiedad Z, determina la apariencia visual de su sombra: las vistas con valores Z superiores, proyectan sombras más grandes y suaves. Las vistas con valores Z superiores ocluyen las vistas con valores Z inferiores. Sin embargo, el valor Z de una vista no afecta el tamaño de la vista.

El padre de la vista elevada se encarga de dibujar las sombras y así, sujetas al recorte de vista estándar, son recortadas por el padre de manera predeterminada.

La elevación también es útil para crear animaciones donde los widgets suben temporalmente sobre el plano visual cuando realizan alguna acción.

Para más información sobre la elevación en Material Design, consulta Objetos en el espacio 3D.

Asignar elevación a tus vistas

El valor Z de una vista cualquiera tiene dos componentes:

Z = elevation + translationZ

Figura 1: sombras para diferentes elevaciones de vistas.

Para establecer la elevación de una vista al definir un diseño, usa el atributo android:elevation. Para establecer la elevación de una vista en el código de una actividad, usa el método View.setElevation().

Para establecer la traducción de una vista, usa el método View.setTranslationZ().

Los nuevos métodos ViewPropertyAnimator.z() y ViewPropertyAnimator.translationZ() te permiten animar fácilmente la elevación de vistas. Para más información, consulta la referencia de la API para ViewPropertyAnimator y la guía para desarrolladores Animación de propiedades.

También puedes usar un StateListAnimator para especificar estas animaciones de manera declarativa. Esto es especialmente útil para casos en donde los cambios de estados desencadenan animaciones, como cuando un usuario pulsa un botón. Para más información, consulta Animar cambios de estados de las vistas.

Los valores Z se miden en dp (píxeles independientes de la densidad).

Personalizar sombras y contornos de vistas

Los límites del elemento de diseño en segundo plano de una vista determinan la forma predeterminada de su sombra. Los contornos representan la forma externa de un objeto gráfico y definen el área del efecto de ondas para la respuesta táctil.

Examina esta vista, definida con un elemento de diseño en segundo plano:

<TextView
    android:id="@+id/myview"
    ...
    android:elevation="2dp"
    android:background="@drawable/myrect" />

El elemento de diseño en segundo plano está definido como un rectángulo con esquinas redondeadas:

<!-- res/drawable/myrect.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="#42000000" />
    <corners android:radius="5dp" />
</shape>

La vista proyecta una sombra con esquinas redondeadas, ya que el elemento de diseño en segundo plano define el contorno de la vista. Un contorno personalizado reemplazaría la forma predeterminada de la sombra de una vista.

Para definir un contorno personalizado para una vista en tu código:

  1. Extiende la clase ViewOutlineProvider.
  2. Reemplaza el método getOutline().
  3. Asigna el nuevo proveedor de contornos a tu vista con el método View.setOutlineProvider().

Puedes crear contornos rectangulares y ovalados con esquinas redondeadas mediante el uso de métodos en la clase Outline. El proveedor de contornos predeterminado para las vistas obtiene el contorno a partir del plano de fondo de la vista. Para evitar que una vista proyecte una sombra, establece su proveedor de contornos en null.

Recortar vistas

Recortar vistas te permite cambiar fácilmente la forma de una vista. Puedes recortar vistas para mantener la uniformidad con otros elementos del diseño o para cambiar la forma de una vista en respuesta a una señal de entrada del usuario. Puedes recortar una vista a partir de su área de contorno mediante el método View.setClipToOutline() o el atributo android:clipToOutline. Solo los contornos rectangulares, circulares y redondeados admiten el recorte, según lo determinado por el método Outline.canClip().

Para recortar una vista a partir de un elemento de diseño, establece el elemento de diseño como fondo de la vista (como se muestra más arriba) y llama al método View.setClipToOutline().

Recortar vistas es una operación costosa, así que no animes la forma que usas para recortar una vista. Para lograr este efecto, usa la animación Efecto revelar.

Este sitio usa cookies para almacenar tus preferencias específicas de idioma y visualización.

Obtén las noticias y sugerencias más recientes para programadores de Android, que te ayudarán a lograr el éxito en Google Play.

* Campos obligatorios

¡Muy bien!

Sigue a Google Developers en WeChat

¿Deseas explorar este sitio en ?

Solicitaste ver la página en , pero tu preferencia de idioma actual para este sitio es .

¿Quieres cambiar tu preferencia de idioma y explorar este sitio en ? Si deseas cambiarla en otro momento, usa el menú de idioma que se encuentra en la parte inferior de cada página.

Esta clase requiere un nivel de API igual o superior a

El documento está oculto porque el nivel de API que seleccionaste para la documentación es . Puedes cambiar el nivel de API de la documentación con el selector que está sobre el menú de navegación izquierdo.

Para obtener más información sobre cómo especificar el nivel de API que requiere tu app, consulta el artículo sobre Compatibilidad con diferentes versiones de la plataforma.

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)