Kadrana özellik ekleme

Saat yüzü özelliği, bir veri kaynağından gelen verileri gösterir. Complications API sayesinde kadranlar, temel verileri almak için kullanmak istedikleri veri kaynaklarını seçebilir. Bu sayede kadranlar, verileri almak için koda gerek kalmadan saatten sonra bilgi gösterebilir.

ComplicationSlotsManager kullanma

Kadrana özellikler eklemek için ComplicationSlotsManager kullanın.

ComplicationSlotsManager, bir kadranın kaç özelliği desteklediğini ve bunların ekranın neresinde konumlandığını tanımlar. Özellik sayısını veya konumu değiştirmeyi desteklemek için ComplicationSlotsManager, aşağıdaki örnekte gösterildiği gibi CurrentUserStyleRepository özelliğini de kullanır:

 override fun createComplicationSlotsManager(
        currentUserStyleRepository: CurrentUserStyleRepository
    ): ComplicationSlotsManager {
        val defaultCanvasComplicationFactory =
            CanvasComplicationFactory { watchState, listener ->
                // ...
            }
    
        val leftComplicationSlot = ComplicationSlot.createRoundRectComplicationSlotBuilder(
            id = 100,
            canvasComplicationFactory = defaultCanvasComplicationFactory,
            // ...
        )
            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
            .build()
    
        val rightComplicationSlot = ComplicationSlot.createRoundRectComplicationSlotBuilder(
            id = 101,
            canvasComplicationFactory = defaultCanvasComplicationFactory,
            // ...
        )
            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
            .build()

        return ComplicationSlotsManager(
            listOf(leftComplicationSlot, rightComplicationSlot),
            currentUserStyleRepository
        )
 }

Türler ve alanlar

Aşağıdaki tabloda ComplicationData nesnesinin türleri ve alanları açıklanmaktadır. Bir kadran, komplikasyon türü için geçersiz bir alan isterse alan için varsayılan bir değer döndürülür. Örneğin, bir kadran, SHORT_TEXT türündeki bir LONG_TEXT alanına erişmeye çalışırsa LONG_TEXT alanı için varsayılan değer olan null döndürülür. İsteğe bağlı alanların gösterilmesinin garanti edilmediğini unutmayın.





Tür Zorunlu alanlar İsteğe bağlı alanlar Notlar
SHORT_TEXT Kısa metin Simge
Yerleşik koruma simgesi
Short title
Content description

İkisinden biri veya her ikisi de sağlanmışsa yalnızca bir simge ya da kısa başlık gösterir.
MONOCHROMATIC_IMAGE Tek renkli resim
Yanma koruması simgesi
İçerik açıklaması

Metin gerekli olmadığında kullanılır. Simgenin tek renkli olması beklenir ve saat yüzüne göre renklendirilmiş olabilir.
RANGED_VALUE Değer
Min değer
Maks. değer
Tek renkli resim
Yerleşik koruma simgesi
Kısa metin
Kısa başlık
Renk rampası
Dinamik değer
İçerik açıklaması

Kendi ilerleme çubuğunuzu çizmek istiyorsanız ComplicationDrawable sınıfı tarafından sağlanan ilerleme çubuğunu gizlemek için isRangedValueProgressHidden() yöntemini kullanabilirsiniz.
GOAL_PROGRESS Değer
Hedef değer
Tek renkli resim
Yerleşik koruma simgesi
Kısa metin
Kısa başlık
Renk rampası
Dinamik değer
İçerik açıklaması

GOAL_PROGRESS, Değerin sıfırdan başladığı ve Hedef değeri aşmasına izin verilen adım sayısı gibi işlevler için tasarlanmıştır.
LONG_TEXT Uzun metin
Uzun başlık
Tek renkli resim
Yerleşik koruma simgesi
Küçük resim
İçerik açıklaması
Sağlanmışsa uzun başlığı gösterir.
SMALL_IMAGE Küçük resim
İçerik açıklaması
Küçük resimlerin iki stili vardır: fotoğraf stili veya simge stili. Fotoğraf stili, alanı doldurmasının beklendiği ve kırpılabileceği anlamına gelir. Simge stili, kırpılamayacağı ve dolgulu olabileceği anlamına gelir. Görüntü değişkenliği, yanma korumalı veya düşük bitli ambiyans modu olan cihazlarda ambiyans modunda görüntülenmeye uygun olmayan görüntülere neden olabilir. Yanma koruması veya düşük bit ambiyans modu etkinleştirildiğinde kadranda güvenli olduğu için yanma koruması küçük görüntü kullanılabilir. Aksi takdirde, kadranın uygunluğu belirlemesi zor olduğundan resim gösterilmez.
LARGE_IMAGE Büyük resim
İçerik açıklaması
Bu resmin saat yüzünü dolduracak kadar büyük olması beklenir. Görüntü değişkenliği, yanma korumalı veya düşük bitli ambiyans modu olan cihazlarda ambiyans modunda görüntülenmeye uygun olmayan görüntülere neden olabilir. Bir kadranın ekrana uygun olup olmadığını belirlemesi zor olduğundan, yanma koruması veya düşük bitli ortam etkinleştirilirse kadranda ambiyans modunda görüntü gösterilmez.
WEIGHTED_ELEMENTS Öğe listesi
Tek renkli resim
Yerleşik koruma simgesi
Short text
Short title
Content description
Her öğe, bir renk ve ağırlıktan (sıfırdan büyük) oluşur. Öğenin oluşturulurken boyutu, ağırlığıyla orantılı olmalıdır. Ağırlıkların belirli bir değerin toplanması için kullanılması gerekmez. Saat yüzlerinin WEIGHTED_ELEMENTS renginin yeniden renklenmesine izin verildiğini unutmayın.

Aşağıdaki tabloda, herhangi bir komplikasyon alanı için gönderilebilecek boş verilere yönelik özellik türleri açıklanmaktadır. Bu türlerin alanı yoktur ve desteklenen türler listesine dahil edilmeleri gerekmez. Bu türler, kadranların aşağıdaki üç durum arasında ayrım yapmasını sağlar:

  • Kaynak seçilmedi
  • Kullanıcı bir alan için "boş" seçeneğini belirledi
  • Bir kaynakta gönderilecek veri yok

Kaynaklar, güncelleme isteklerine yanıt olarak TYPE_EMPTY gönderemez. Bunun yerine TYPE_NO_DATA gönder.

Özellik (komplikasyon) türü Açıklama
TYPE_NOT_CONFIGURED Bir özellik etkinleştirildiğinde, ancak kullanıcı bir kaynak seçmediğinde ve varsayılan ayarlanmadığında sistem tarafından gönderilir.

Kaynaklar tarafından gönderilemez.

TYPE_EMPTY Bir özellik etkinleştirildiğinde ve kullanıcı kaynak yerine "boş"u seçtiğinde veya kadranı kaynak seçmediğinde ve varsayılan olarak bu özellik türünü seçtiğinde sistem tarafından gönderilir.

Kaynaklar tarafından gönderilemez.

TYPE_NO_DATA Kaynağı olan bir özellik, kaynaktan gerçek veriler alınmadan önce özelliği temizlemek için sistem tarafından gönderilir.

Gönderilecek gerçek veri yoksa kaynaklar tarafından gönderilebilir.

Daha fazla bilgi için GitHub'daki WatchFace örneğine göz atın.