Obtenga más información sobre Jetpack WindowManager | de Somethingtoldme | NOP :: Matiz de programación Octubre 2020

Los usuarios pueden configurar un teléfono, directamente, en la mesa, y usar la mitad inferior de la pantalla de navegación para navegar y ver

Цель библиотеки gestor de ventanas Jetpack – обеспечить единое API для различных типов складных устройств, поступающих на рынок, чтобы разработчики приложений могли ориентироваться на целые категории устройств, а не на одну модель.

En versión 1.0.0 más información

Одна панель дисплея или конфигурация с несколькими дисплеями могут меть различные функции, котос Примерами этого могут быть складки, петли, изогнутые участки или вырезы. Если в окне приложения происходят такие сбои, то компоновку и размещение содержимого в окне можно адаптировать таким образом, чтобы избежать таких областей или воспользоваться ими в качестве естественного разделителя.

Cada área de los objetos puede estar protegida por su construcción en línea recta limitante. El tipo de objeto puede ayudar a determinar cómo relacionarse con él. Например, некоторые объекты могут создавать физические разделения и / или неинтерактивные области (например, шарнир между двумя индикаторными панелями, вырез дисплея) в то время как другие могут служить логическими разделителями (например, складка).

public class DisplayFeature {
private Rect mRect;
private @Type int mType;
...
}

La primera versión de la biblioteca es compatible con solo dos tipos de funciones: TYPE_FOLD C TYPE_HINGE.

@IntDef({
// Складка на экране без физического разрыва.
TYPE_FOLD,
// Физичское разделение шарниром, которое позволяет двум дисплеям складываться.
TYPE_HINGE,
})
public @interface Type{}

Para una plancha especial delimitadora TYPE_FOLDtan pronto como la altura cero (0, y, ancho, y) o el ancho cero sea (x, 0, x, altura). Muestra que no hay un área inaccesible, pero todo asume igualmente una posición en la pantalla.

В зависимости от конструкции шарнирной фурнитуры различные складные устройства могут иметь несколько промежуточных состояний: закрытое, частично открытое, полностью открытое (плоская поверхность) или перевернутое. Utilice la biblioteca, la aplicación puede proporcionar varias funciones en la dependencia de estas propiedades.

@IntDef({
POSTURE_UNKNOWN,
POSTURE_CLOSED,
POSTURE_HALF_OPENED,
POSTURE_OPENED,
POSTURE_FLIPPED
})
public @interface Posture{}

Cada dispositivo puede competir con la pluralidad de posiciones, definidas anteriormente, dependiendo de

¿Como puedo usar lo?

Necesita agregar dependencia desde el administrador de ventanas, es necesario agregar repositorios Google Maven en su proyecto.

Agregue dependencias para los artefactos que necesita en build.gradle para la aplicación o módulo:

dependencies {
implementation "androidx.window:window:1.0.0-alpha01"
}

Допустим, вы хотите разделять пользовательский интерфейс приложения, Google Duo например, на складных устро Как правило, это имеет смысл делать в тех случаях, когда физическая конфигурация и состояние устройства создают логическое разделение для пользователя. , Апример, Galaxy tirón создает такое логическое разделение, когда он находится в режиме «Flex» или «наполовин Поэтому вам необходимо знать положение сгиба в окне приложения и состояние устройства.

Por primera vez, envía un extracto. androidx.window.WindowManager de la actividad:

var windowManager = WindowManager(this /* context */, null /* windowBackend */)

Póngase en contacto con los parámetros.

En algunos casos, el contexto se utiliza para la inicialización y exclusión del exportador. WindowManager al objeto visual en la pantalla. De esta forma, debe ser visual. Context, que está marcado o Activityo ContextWrapper redondear un poco.

En el tercero, se proporciona la parte norte de la ventana con información sobre la biblioteca de soporte. Transmisor null здесь будет означать, что будет использоваться информация об устройстве по умолчанию, и библиотека будет сообщать об отсутствии функций отображения и неизвестном состоянии устройства, когда приложение запущено на обычном телефоне. También puede transmitir la realización de un usuario androidx.window.WindowBackend para la emulación de cualquier tipo de dispositivo de almacenamiento sin acceso a equipo físico (marcar nuestro ejemplo de aplicación).

Además del uso de la interfaz de usuario, solo hay mucho tiempo, cuando hay un aparato logístico

  1. Tipo de función de visualización – TYPE_HINGE, y siempre hay una división física en la ventana de acción.
  2. Tipo de función de visualización – TYPE_FOLD, y la construcción de la pantalla – no plana (no es POSTURE_OPENED). Para Galaxy Z Flip en parte, nos interesará POSTURE_HALF_OPENED.

Es necesario que reconozcamos los cambios en la posición del dispositivo, por lo que será necesario registrarlo. DeviceState:

windowManager.registerDeviceStateChangeCallback(
mainThreadExecutor /* Выполняющий */,
callback /* Потребляющий<DeviceState> */)

Por el contrario, puede cambiar el estado del dispositivo y renovar la interfaz de usuario,

Finalmente, será necesario que ofrezcamos las funciones funcionales de la imagen que se encuentran en la ventana de activos

val displayFeatures = windowManager.windowLayoutInfo.displayFeatures

В зависимости от того, как ваше действие обрабатывает (или не обрабатывает) изменения конфигурации, вам может потребоваться задать его в разных точках жизненного цикла действия. Pregúntele en la ventana por la decoración de la decoración de la ventana, que se actualizará en el último mensaje

window.decorView.doOnLayout {
val displayFeatures =
windowManager.windowLayoutInfo.displayFeatures
...
}

Обратите внимание, что положения отображаемых объектов вычисляются относительно координатного срот Поэтому он может быть предоставлен только после того, как действие будет прикреплено к окну. Se hará información anticipada antes de la llamada.

Se recomienda aprender aplicación de demostración para la biblioteca. También mantiene el promedio de cálculos ubicación de los objetos de exhibición en la ceremonia de presentación C ejemplo de un modelo que se descompone juntosi la partición de la imagen está separada.

Lea también:

Léanos en Telegrama, VK C Ендекс.Дзен

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *