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
Context
Konteks
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
Context
Konteks
Konteks untuk aktivitas saat ini.
Mengembalikan
DisplayMask
Masker tampilan baru.
getBoundingRects
public List<Rect> getBoundingRects()
Mengembalikan daftar Rect
s, 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 Rect
s sehubungan dengan rotasi, yang masing-masing adalah persegi panjang pembatas untuk area non-fungsional pada tampilan.
Parameter
int
Rotasi
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.