La Red de Conocimientos Pedagógicos - Currículum vitae - Novedades de la biblioteca de soporte de Android 23.2

Novedades de la biblioteca de soporte de Android 23.2

Nuevas funciones:

Admite elementos dibujables vectoriales y dibujables vectoriales animados

Los elementos dibujables vectoriales le permiten reemplazar varios png con una imagen vectorial definida en un recurso XML. Si bien este uso anteriormente se limitaba a Lollipop y dispositivos superiores, VectorDrawable y AnimatedVectorDrawable ahora están disponibles a través de dos nuevas bibliotecas de soporte, support-vector-drawable y support-animated-vector-drawable, respectivamente.

Android Studio 1.4 introdujo un método para proporcionar soporte limitado para elementos dibujables vectoriales generando png en el momento de la compilación. Para deshabilitar esta función (ahorre espacio en la biblioteca de soporte y realmente se beneficie de la nueva biblioteca), debe agregar vectorDrawables.useSupportLibrary = true al archivo build.gradle:

// Gradle Plugin 2.

android {

defaultConfig {

vectorDrawables.useSupportLibrary = true

}

}

Cabe señalar que esta nueva propiedad solo está disponible en la versión 2.0 del complemento Gradle. Si está utilizando Gradle 1.5, debe usar

// Gradle Plugin 1.5

android {

defaultConfig {

generatedDensities = [ ]

}

// Esto lo maneja el complemento Gradle 2..

aaptOptions {

additionalParameters "--no -version-vectors"

}

}

Puedes usar VectorDrawableCompat compatible con API7 y AnimatedVectorDrawableCompat compatible con API11 o superior. Debido a la forma en que Android carga los elementos de diseño, no todos los lugares que aceptan una identificación de elemento de diseño (como en un archivo XML) admiten la carga de un elemento de diseño vectorial. Afortunadamente, AppCompat ha agregado varias funciones para facilitarle el uso del nuevo dibujable vectorial.

Primero, cuando usas AppCompat con ImageView (o subclases como ImageButton y FloatingActionButton), puedes usar el nuevo atributo app:srcCompat para elementos dibujables vectoriales (mientras que cualquier otro elemento dibujable usa android:src):

android:layout_width="wrap_content"

android:layout_height="wrap_content"

aplicación:srcCompat="@drawable/ ic_add" />

Además, si desea cambiar dinámicamente el elemento de diseño en tiempo de ejecución, puede utilizar el mismo método setImageResource() que antes; esto no ha cambiado.

Usar AppCompat y app:srcCompat es la forma más sencilla y confiable de integrar elementos de diseño vectoriales en tu aplicación.

Descubrirás que hacer referencia al vector dibujable directamente fuera de app:srcCompat fallará antes que Lollipop. Sin embargo, AppCompat admite otros contenedores de elementos dibujables como StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable o RotateDrawable para cargar elementos dibujables vectoriales. Con este método indirecto, puede utilizar elementos dibujables vectoriales en este caso, como el atributo android:drawableLeft de TextView, que no admite elementos dibujables vectoriales en circunstancias normales.

AppCompat Night and Day Theme

Aunque es un gran cambio poder usar imágenes vectoriales en varias versiones de la aplicación, esta versión también agrega un nuevo tema en AppCompat:Theme .AppCompat.DíaNoche.

Antes de API 14, el tema DayNight y sus sucesores DayNight.NoActionBar, DayNight.DarkActionBar, DayNight.Dialog, etc. eran lo mismo que light. Pero en dispositivos API 14a o superior, este tema puede hacer que la aplicación admita fácilmente temas claros y oscuros. Puede cambiar de un tema Claro a un tema Oscuro dependiendo de si es "de noche".

De forma predeterminada, si 'noche' corresponde al valor del sistema (obtenido de UiModeManager.getNightMode()), pero puedes usar el método en AppCompatDelegate para anular este valor. Para este valor predeterminado que se ejecuta en toda la aplicación (hasta que se reinicia el proceso), puede usar el método estático AppCompatDelegate.setDefaultNightMode() para configurarlo, o puede obtener un AppCompatDelegate a través de getDelegate() y usar setLocalNightMode() para cambiar. la actividad actual o el cuadro de diálogo.

Cuando usas AppCompatDelegate.MODE_NIGHT_AUTO, la hora del día y la ubicación más cercana (si tu aplicación tiene permisos de geolocalización) se usan para cambiar automáticamente entre el día y la noche, mientras que MODE_NIGHT_NO y MODE_NIGHT_YES se usan para forzar el cambio respectivamente. El tema nunca o siempre utiliza tema oscuro.

Cuando utilices el tema DayNight, asegúrate de probar la aplicación minuciosamente, ya que los colores codificados pueden dar como resultado texto e íconos poco legibles. Si su texto usa el estilo estándar TextAppearance.AppCompat o el color se obtiene del tema (como de android:textColorPrimary), encontrará que estos se actualizarán automáticamente.

Sin embargo, si desea personalizar algún recurso específicamente para el modo nocturno, puede personalizar cualquier recurso que necesite en la carpeta calificadora de recursos nocturnos de AppCompat. Para facilitar la compatibilidad con este modo, considere usar colores estándar o aprovechar el tinte de AppCompat.

Biblioteca de soporte de diseño: hojas inferiores

La biblioteca de soporte de diseño proporciona implementaciones de muchos patrones de diseño de materiales.

Esta versión permite a los desarrolladores agregar fácilmente hojas inferiores a sus aplicaciones.

Al configurar un BottomSheetBehavior para la subvista de CoordinatorLayout (por ejemplo: app:layout_behavior="android.support.design.widget.BottomSheetBehavior"), obtendrá automáticamente una detección táctil que puede cambiar entre 5 estados. Función:

