SubspaceModifier, Subspace içindeki composable'lar için Compose değiştiricisine benzer. SubspaceModifier, composable'ları 3D uzayda değiştirmenize olanak tanır. Böylece 3D düzen düğümlerini konumlandırabilir, döndürebilir ve bunlara davranış ekleyebilirsiniz.
Düzen
Varsayılan olarak Subspace, bir uygulamayı görüntülemek için önerilen alanla sınırlıdır. Bu sınırlar, alt alan bileşenlerinizin düzenini ölçerken kullanılır. Bu, 2D Compose düzenlerindeki sınırlara benzer.
Sınırları doldurma
fillMaxSize, fillMaxWidth, fillMaxHeight ve fillMaxDepth değiştiricileri, içeriğin üst öğesinin sınırlarını (kısmen) doldurmasını sağlar.
Dolgu değiştiricileri kullanmak, uygulamanızın XR cihazın ekran özelliklerinden bağımsız olarak içerik düzenlemesine yardımcı olur.
Boyutu ve gerekli boyutu ayarlama
size, width, height ve depth değiştiricileri, içeriğin tercih edilen boyutunu bildirir. İçeriğin tam boyutunu belirtmek için requiredSize, requiredWidth, requiredHeight ve requiredDepth özelliklerini kullanın. Bu birimler dp cinsinden belirtilmelidir. Metreyi dp'ye dönüştürmek için Meter.toDp() kullanın.
Birleştirilebilir öğeleri konumlandırma
offset
offset değiştiricisi, composable'ı 3D uzayda x, y ve z eksenleri boyunca taşır. Bu birimler dp cinsinden belirtilmelidir. Metreyi dp'ye dönüştürmek için Meter.toDp() kullanın.
rotate
rotate değiştiricisi, belirli bir composable'ı uzayda döndürür. Döndürme yönünü ve miktarını farklı şekillerde belirtebilirsiniz:
- Sırasıyla
x,yvezeksenleri etrafındaki dönüşü belirten yunuslama, sapma ve yalpalama değerlerini kullanarak - Dönme eksenini temsil eden bir
Vector3olanaxisAngleve etrafında döndürüleceği derece miktarını kullanarak, - Rotasyonu temsil eden bir
Quaternionkullanarak.
rotateToLookAtUser
rotateToLookAtUser değiştiricisi, içeriği sürekli olarak döndürerek her zaman kullanıcıya dönük olmasını sağlar. Bu değiştiriciyi, içeriğin Y ekseninde kullanıcıya dönük olacak şekilde döndüğü ancak dik ve yer çekimiyle uyumlu kaldığı bir "reklam panosu" efekti elde etmek için de kullanabilirsiniz. Bunun için rotateToLookAtUser değiştiricisini gravityAligned değiştiricisiyle birleştirin.
Birleştirilebilir öğeleri taşıma ve yeniden boyutlandırma
Kullanıcıların 3D alandaki nesnelerin konumunu ve boyutunu doğrudan değiştirmesine izin verin.
Öğeleri taşıma
movable değiştirici mevcut ve etkin olduğunda, kullanıcının öğeyi 3D alanda taşımasına olanak tanıyan sürüklenebilir kullanıcı arayüzü kontrolleri gösterilir. movable değiştiricilerini tüm Subspace, uzamsal düzen bileşenleri (SpatialRow ve SpatialColumn gibi) ve bağımsız bileşenlere (SpatialPanel ve SpatialGltfModel gibi) uygulayabilirsiniz.
Bu hareketin belirli davranışı, sağlanan movePolicy tarafından tanımlanır:
MovePolicy.Default(veyaMovePolicy.system()): Sistem, hareketi tamamen yönetir ve kullanıcı girişine göre yeni pozu ve ölçeği otomatik olarak hesaplayıp uygular.MovePolicy.custom(): Sistem, girişe göre hedefPosedeğerini hesaplar ancak ilişkili öğeye otomatik olarak uygulamaz. Bu, uygulamanızda hareketi kısıtlamak veya özel hareket oluşturmak için kullanışlıdır.MovePolicy.anchor(): Kullanıcının, hareketli öğeyi algılanan gerçek dünya düzlemlerine tutturmasına ve sabitlemesine olanak tanır.
Sabitlenebilir bileşenler
Taşınabilir bir alt uzay composable'ını gerçek dünyadaki yüzeylere sabitleyebilmek için movable değiştiricisine MovePolicy.anchor() değerini iletin.
Bu politika, kullanıcıların öğeleri (ör. SpatialPanel ve SpatialGltfModel) masa, duvar veya zemin gibi fiziksel yüzeylere tutturmasına olanak tanır.
Aşağıdaki parametreleri kullanarak bir öğenin hangi algılanan düzlemlere tutturulabileceğini filtreleyebilirsiniz (boş bırakılırsa öğe, algılanan herhangi bir düzleme sabitlenebilir):
anchorPlaneOrientations: BirPlaneOrientationdeğerleri kümesi (Horizontal,VerticalveyaAny).anchorPlaneSemantics: BirPlaneSemanticdeğerleri grubu (Wall,Floor,Ceiling,TableveyaAny).
Öğeleri yeniden boyutlandırma
resizable() değiştiricisi mevcut ve etkin olduğunda, kullanıcının öğeyi 3D alanda yeniden boyutlandırmasına olanak tanıyan kullanıcı arayüzü kontrolleri gösterilir. Yeniden boyutlandırmanın belirli davranışı, sağlanan resizePolicy tarafından tanımlanır:
ResizePolicy.default(): Sistem, yeniden boyutlandırma hareketini otomatik olarak işler ve yeni boyutları içeriğe uygular.ResizePolicy.custom(): Sistem birSpatialResizeEventsağlar ve yeniden boyutlandırma sonucunu ilişkili öğeye otomatik olarak uygulamaz.
Birleştirilebilir öğelerin görünümünü değiştirme
alpha
alpha değiştiricisi, öğenin ve alt öğelerinin opaklığını ayarlar.
0f tamamen şeffaf, 1.0f ise tamamen opak anlamına gelir.
scale
scale değiştiricisi, bileşenin içeriğini yatay, dikey ve derinlik eksenleri boyunca ölçeklendirir.
Test ve erişilebilirlik
semantics
semantics değiştiricisi, test ve erişilebilirlik için kullanılmak üzere düzen düğümüne semantik ekler. Jetpack Compose'da Semantik ve SemanticsModifier başlıklı makaleleri inceleyin.
testTag
testTag değiştiricisi, test çerçevelerinin testlerdeki öğeyi bulmasına olanak tanıyan SemanticsPropertyReceiver.testTag için bir kısayoldur.