Hareketlere yanıt veren ve durumlar arasında geçiş yapan iyi tasarlanmış bir görünümünüz olduğunda görünümün hızlı çalıştığından emin olun. Oynatma sırasında yavaş veya kesintili bir kullanıcı arayüzüyle karşılaşmamak için animasyonların sürekli olarak saniyede 60 kare hızında çalıştığından emin olun.
Görünümünüzü hızlandırma
Görünümünüzü hızlandırmak için sık çağrılan rutinlerdeki gereksiz kodları kaldırın. En büyük geri ödemeyi sağlayan onDraw() ile başlayın. Özellikle onDraw() içinde tahsisleri ortadan kaldırın. Çünkü tahsisler, takılmaya neden olan bir atık toplama işlemine yol açabilir. Nesneleri başlatma sırasında veya animasyonlar arasında ayırın. Animasyon çalışırken asla tahsisat yapmayın.
onDraw() daha yalın hale getirmenin yanı sıra mümkün olduğunca az çağrıldığından emin olun. onDraw() numarasına yapılan aramaların çoğu invalidate() numarasına yapılan aramalar sonucunda gerçekleşir. Bu nedenle, invalidate() numarasına yapılan gereksiz aramaları ortadan kaldırın.
Çok pahalı olan bir diğer işlem de düzenler arasında gezinmektir. Bir görünüm requestLayout() çağrısı yaptığında Android kullanıcı arayüzü sistemi, her görünümün ne kadar büyük olması gerektiğini bulmak için görünüm hiyerarşisinin tamamını dolaşır. Çakışan ölçümler bulursa hiyerarşide birden fazla kez gezinebilir. Kullanıcı arayüzü tasarımcıları bazen iç içe yerleştirilmiş ViewGroup nesnelerin 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 sığ hale getirin.
Karmaşık bir kullanıcı arayüzünüz varsa düzenini oluşturmak için özel bir ViewGroup yazabilirsiniz.
Yerleşik görünümlerin aksine, özel görünümünüz alt öğelerinin boyutu ve şekliyle ilgili uygulamaya özel varsayımlarda bulunabilir. Bu nedenle, ölçümleri hesaplamak için alt öğelerini geçmekten kaçınır.
Örneğin, kendi boyutunu tüm alt görünümlerine uyacak şekilde ayarlamayan özel bir ViewGroup varsa tüm alt görünümlerin ölçülmesinin getirdiği ek yükten kaçınırsınız. Çok çeşitli kullanım alanlarına hitap eden yerleşik düzenleri kullanıyorsanız bu optimizasyon mümkün değildir.