Keynote Overview yazımda Android’le ilgili yeniliklerden de kısaca bahsetmiştim. What’s new Android serisinde ise Constraint Layout’la başlayıp, Android’deki yenilikleri anlatmaya çalışacağım.

Başlangıç olarak kullandığım tüm screenshotları Android Studio 2.2 Preview üzerinden aldım. Anlatacağım özellikleri deneyebilmek için download etmenizi tavsiye ederim. 🙂

Bu sene yeni gelen özeliklerde benim gördüğüm, Android için kod yazmayı giderek daha da kolaylaştırıyorlar. Bizim yapmamız, düşünmemiz gereken bir çok şeyi sistem yapmaya başlamış durumda. Bu da aslında Android’e yeni başlamayı düşünenler varsa işlerini kolaylaştırcak bir durum oluşturuyor. Screen Shot 2016-05-29 at 17.14.37

Evet layout anlamında en önemli yeni gelen özellik aslında Constraint Layout. Eğer ki IOS de geliştiriyorsanız, aslında Contraint’ler aşina olunan bir özellik ama Android’de bir adım daha ileriye gidilerek buraya %’ler de eklenmiş ki uzun zamandır RelativeLayout’un tek eksiğinin %’ler olduğunu düşünüyordum. Aynı RelativeLayout’da olduğu gibi, ContraintLayout’da da tek katmanlı bir yapı üzerinden yerleşim oluştuyoruz. Ancak Relative’deki bazı eksiklerden dolayı bazen inner layout’lar kullanmamız gerekiyordu. Burada bu aşılmış durumda.

 

ConstraintLayout unbundled bir layout, yani framework’ü update etmeden de kullanabilirsiniz. Ginderbread’den itibaren uyumlu ki bu Android 2.3 oluyor. Piyasadaki en eski cihazlar bile ConstraintLayout kullanarak yapılan geliştirmeye görebilecek demek oluyor bu.

ConstraintLayout aynı zamanda tool’la, ki bu Android Studio oluyor, bir arada kullanılan ilk layout bu da Android için Layout Manager’ın inşa edilmesini ve Android Studio için bu kullanıcı deneyiminin tasarlanmasını doğurmuş durumda.

Yanda yer alan palet kısmından istediğimiz layoutu sürükleyerek layout’a ekleyebiliriz. Bize ilk eklediğimiz sunduğu öneriler(ekranın kenarlarıyla ya da widget’lar arası margin) Material Guideline’a göre. Bu da guideline’ın dışına çıkmamızı da bir nevi önlemiş oluyor.

Mesela aşağıdaki imajda yan yana iki buton görüyorsunuz. Bunların birbirlerine göre constraint’leri verilebiliyor. Daha önce de dediğim gibi IOS’den bu duruma aşina olanlar için bu özelliğin çok sıradan gelmesi ihtimali evet yüksek. 🙂

Screen Shot 2016-05-29 at 17.45.13 Ancak bu yeni layout editörde asıl güçlü olan yön ise, view’leri layout editör’de hareket ettirdiğimizde, Android Studio’da 60 fps’da bir layout algoritmasının arkada koşuyor ve böylece gerçekte ne olduğunu, layout’un constraint’leri nasıl çözümlediğini de görebiliyor olmamız. Bu da bize ne olup bittiği hakkında çok daha hızlı feedback vermiş oluyor.

Screen Shot 2016-05-29 at 17.57.44Ekranın üst kısmında mıktanıs gibi görünen button autoconnect butonu. Autoconnect açıkken butonla başladık öyle devam edelim. Yine bir butonu sayfaya eklediğinizde constraintlerini koyduğunuz noktaya göre otomatik olarak eklemekte. Tabi ki sonrasında bunları değiştirebilirsiniz. Daha önce de belirttiğim gibi ekrandaki percentage’ini değiştirebilirsiniz. Bunu yanda yer alan properties tabında -mesela aşağıdaki örnekte %48- olan değeri aşağı yukarı kaydırarak da elde edebilirsiniz.

Screen Shot 2016-05-29 at 18.02.03

Aşağıdaki çarpı butonundan tüm contraintleri kaldırabilir, ve butonların o anki konumlarına göre contraint eklenmesini hemen yanındaki lambaya benzer ikona tıklayarak yapabilirsiniz.

Screen Shot 2016-05-29 at 18.05.39

Biraz da visibility durumunun değişmesinin bahsedersek. Mesela 3 tane birbirine bağımlı constraintleri olan layoutumuz olduğumuz düşünelim. Ortadakinin visibility’sini değiştiriyoruz. Eğer invisible yaparsak hiçbirşey değişmez. Çünkü aslında view ordadır, sadece görünmez. Ancak gone yaparsak nasıl olur dersek? Gone yapılan view’in marginleri ve kendisi ortadan kaybolur ancak, constraintler yaşamaya devam eder. IOS’de ise aynı yapıyı UIStackView’le sağlayabiliyoruz.

Screen Shot 2016-05-30 at 00.37.50

Screen Shot 2016-05-30 at 00.38.07

Tüm bunlar ise UI’ın daha hızlı create edilmesini sağlayabilmek için design edilmiş durumda. Tabi ki tüm bu özellikler Android Studio 2.2 Preview’de kullanılabilir durumda. Romain Guy konuşmasını kişisel olarak report edilen tüm bugları kontrol ettiğini ve ekibin mümkün olduğunca çok bugı çözmeye çalıştığını, kullanmamızı ve feedback vermemizi gerçekten istediklerini söyleyerek bitirdi.

Umarım faydalı olmuştur. Seriye Android’e yeni gelen özelliklerle devam edeceğim. 🙂

Referanslar: