ディスプレイ マスク API

コンテンツの表示では機能しないディスプレイの領域を表します。

Surface Duo SDK の API は、Surface Duo デバイスとやりとりしますが、アプリが他のデバイスで実行されているときに呼び出すことはできません。 これらの API を呼び出す前に、アプリが Surface Duo デバイスで実行されているかどうかを確認する必要があります。 この確認を行うには、IsDualScreenDevice コード スニペットを使用します。

DisplayMask が更新され、アプリのコンテキストに基づいて、ディスプレイ メトリックを基準とした外接矩形が返されるようになりました。 これは、アプリが単一の画面で実行されている場合と、2 つの画面にまたがって実行されている場合の API の動作に影響します (任意の時点でビューを作成したサービスは、次の 2 つのカテゴリのいずれかに分類されます)。

  • 単一の画面で実行されている場合:

    • ウィンドウおよびディスプレイ メトリックは、その単一ディスプレイに関連しています。
    • DisplayMask では空のリストが返されます。 ウィンドウとは交差しません。
  • 2 つの画面にまたがって実行されている場合:

    • ウィンドウおよびディスプレイ メトリックは、ディスプレイ マスクを含む、両方のディスプレイに関連しています。
    • DisplayMask の外接矩形では、アプリ ウィンドウに関連するハードウェア ヒンジの下にある領域を識別します (DisplayMask = ヒンジ マスク四角形)。

    詳細については、「Surface Duo のブログ」を参照してください。

ヒント

display-mask パッケージは Surface Duo 上でのみ実行されます。

Jetpack Window Manager を使用して、他の製造元の折りたたみ型デバイス (および Surface Duo) で動作する、デバイスにとらわれない API にアクセスすることを検討してください。

これらの API を使用するには、display-mask パッケージで gradle ファイルを更新します。

import com.microsoft.device.display.DisplayMask

メソッド

静的メソッド

メソッド 説明
fromResourcesRect(Context context) config_mainBuiltInDisplayMaskRect に従って、ディスプレイ マスクを作成します。
fromResourcesRectApproximation(Context context) config_mainBuiltInDisplayMaskRectApproximation に従ってディスプレイ マスクを作成します。これは、マスクの最も近い四角形ベースの近似値です。

オブジェクト メソッド

メソッド 説明
getBoundingRects() Rect のリストが返されます。これらはそれぞれ、ディスプレイ上の非機能領域の外接矩形です。
getBoundingRectsForRotation(int rotation) 回転に関する Rect のリストが返されます。これらはそれぞれ、ディスプレイ上の非機能領域の外接矩形です。
getBounds() マスクの境界領域が返されます。

ディスプレイ マスクの rect の取得

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>

ディスプレイ マスク領域ごとに 1 つずつある、外接 Rect のリスト。

getBoundingRectsForRotation

public List<Rect> getBoundingRectsForRotation(int rotation)

回転に関する Rect のリストが返されます。これらはそれぞれ、ディスプレイ上の非機能領域の外接矩形です。

パラメーター

int回転

回転マスクを回転させる必要があります。 指定できる値は Surface.ROTATION_0Surface.ROTATION_90Surface.ROTATION_180Surface.ROTATION_270 です

戻り値

List<Rect>

ディスプレイ マスク領域ごとに 1 つずつある、外接 Rect のリスト。

getBounds

public Region getBounds()

マスクの境界領域が返されます。

複数のマスクが存在する場合があります。この場合、返された Region は連続しておらず、最初に交差しなければ外接矩形は無意味になります。

戻り値

Region

マスクの境界領域。 座標は、コンテンツ ビューの左上隅を基準にピクセル単位となります。