Android’e Giriş yazımı yazmanın ardından geçen yıllar aslında Android’e başlangıç için olan gereksinimleri de değiştirdi. İngilizce çok fazla sayıda kaynak olmasına rağmen yerel dilde kaynak ihtiyacı yine de varolmaya devam etmekte. Bu sebeplerden dolayı hergün gelişen, değişen teknolojiyle entegre olunabilmesi için bu yazıyı tekrar yazıyorum.
Konuyla ilgili yazımı ilk yazdığımda geliştirme ortamı olarak Eclipse kullanıyorduk. Şu an ise Google’ın resmi olarak desteklediği ide Android Studio. Zaten artık Android Studio’dan açılan bir uygulama hazır template’lerle neredeyse app’i yazıp önümüze veriyor. Gradle entegrasyonu seçilen sdk’ya göre hemen gerekli uploadları yapıyor. Yani küçük bir app yazmak ya da birşeyler denemek için hazır bir kod sunuyor Android Studio. Sonrası biz yazılımcıların yaratılığına kalmış 🙂
İlk olarak Android yeni bir dünya. Yani aslında kendine ait bir geliştirme ortamı, componentleri ve sistem bileşenleri bulunmakta tabi temel olarak. Google kafamız karıştığında bakabilmemiz için bir Android sözlüğü hazırlamış. Kafanıza takılan, hatırlayamadığınız bir şey olursa burayı referans alabilirsiniz.
Android’de ilk olarak öğrenilmesi gereken View’dir. View’i ekranda belli bir içeriğin gösterilmesini sağlayan bir dikdörtgen gibi tanımlayabiliriz. Bu içerik bir imaj, text, button ya da app’in gösterebileceği herhangi bir şey olabilir. Bu view’ler layout olarak bilinen yapıları oluştururlar. Ekranda gördüğünüz ve etkileşimde bulunduğunuz herşey ise UI(User Interface) olarak adlandırılır. Farklı isimlerde çok sayıda view vardır. Mesela text gösterimi yaptığımız TextView, image için ImageView, kullanıcının input girebildiği EditText gibi. Tabi bunlar sadece bazıları. Farklı işlemleri yapabilmek için Android’de çok sayıda farklı view bulunmaktadır.
Kısaca başlamak gerekirse, yukarıda bahsettiğimiz tüm yapıları Android’de XML (Extensible Markup Language) üzerinde implement ediyoruz. Böylece layout’larımızı xml içerisinde build edebiliyoruz. Genel olarak bir layout ve içindeki view’in yerleşimi aşağıdaki gibidir. Layout’lar view’lerin belli bir düzende ekranda görünmesini sağlar. Bu sayede farklı cihazlarda benzer bir kullanıcı deneyimini yakalamış oluruz.
Burada TextView xml element, TextView’in içerisinde yer alan android:layout_width gibi değerler ise xml attribute’lerdir. Her bir elementin bir açılış, bir de kapanış ayracı bulunur. (<, />) Gördüğünüz match_parent, wrap_content gibi değerlerin de tabi ki bir anlamı var. match_parent width ya da height için verildiğinde parent’ın yüksekliği ya da genişliği neyse onu alacağını gösterir. Buradaki örnekte parent’da match_parent olarak tanımlı olduğu için, TextView’in genişliği ekranın genişliğine eşit olacaktır. wrap_content ise genişlik ya da yüksekliğin content ne kadarsa o kadar olacağını gösterir. Bunlar dışında fixed değerler de verilebilirdi. Ancak bu durumda birim olarak dp verilmelidir. Mesela genişlik için 150 birim vermek istiyorsak bu 150dp olmalı ki, density’e göre her cihazda gerçekten 150 birimi kapsadığından emin olalım. Çünkü çözünürlüğü göre bu değişmektedir. Peki örnekte olmayan std başka neler vardır dersek de text’in colorı, appereance’ı, fontu material design’ın guideline’lına göre düzenlenebilirdir.
Layoutu detaylandırarak devam edelim. Widget’larımızın (TextView gibi) ekranda belli bir düzende yerleşebilmesi için bir şeye ihtiyacımız vardır. İşte bu birşeyin karşılığı da Layout’lar. Eğer layout’lar olmasaydı, widget’ların sabit noktalara yerleştirilmesi gerekirdi ki bu Android’in fragmentation mantığına tamamen ters bir durum. Bunlar için de layout’lar varolmuş durumda.
Temel layoutlar:
- LinearLayout
- FrameLayout
- RelativeLayout
- GridLayout
Yukarda listelenenlerden LinearLayout içerisinde yer alan widget’ların orientation attribute’yle karar verilerek yatay ya da düşey düzlemde sıralı olmasını sağlar.(Alt alta ya da üst üst üste)
FrameLayout, katmanlı yapıların oluşturulması içindir.
RelativeLayout daha kompleks tasarımlarda LinearLayout’u iç içe kullanıp renderin performansını düşürmek yerine göreli view yerleşimi sağlayarak inner view kullanımını azaltan bir layoutdur.
GridLayout ise içerisinde yer alan widget’ların grid şeklinde yerleşmesini sağlar.
Bunlar dışında Android Layout ailesine bir de yeni katılan ConstraintLayout bulunmakta. ConstraintLayout’u Android Studio 2.2 ve üzeri versiyonlarda kullanabiliyorsunuz. UI Designer yardımıyla tasarlanıyor. Ama koddan da yazılabiliyor. Android Studio 2.2 ve üzerinde kodlanabiliyor olmasıyla beraber, 2.3 üzerinde tüm cihazlarda görünebiliyor. Release versiyonu kullanmak için Android Studio 2.3’e ihtiyaç bulunmakta.
Referanslar:
Leave a Reply