ディスプレイ マスク 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_0
、Surface.ROTATION_90
、Surface.ROTATION_180
、Surface.ROTATION_270
です
戻り値
List<Rect>
ディスプレイ マスク領域ごとに 1 つずつある、外接 Rect
のリスト。
getBounds
public Region getBounds()
マスクの境界領域が返されます。
複数のマスクが存在する場合があります。この場合、返された Region
は連続しておらず、最初に交差しなければ外接矩形は無意味になります。
戻り値
Region
マスクの境界領域。 座標は、コンテンツ ビューの左上隅を基準にピクセル単位となります。