API маски экрана
Представляет область отображения, которая не используется для отображения содержимого.
Интерфейсы API в пакете SDK для Surface Duo взаимодействуют только с устройством Surface Duo и не должны вызываться, когда приложение выполняется на других устройствах. Прежде, чем обращаться к этим API, убедитесь, что приложение выполняется именно на устройстве Surface Duo. Для такой проверки используйте фрагмент кода IsDualScreenDevice.
DisplayMask теперь возвращает ограничивающий прямоугольник относительно метрик дисплея на основе контекста приложения. Это изменяет поведение API в зависимости от того, выполняется ли приложение на одном экране или в режиме отображения на двух экранах. (Служба, которая создала представление, в любом случае относится к одной из этих двух категорий.)
При работе на одном экране справедливо следующее:
- Метрики окон и дисплея связаны с одним используемым экраном.
- DisplayMask возвращает пустой список. Эта область не пересекается с окном.
При работе приложения в режиме растягивания на два экрана справедливо следующее:
- Метрики окна и дисплея связаны с обоими экранами, включая маску экрана.
- Ограничивающий прямоугольник DisplayMask определяет область под механизмом складывания устройства в координатах относительно окна приложения (прямоугольник DisplayMask совпадает с углом разворота).
Дополнительные сведения см. в блоге о Surface Duo.
Совет
Пакет display-mask
работает только на Surface Duo.
Мы рекомендуем использовать Jetpack Window Manager для доступа к не зависящему от устройства API, который работает на складных устройствах от других производителей (а также на Surface Duo).
Обновите файл gradle, включив в него пакет display-mask
для использования этих API.
import com.microsoft.device.display.DisplayMask
Методы
Статические методы
Метод | Описание |
---|---|
fromResourcesRect(Context context) | Создает маску экрана в соответствии с параметрами config_mainBuiltInDisplayMaskRect. |
fromResourcesRectApproximation(Context context) | Создает маску экрана в соответствии с параметрами config_mainBuiltInDisplayMaskRectApproximation, которая является ближайшим прямоугольным приближением к области маски. |
Методы объекта
Метод | Описание |
---|---|
getBoundingRects() | Возвращает список объектов Rect, каждый из которых является ограничивающим прямоугольником для нефункциональной области на экране. |
getBoundingRectsForRotation(int rotation) | Возвращает список объектов Rect относительно угла вращения, каждый из которых является ограничивающим прямоугольником для нефункциональной области на экране. |
getBounds() | Возвращает ограничивающую область маски. |
Пример
Получение прямоугольника маски экрана
val displayMask: DisplayMask = DisplayMask.fromResourcesRect(this)
val masks: List<Rect> = displayMask.getBoundingRectsForRotation(rotation) // pass in orientation (test with 0)
var mask = Rect()
if (!masks.isEmpty()) {
mask = masks[0]
// layout around masked area
}
Открытые методы
fromResourcesRect
public static DisplayMask fromResourcesRect(Context context)
Создает маску экрана в соответствии с параметрами config_mainBuiltInDisplayMaskRect.
Параметры
Context
контекст
Контекст для текущего действия.
Возвращает
DisplayMask
Новая маска экрана.
fromResourcesRectApproximation
public static DisplayMask fromResourcesRectApproximation(Context context)
Создает маску экрана в соответствии с параметрами config_mainBuiltInDisplayMaskRectApproximation, которая является ближайшим прямоугольным приближением к области маски.
Параметры
Context
контекст
Контекст для текущего действия.
Возвращает
DisplayMask
Новая маска экрана.
getBoundingRects
public List<Rect> getBoundingRects()
Возвращает список объектов Rect
, каждый из которых является ограничивающим прямоугольником для нефункциональной области на экране.
Возвращает
List<Rect>
Список объектов Rect
(ограничивающий прямоугольник), по одному для каждой области маски экрана.
getBoundingRectsForRotation
public List<Rect> getBoundingRectsForRotation(int rotation)
Возвращает список объектов Rect
относительно угла вращения, каждый из которых является ограничивающим прямоугольником для нефункциональной области на экране.
Параметры
int
поворот
Угол поворота для маски. Принимает значения Surface.ROTATION_0
, Surface.ROTATION_90
, Surface.ROTATION_180
или Surface.ROTATION_270
.
Возвращает
List<Rect>
Список объектов Rect
(ограничивающий прямоугольник), по одному для каждой области маски экрана.
getBounds
public Region getBounds()
Возвращает ограничивающую область маски.
Рамок может быть несколько, и тогда возвращаемый объект Region
будет несплошным, а его ограничивающий прямоугольник не будет иметь никакого смысла без нужного пересечения.
Возвращает
Region
Ограничивающая область маски. Координаты указываются относительно левого верхнего угла представления содержимого в пикселях.