ConstraintLayout 2.0 Yenilikleri

Bu yazıda tanıtıldığı ilk günden beri heyecan uyandıran, tasarım yapmayı zevkli hale getiren ve view hierarchy sorununu çözmesiyle uygulamalarımıza rahat bir nefes aldıran ConstraintLayout'un yeni versiyonunun ve getirdiği yeniliklerin üzerinden geçeceğiz. Eylül 2018'de 1.1.3 stable versiyonu yayınlandığından yaklaşık 2 yıl sonra Ağustos 2020'de 2.0.0 stable hale geldi. Hemen sonrasında da bir kaç minor sürüm ile daha kararlı hale getirildi. Şu an 2.0.4 sürümü kullanılabilir durumda.

Yazı ile ilgili Github repoma buradan erişebilirsiniz. 2.0 sürümü ile gelen yeniliklere başlıklar halinde incelemeye başlayalım.

 

Flow

Flow, view'ları yatayda ve düşeyde dinamik olarak birbirine bağlayarak view sıralayan bir sanal düzen yardımcısıdır (virtual layout helper). Flow'a bağladığınız view'ların düzenini xml içersinde app:flow_... değişkenleri ile beraber değiştirebilirsiniz. Bunlardan en önemlisi olan flow_wrapMode'un 3 farklı seçeneği bulunuyor. 1- none : Yatay düzlemde view'ları birbirine bağlar ve içeriği sınırlamaz. View'lar, Flow sınırlarının dışına taşabilir. 2- chain : View'ları, flow sınırları içerisine sığdırabilecek şekilde yatay ve düşey düzlemde birbirine bağlar. 3- aligned : View'ları, flow sınırları içerisine sığdırabilecek şekilde yatay ve düşey düzlemde birbirine bağlar. Chain olarak benzerlik göstermesi ile beraber satır ve sütunları birbirine otomatik olarak hizalar.

Flow ile birlikte kullanabileceğiniz diğer değişkenler:

  • flow_horizontalStyle = "spread|spread_inside|packed"

  • flow_verticalStyle = "spread|spread_inside|packed"

  • flow_horizontalBias = "float"

  • flow_verticalBias = "float"

  • flow_horizontalGap = "dimension"

  • flow_verticalGap = "dimension"

  • flow_horizontalAlign = "start|end"

  • flow_verticalAlign = "top|bottom|center|baseline

Ekstra: FlexBoxLayout'a benzer bir yaklaşım gösterdiği için FlexBoxLayout kullandığınız yerleri Flow kullanarak yeniden tasarlayabilirsiniz.

Bu görselin xml'ine aşağıdan ulaşabilirsiniz.



 


Layer


Layer, birden fazla view'a aynı anda kaydırma, döndürme ve ölçek değiştirme (scale) animasyonlarını ekleyebilmeniz için sanal bir katman yaratır.