Pantrix UI

Uyarlanabilir arayüzün kuralları

Pantrix ile yazılan bir arayüzün pencereye nasıl uyacağının kuralları; bir ekran ya da bileşen yazarken neye bakılır, ne değişir, ne aynı kalır, ve kütüphanenin bugün ne yaptığı.

Pantrix ile yazılan bir arayüz Android, iOS, masaüstü ve web'de aynı koddur. Bu belge, o arayüzün pencereye nasıl uyacağının kurallarını söyler: bir ekran ya da bileşen yazarken neye bakılır, ne değişir, ne aynı kalır. Her kuralın yanında kütüphanenin bugün ne yaptığı yazar.

Üç belge birbirini tamamlar:

BelgeNe söyler
Bu belgeKurallar: ne yapılmalı
Uyarlanabilir arayüz rehberiKütüphanenin verdikleri: API nasıl çalışır
Uyarlanabilir yardımcıların kullanımıÖrnek vakalar: giriş ekranı, tablo, göstermek ve gizlemek

1. İlkeler

  1. Cihaz değil pencere. Düzeni cihazın türü değil, pencerenin boyutu seçer. iPad Split View, masaüstü penceresi ve tarayıcı sekmesi serbestçe boyut değiştirir; açılan bir katlanabilir bir anda tablet olur. if (platform == Android) bir düzen kararı değildir.

  2. Düzeni genişlik seçer. Yükseklik, üst üste dizmeye yer olup olmadığını söyler. Duruş, pencerenin menteşede ikiye ayrılıp ayrılmadığını söyler.

  3. Ekran pencereye, bileşen kendi kutusuna bakar. Ekran PantrixTheme.window'a sorar. Bileşen nereye konacağını bilmez: kendisine verilen yere sorar (BoxWithPantrixWindow).

  4. Parmak mı, fare mi: platforma değil girdiye sorulur. Telefondaki tarayıcı da bir web'dir, dokunmatik bir kiosk da bir masaüstü.

  5. İçerik tek yerden çağrılır. Pencere değişince çevresindeki düzen değişir; içerik aynı yerde durur ve durumu (seçim, kaydırma, yazılan metin) korunur.

2. Pencere sınıfları

Genişlik

SınıfGenişlik (dp)Nerede görülürKenar boşluğuSütun arası
Compact< 600Telefon, katlanabilirin kapak ekranı, dar tarayıcı penceresi1616
Medium600–839Dikey tablet, açık katlanabilir, iPad Split View2416
Expanded840–1199Yatay tablet, yatay telefon2424
Large1200–1599Masaüstü penceresi, tarayıcı3224
ExtraLarge≥ 1600Geniş masaüstü penceresi, harici ekran3224

Sınırlar Android'in pencere boyutu sınıflarıdır (600 / 840 / 1200 / 1600). Ürün kendi sınırlarını temaya verebilir; o zaman bu belgedeki sayılar onun sayılarıyla okunur.

Yükseklik

SınıfYükseklik (dp)Nerede görülür
Compact< 480Yatay tutulan telefon, alçak bir masaüstü ya da tarayıcı penceresi
Medium480–899Dikey telefon, yatay tablet
Expanded≥ 900Dikey tablet, masaüstü penceresi

Yatay tutulan telefon genişliğiyle Expanded çıkar (iPhone 17: 874 × 402 dp), ama dikeyde yeri yoktur: enine uzanan her çubuk ekranın yedide birini alır. Kısa pencere kuralı (yükseklik Compact iken):

Bugün: heightClass, byHeight(...), isShort. PantrixScaffold navigasyonu genişliğe göre yana alır, yani yatay telefonda yandadır. Menü, tarih seçici ve destek paneli de genişliğe bakar: yatay telefon genişliğiyle Expanded olduğundan orada menü popover, destek paneli yanda bir paneldir (10. bölüm). Yüksekliğe ayrıca bakmazlar: hem kısa hem Compact genişlikte bir pencere menüyü yine alttan sheet olarak açar.

3. Düzen ölçüleri

4. Katlanabilir duruşlar

DuruşNasıl anlaşılırKural
Kapalı (kapak ekranı)Pencere Compact, menteşe yokTelefon düzeninin aynısı. Açınca aynı ekran, aynı seçim ve aynı kaydırma konumuyla devam eder.
Açık, düzMenteşe var, ekran tek parçaSınıfının düzeni. Menteşeden kaçınmaya gerek yok.
KitapYarı açık, menteşe dikeyİki panel tam menteşede ayrılır; menteşenin üstüne hiçbir şey gelmez.
MasaYarı açık, menteşe yatayÜst yarı bakılacak şeyler içindir; kontroller, formlar ve navigasyon alt yarıdadır.

Menteşeyi kim söyler:

PlatformKaynakDurum
AndroidJetpack WindowManager (FoldingFeature)Okunuyor
WebTarayıcının Device Posture ve Viewport Segments API'leri (Chromium)Okunuyor
iOSUIKit, iOS 27.1'den itibaren: ayrılmış bölgeler (.division, .occlusion) ve UIHingeInteractionOkunuyor. Daha eski iOS'ta düz.
MasaüstüYokDüz

Menteşeyi kendi okuyan bir uygulama duruşu temaya verir: rememberPantrixWindow(posture = …).

5. Girdi

PlatformEn küçük dokunma hedefi
Android48 dp
iOS44 pt
Web, fare ile32 dp
Web, dokunarak48 dp
Masaüstü32 dp; uygulama dokunmatik olduğunu söylerse 48 dp

6. Bileşenler

7. Göstermek ve gizlemek

Neye göreNe zamanNasıl
PencereYer yoksa göstermewindow.isNarrow, byWidth(...)
GirdiYalnızca parmakla ya da yalnızca fareyle anlamlıysaplatform.isTouch
PlatformYalnızca o platformda var olan bir şeyse (mağaza bağlantısı gibi)platform.type

8. Süreklilik ve durum

9. Tema

10. Boyuta göre ne değişir

Tablo, kütüphanenin bileşenlerinin bugünkü varsayılanıdır. İskeletler pencereye değil kendi yerlerine bakar; bir menü ve bir tarih seçici, açıldıkları pencereye.

ÖğeCompactMediumExpandedLarge ve üstü
Navigasyon (PantrixScaffold)Altta gezinme barıYanda rayYanda ray; 1088 dp'den sidebarYanda sidebar
Sayfanın başlığı (PantrixPageScaffold, PageTitlePlacement.Adaptive)Üst bar'daÜst bar'daİçeriğin başında, büyükİçeriğin başında, büyük
Liste ve detay (PantrixListDetailScaffold)Tek panel; detay listenin yerinde açılırTek panel; detay listenin yerinde açılırListe ve detay yan yanaYan yana; ek panel de yanlarında
Destek paneli (PantrixSupportingPaneScaffold)Alttan sheetYandan sheetYanda bir panelYanda bir panel
Satır menüsü, tarih seçici (OverlayPresentation.Adaptive, DatePickerPresentation.Adaptive)Alttan sheetPopoverPopoverPopover
Onay (PantrixDialog)Ortada dialogOrtada dialogOrtada dialogOrtada dialog
Sayfanın aksiyonları (PantrixPageScaffold'ın actions'ı)Başlıkta, ikonlarıyla; sığmayanlar "…" menüsündeBaşlıkta, etiketleriyleBaşlıkta, etiketleriyleBaşlıkta, etiketleriyle

11. Bugün ne var

KonuDurum
Pencere, sınıflar, yardımcılarVar
Düzen ölçüleri (kenar boşluğu, sütun arası, sütun sayısı, en fazla içerik genişliği)Var
Bileşenin kendi kutusu (BoxWithPantrixWindow)Var
Dokunma hedefi, dokunmatik tarayıcıVar
Duruş: Android, web ve iOS (27.1'den itibaren)Var
İki panel, panel sayısı, menteşenin bir düğümdeki yeriVar
Scaffold: navigasyonun yeri, masa duruşuVar
İç içe temada devralmaVar
Navigasyon bileşenleriVar
Liste ve detay iskeleti, destek paneli, masa duruşu düzeniVar
Uyarlanan sheet ve menüler, menteşede katmanlarVar
Sistemin dikey bar'ı (iPhone Duo'nun dış ekranı): gezinme ve üst bar'ın düğmeleri sütundaVar

Kaynaklar