STATE_COLLAPSED: Este es el estado colapsado y el estado predeterminado. Simplemente muestra parte del diseño en el borde inferior. Su altura se puede controlar mediante el atributo app:behavior_peekHeight (el valor predeterminado es 0).

STATE_DRAGGING: Este es el estado intermedio, cuando el usuario arrastra directamente la hoja inferior hacia arriba y hacia abajo.

STATE_SETTLING: Momento posterior a que la vista se libera y alcanza su posición final.

STATE_EXPANDED: La hoja inferior está completamente expandida. Toda la hoja inferior es visible (si su altura es menor que el CoordinatorLayout que lo contiene) o todo el CoordinatorLayout está lleno.

STATE_HIDDEN: Deshabilitado de forma predeterminada Sí (use el atributo app:behavior_hideable para habilitarlo), si está habilitado, el usuario puede deslizarse hacia abajo en la hoja inferior para ocultarla completamente

Recuerde, abajo El contenedor de desplazamiento en la hoja debe admitir el desplazamiento anidado (por ejemplo, NestedScrollView, RecyclerView o ListView/ScrollView en API 21+).

Si desea recibir una devolución de llamada de estado, puede agregar un BottomSheetCallback:

// La vista con BottomSheetBehavior Ver bottomSheet = coordinadorLayout.findViewById(R.id.bottom_sheet) ;

BottomSheetBehavior comportamiento = BottomSheetBehavior.from(bottomSheet);

behavior.setBottomSheetCallback(new BottomSheetCallback() {

@Override

público void onStateChanged(@NonNull View bottomSheet, int newState) {

// Reaccionar al cambio de estado

}

@Override

public void onSlide(@NonNull View bottomSheet, float slideOffset) {

// Reaccionar al arrastrar eventos

}

});

Aunque BottomSheetBehavior apunta al escenario de hojas inferiores persistentes, esta versión también proporciona BottomSheetDialog y BottomSheetDialogFragment para completar el caso de uso de hojas inferiores modales.

Simplemente reemplace AppCompatDialog o AppCompatDialogFragment con la versión de la hoja inferior correspondiente. Utilice el estilo de la hoja inferior para sus cuadros de diálogo.

Soporte v4: MediaBrowserServiceCompat

La biblioteca Support v4 sirve como base para muchas bibliotecas de soporte y contiene muchas características del marco introducidas en versiones más recientes (así como varias características únicas).

La clase MediaSessionCompat agregada en la versión anterior proporciona una base sólida para la reproducción multimedia. En esta versión, hemos agregado MediaBrowserServiceCompat y MediaBrowserCompat para que las API más recientes (incluso las agregadas en Marshmallow) sean compatibles con API 4. y arriba. Esto hace que sea mucho más fácil admitir la reproducción de audio en Android Auto y la navegación multimedia en Android Wear. Además, se proporciona una interfaz estándar para conectar el servicio de reproducción multimedia y la interfaz de usuario.

RecyclerView

El control RecyclerView proporciona una solución básica flexible para crear listas y cuadrículas, y también admite animación. Esta versión trae una nueva característica muy interesante a la API LayoutManager: ¡medición automática! Permite que RecyclerView cambie su tamaño según el tamaño de su contenido. Esto significa que escenarios que antes no tenían solución, como el uso de WRAP_CONTENT en una dimensión de RecyclerView, se vuelven posibles. Descubrirá que todos los LayoutManagers integrados ahora admiten mediciones automáticas.

Debido a este cambio, debe verificar cuidadosamente los parámetros de diseño de la vista del elemento: los parámetros de diseño que antes se ignoraban automáticamente (como MATCH_PARENT en la dirección de desplazamiento) ahora se tienen completamente en cuenta. Si tiene un LayoutManager personalizado que no hereda del LayoutManager integrado, entonces esta es una API opcional; debe llamar a setAutoMeasureEnabled(true) y realizar algunos cambios menores como se describe en el Javadoc para este método.

Tenga en cuenta que, aunque RecyclerView puede animar sus propias subvistas, no puede animar sus propios cambios de límites. Si desea animar los cambios de límites de RecyclerView, puede utilizar la API de transición.

Pestañas personalizadas

Las pestañas personalizadas pueden cambiar sin problemas a páginas de contenido web manteniendo el estilo y la apariencia de la aplicación. En esta versión, puedes agregar acciones a una barra inferior que aparece junto al contenido web. Nota: Anteriormente solo se podía agregar en el menú adicional en la parte superior.

Con el nuevo método addToolbarItem(), puedes agregar hasta 5 (MAX_TOOLBAR_ITEMS) acciones a la barra inferior y actualizarlas usando setToolbarItem(). De manera similar al método setToolbarColor() anterior, puede encontrar un método setSecondaryToolbarColor() para personalizar el color de fondo de la barra inferior.

Leanback para Android TV

La biblioteca Leanback te brinda las herramientas que necesitas para llevar tu aplicación a Android TV. Hay muchos controles optimizados específicamente para TV. Esta versión de GuidedStepFragment tiene una serie de mejoras importantes.

Quizás el cambio más grande es la introducción de una segunda columna de botones de acción (agregados anulando onCreateButtonActions() o llamando a setButtonActions()). No es necesario desplazarse por una lista de acciones guiadas para llegar a todas las acciones.

Hablando de GuidedAction, hay varias características nuevas que enriquecen la entrada, incluidas descripciones editables (a través de descriptionEditable()), subacciones en menús desplegables en formularios (usando subActions()) y GuidedDatePickerAction.