Hareketlere ve durumlar arasındaki geçişlere yanıt veren iyi tasarlanmış bir görünüme sahip olduğunuzda, görünümün hızlı olduğundan emin olun. Kullanıcı arayüzünün yavaş hareket ettiğini veya oynatma sırasında takılmasını önlemek için animasyonların tutarlı bir şekilde saniyede 60 kare hızında çalıştığından emin olun.
Görüntünüzü hızlandırın
Görüntünüzü hızlandırmak için sık çağrılan rutinlerden gereksiz kodları kaldırın. Size en yüksek getiriyi sağlayan onDraw()
ile başlayın. Ayırmalar, takılmaya neden olan bir çöp toplama işlemine yol açabileceğinden özellikle onDraw()
özelliğindeki ayırmaları ortadan kaldırın. Başlatma sırasında veya animasyonlar arasında nesne ayırın. Bir animasyon çalışırken asla ayırma
yapmayın.
onDraw()
ürününü daha yalın hale getirmenin yanı sıra mümkün olduğunca seyrek çağrıldığından emin olun. onDraw()
çağrılarının çoğu invalidate()
çağrısının sonucudur. Bu nedenle gereksiz invalidate()
çağrılarını ortadan kaldırın.
Çok pahalı olan bir diğer işlem de düzenler arasında geçiş yapmaktır. Bir görünüm requestLayout()
işlevini çağırdığında, Android kullanıcı arayüzü sistemi her bir görünümün ne kadar büyük olması gerektiğini bulmak için tüm görünüm hiyerarşisini dolaştırır. Çakışan ölçümler bulursa hiyerarşiyi birkaç kez katedebilir. Kullanıcı arayüzü tasarımcıları bazen iç içe yerleştirilmiş ViewGroup
nesnelerinin derin hiyerarşilerini oluşturur. Bu derin görünüm hiyerarşileri performans sorunlarına neden olur, bu nedenle görünüm hiyerarşilerinizi mümkün olduğunca yüzeysel hale getirin.
Karmaşık bir kullanıcı arayüzünüz varsa düzeni gerçekleştirmek için özel bir ViewGroup
yazabilirsiniz.
Yerleşik görünümlerden farklı olarak, özel görünümünüz, alt öğelerinin boyutu ve şekli hakkında uygulamaya özel varsayımlarda bulunabilir. Bu nedenle, ölçümleri hesaplamak için alt öğelerin arasında geçiş yapmaktan kaçınırsınız.
Örneğin, kendi boyutunu tüm alt görünümlerine uyacak şekilde ayarlamayan özel bir ViwGroup
'niz varsa tüm alt görüntülemeleri ölçme ek yükünü ortadan kaldırırsınız. Çok çeşitli kullanım alanlarına uygun yerleşik düzenleri kullanıyorsanız bu optimizasyon mümkün olmaz.