Bagikan melalui


Tampilkan API masker

Mewakili area tampilan yang tidak berfungsi untuk menampilkan konten.

API di Surface Duo SDK berinteraksi dengan perangkat Surface Duo, dan tidak boleh dipanggil saat aplikasi Anda berjalan di perangkat lain. Sebelum memanggil API ini, Anda harus memeriksa apakah aplikasi Anda berjalan di perangkat Surface Duo. Gunakan cuplikan kode IsDualScreenDevice untuk melakukan pemeriksaan ini.

DisplayMask telah diperbarui untuk mengembalikan persegi panjang pembatas relatif terhadap metrik tampilan berdasarkan konteks aplikasi. Hal ini memengaruhi perilaku API saat aplikasi Anda berjalan pada satu layar vs. berjalan terbenam di dua layar. (Layanan yang membuat tampilan kapan saja akan termasuk dalam salah satu dari dua kategori ini.)

  • Saat berjalan pada satu layar:

    • Metrik windows dan tampilan terkait dengan tampilan tunggal tersebut.
    • DisplayMask mengembalikan daftar kosong. Ini tidak akan bersinggungan dengan jendela.
  • Saat berjalan berkesan di dua layar:

    • Metrik jendela dan tampilan terkait dengan kedua tampilan, termasuk masker tampilan.
    • Persegi panjang pembatas DisplayMask akan mengidentifikasi area di bawah engsel perangkat keras sehubungan dengan jendela aplikasi (DisplayMask = persegi panjang masker engsel).

    Untuk informasi selengkapnya, lihat Blog Surface Duo.

Tip

Paket display-mask hanya berjalan pada Surface Duo.

Pertimbangkan untuk menggunakan Jetpack Window Manager untuk mengakses API agnostik perangkat yang berfungsi pada perangkat yang dapat dilipat dari produsen lain (serta Surface Duo).

Perbarui file gradle Anda dengan display-mask paket untuk menggunakan API ini.

import com.microsoft.device.display.DisplayMask

Metode

Metode statis

Metode Deskripsi
fromResourcesRect(Konteks konteks) Membuat masker tampilan sesuai dengan config_mainBuiltInDisplayMaskRect.
fromResourcesRectApproximation(Konteks konteks) Membuat masker tampilan sesuai dengan config_mainBuiltInDisplayMaskRectApproximation, yang merupakan perkiraan masker dasar persegi panjang terdekat.

Metode objek

Metode Deskripsi
getBoundingRects() Mengembalikan daftar Rects, yang masing-masing adalah persegi panjang pembatas untuk area non-fungsional pada tampilan.
getBoundingRectsForRotation(rotasi int) Mengembalikan daftar Rects sehubungan dengan rotasi, yang masing-masing adalah persegi panjang pembatas untuk area non-fungsional pada tampilan.
getBounds() Mengembalikan wilayah pembatas masker.

Contoh

Mendapatkan rect mask tampilan

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
}

Metode Publik

fromResourcesRect

public static DisplayMask fromResourcesRect(Context context)

Membuat masker tampilan sesuai dengan config_mainBuiltInDisplayMaskRect.

Parameter

ContextKonteks

Konteks untuk aktivitas saat ini.

Mengembalikan

DisplayMask

Masker tampilan baru.

fromResourcesRectApproximation

public static DisplayMask fromResourcesRectApproximation(Context context)

Membuat masker tampilan sesuai dengan config_mainBuiltInDisplayMaskRectApproximation, yang merupakan perkiraan masker dasar persegi panjang terdekat.

Parameter

ContextKonteks

Konteks untuk aktivitas saat ini.

Mengembalikan

DisplayMask

Masker tampilan baru.

getBoundingRects

public List<Rect> getBoundingRects()

Mengembalikan daftar Rects, yang masing-masing adalah persegi panjang pembatas untuk area non-fungsional pada tampilan.

Mengembalikan

List<Rect>

Daftar batas Rect, satu untuk setiap area masker tampilan.

getBoundingRectsForRotation

public List<Rect> getBoundingRectsForRotation(int rotation)

Mengembalikan daftar Rects sehubungan dengan rotasi, yang masing-masing adalah persegi panjang pembatas untuk area non-fungsional pada tampilan.

Parameter

intRotasi

Masker rotasi harus diputar. Nilai yang mungkin adalah Surface.ROTATION_0, Surface.ROTATION_90, Surface.ROTATION_180, Surface.ROTATION_270

Mengembalikan

List<Rect>

Daftar batas Rect, satu untuk setiap area masker tampilan.

getBounds

public Region getBounds()

Mengembalikan wilayah pembatas masker.

Mungkin ada lebih dari satu masker, dalam hal ini yang dikembalikan Region akan tidak bersebelahan dan rect pembatasnya tidak akan berarti tanpa berpotongan terlebih dahulu.

Mengembalikan

Region

Wilayah pembatas masker. Koordinat relatif terhadap sudut kiri atas tampilan konten dan dalam unit piksel.