Tip:
Highlight text to annotate it
X
İsteğe özel saat yüzleri
Android Wear'ın en hevesle beklenen
özelliklerinden biriydi.
Son sürümle birlikte, saat yüzü geliştirme
artık resmi olarak destekleniyor.
Ben Google'dan Hoi Lam ve bu da saat yüzü
geliştirmeye giriş videosu.
Saat yüzünüz arka planda çalışan bir hizmettir.
Size, kendi saat yüzünüzü geliştirirken takip edeceğiniz
üç basit adımı anlatacağım.
İlk olarak, saat yüzü projenizi nasıl yaratacağınızı,
ikinci olarak da hem Etkileşimli hem de Ambiyans modları için
saat yüzünüzü nasıl özelleştireceğinizi anlatacağım.
Son, ama bir o kadar da önemli olan-- tüm koşullara uygun
bir saat yüzü yaratmada size yardımcı olacak
ek API'ler konusunu ele alacağım.
Peki işe nasıl başlıyoruz?
En kolay yollardan biri, şu klasör altında bulunan
saat yüzü örneklerinden birini açmaktır.
Burada, başlangıç için bir dijital saat yüzü,
bir de analog saat yüzü bulunmaktadır.
Projenin içinde, kurulum ve derleme döngülerini etkileyecek
iki ana metot göreceksiniz.
onCreate'te, genellikle, bitmap nesnelerini yüklemeyi ve
saat yüzüne veya tuvale çizim yapmak için
çizim nesnelerini çalıştırmayı içeren
durum değişkenlerini belirleriz.
onDraw'da, saat yüzünde gösterdiğimiz
her bir kareyi işleriz.
Bir tuvale çizim yaptığımızdan, standart bitmap veya
şekil çizme fonksiyonlarını kullanabiliriz.
Bu kod, her karede çalışıyor olacağından
performansı göz önünde bulundurmak gerekir.
Projeyi yarattıktan sonra, artık
saat yüzümüzü, iki ana mod,
Etkileşimli ve Ambiyans modları için özelleştirmeye hazırız.
Etkileşimli modda, saat yüzü, genellikle,
renklidir ve akıcı bir animasyona sahiptir.
Bu mod, genellikle, kullanıcı dikkatini
saate yönlendirdiğinde etkindir.
Ambiyans modunda, grafikler sınırlı bir renk paleti
kullanmalıdır.
Bu modda, grafikler sadece dakikada bir kere güncellenir.
Peki, bu iki modda mevcut olan
ana özelleştirme seçenekleri nelerdir?
Etkileşimli modda, şablon
saniyede bir kere güncellemeye ayarlıdır.
Varsayalım ki bir animasyon oynatacaksınız
ve daha sık güncelleme yapmaya ihtiyacınız var,
yapmanız gereken üç şey var.
İlk olarak, mUpdateTimeHandler'ı kaldırmalısınız.
Aksi hâlde, onDraw metodu sadece
saniyede bir kere çağrılacaktır.
İkinci olarak, saat yüzü ilk görünür olduğu anda
onDraw metodunu tetiklemeniz gerekiyor.
Bu, onVisibilityChange metodu altındaki karenin
iptal edilmesiyle gerçekleştirilir.
Son olarak da onDraw metodunun sonundaki
kareyi iptal etmeniz gerekir.
Bu da akıcı bir animasyonu etkinleştiren
onDraw döngüsünü devreye sokar.
Artık saat yüzünüz hiç durmadan güncellenecektir.
Kareyi geçersiz kılmadan önce saat yüzünün Ambiyans modunda
olup olmadığını kontrol etmeniz elzemdir.
Aksi takdirde, güncelleme döngüsü, Ambiyans modundayken dahi
arka planda hiç durmadan çalışmaya devam edecektir.
Bu da batarya ömrünü ciddi anlamda etkileyecektir.
Etkileşimli modu hallettiğimize göre,
artık Ambiyans modundan bahsetme zamanı geldi.
Uygulama geliştiriciler Ambiyans modunda iki işlem yaparlar:
Bir, gri palete sahip veya siyah-beyaz grafikler seçmek;
iki, saniyeyi gösteren saat ibresi veya dijital gösterge gibi
dakikada bir kereden fazla güncellenen
ekran ögelerini iptal etmek.
Saatin, Ambiyans moduna
geçip geçmediğini dinlemek için
onAmbientModeChanged metodunu geçersiz kılmalısınız.
Uygulama geliştiriciler, genellikle, saatin Ambiyans modunda
olup olmadığını belirten durum değişkenini
gönderir ve aktif kareyi iptal ederler.
Bu, ekran yenilemeyi tetikleyecektir.
Akabinde, bir sonraki onDraw'da, geliştirici,
ne yapmak istediğine karar verebilir.
Temel özelleştirmeleri hallettiğimize göre
artık saat yüzünü biraz cilalamanın vakti geldi.
Saat yüzü API'leri, Ambiyans moda ek olarak,
saat yüzünün tüm ortamlarda düzgün çalışmasını
garantilemeleri için geliştiricilere ek imkânlar sunarlar.
Bunlardan ikisini ele almak istiyorum.
İlk olarak, bazı Android Wear cihazları tek bitlik Ambiyans modunu desteklerler;
yani ekrandaki pikseller ya açık ya kapalı olabilir.
Gidip, basitçe, gri tonlamalı tasarımı tekrar
kullanmak, bu tür ekranlarda genellikle işe yaramaz.
Örneğin, Santa Tracker için yaptığımız
gri tonlamalı tasarımı hiç değiştirmezsek,
tek bitlik ekranda şöyle görünür.
Gördüğünüz gibi hiç de hoş değil.
İşte o yüzden, biz de bu alternatif siyah-beyaz
tasarımı ekledik.
Cihazın tek bit destekleyip desteklemediğini öğrenmek
için onPropertiesChanged metodunu geçersiz kılın.
Böylece, geliştiriciler, cihazın, tek bit Ambiyans modunu
destekleyip desteklemediğini öğrenebileceklerdir.
İkinci olarak -- bu benim kişisel favorim --
ekranınızda pencereli kart olup olmadığını
tespit etme kabiliyeti.
Bu, size, pencereli kartın saat yüzü tasarımınızla olumsuz bir
etkileşime girmesini önleme fırsatı sunmaktadır.
Bu, özellikle Ambiyans modu açısından çok önemlidir.
Solda da görebileceğiniz gibi bu önlem alınmadığında,
pencereli kartla saat çizgileri birbirine karışmakta,
okumayı zorlaştırmaktadır.
Nihai tasarımımızda, pencereli kartın arkasına, onu daha okunabilir
kılmak için, çerçevesiz siyah bir dikdörtgen yerleştirdik.
Buna ek olarak, geliştiriciler, saat yüzü stil sınıfını kullanarak
Ambiyans modunda pencereli kartın
gösterilip gösterilmeyeceğini ve Etkileşimli moddayken
mat mı yarı saydam mı
görüneceğini belirleyebilirler.
Saat dilimi değişikliklerini takip etme,
saat yüzünde canlı veri akışı sunma
ve cep telefonundan saat yüzü ayarlarını değiştirme
gibi daha birçok farklı özellik için
lütfen dokümantasyona göz atın.
Ben Hoi Lam ve sizin saat yüzü tasarımlarınız
vasıtasıyla saati öğrenmeyi sabırsızlıkla bekliyorum.