Android Project Template (Navigation Draver Activity, Google Maps Activity, Login Activity)

A. Oğuz
6 min readSep 10, 2020

--

Herkese merhaba, bugün önceki yazılarımdan çok daha farklı bir alanda yazacağım. Benim de bilgi edinmek için araştırdığım bir alan olan Android alanına değinmeye çalışacağım. 🙌

Android Studio üzerinde proje oluşturmadan önce bizlere çeşitli templateler sunarak daha kolay geliştirme yapmamız için bize seçenekler sunuyor, Bu seçenekler ile oluşturmak istediğimiz uygulamaya uygun bir template seçerek hızlı bir şekilde geliştirme yapabiliriz. Bugün sizlerle "Navigation Draver Activity, Google Maps Activity, Login Activity" isimli templateleri inceleteceğiz. Genel olarak bu yazıda bu templatelerin arkasında nasıl bir işlem olduğunu anlatmaya çalışacağım. Haydi incelemeye başlayalım 🤩

1- Navigation Draver Activity

Navigation Draver Activity, genel olarak uygulamalarımızda menü yapısını kullanmak istediğimiz alanlarda içinde bulundurduğu hazır yapılar uygulamamızı tasarlama ve yapısını oluşturma alanlarında bize kolaylık sağlar.

Navigation Draver Activity, templatesini açtığımızda karşımıza bu ekran geliyor. Menü üzerinde bulunan her seçenek için ayrı bir class açılmış ve işlemlerimizi bu classlar içinde yapacağız haydi hep birlikte bu sınıflarda neler olmuş onlara bakalım :)

Bu kotlin dosyaları içindeki kodları birlikte inceleyelim.UI klasörü içinde menü içinde bulunan bölümlerin kotlin kodları yer alıyor. MainActivity dosyasının içinde ise uygulamamızın ana işlemlerinin tanımlandığı kodlar yer alıyor.

GalleryFragment.kt class :

GalleryFragment sınıfında onCreateView isimli bir method görmekteyiz. Bu method ile fragment_gallery.xml dosyasındaki layoutları işaret ederek işlem yaptığını görüyoruz. Burada root değişkenine o fragment_gallery layoutu atılıyor ve sayfa oluşturulurken bu layout gösteriliyor. TextView değişkenine de galleryViewModel.kt içerisinde bulunan string değeri alınıp layout içindeki textte gösteriliyor.

HomeFragment.kt

aslında burada da yapılan işlem galleryFragment.kt içinde yapılan işlem ile aynı, ilgili xml dosyası işaret edilip sonrasında homeViewModel.kt içinde bulunan texti ekrana yazılıyor.

SlideshowFragment.kt

Diğer sekmelerde olduğu gibi buradaki kodlarda da xml dosyası işaret edilip SlideshowViewModel içindeki texti ekrana basıyor.

MainActivity.kt

MainActivity.kt dosyasına baktığımızda karşımıza üç tane method çıkıyor bunlar onCreate, onCreateOptionsmMenu, onSupportNavigateUp şimdi gelin bu methodlarda neler oluyor onlara bakalım :)

onCreate methodunda ekran üzerinde işlem yapmak istediğimiz nesneler değişkenlere atanmış.Fab değişkenine basıldığında ekrandaki aksiyonun kodlarını görüyoruz. AppbarConfiguration ile açılan menüde tıklanan durumları dinleyip ona göre işlem yapmasını sağlıyor. OnCreateOptionsMenu ile action bar üzerindeki durumları kontrol edebiliyoruz. onSupportNavigateUp ile menünün açılıp açılmama durumlarını kontrol ediyoruz.

activity_main.xml dosyasının içine bakıldığında varsayılan olarak drawerLayout ile başlayıp daha sonrasında appbar xml kodlarının barındırıldığı app_bar_main dosyasının dahil edildiği ve menüyü bölümü için NavigationView de bu xml dosyasının içinde yer alıyor.

NavigationView içine gidildiğinde nav_header_layoutun içerisinde menü içindeki header kısmının tasarlandığını görüyoruz.

2- Google Maps Activity

GoogleMapsActivity template genel olarak Google’nin haritalar servisini kullanmak istediğimizde içinde bulundurduğu yapılar ile bu servisi hızlı bir şekilde kullanmamıza olanak sağlar.

GoogleMapsActivity üzerinde kodları incelemeden önce Google Maps servisini kullanmak için Google API’yi aktif hale getirmemiz gerkeli bunun için şu işlemleri yapıyoruz.

https://developers.google.com/maps/documentation/android/start#get-key

bu adresten Google API ’yi aktifleştirdikten sonra almış olduğunuz API keyi google_maps_api.xml içindeki alt tarafta altını çizdiğim yere yapıştırın daha sonrasında uygulamamız Google Maps hizmetini kullanabilir olacak.

Google Maps Activity projesinin içinde işlemler MainActivity dosyası içinde yapılıyor. Gelin birlikte bu dosya içinde neler olmuş onlara bakalım.

MainActivity.kt

MainActivity dosyasının içine baktığımızda onCreate ve onMapReady methodları ile karşılaşıyoruz. onCreate methodu fragment üzerinde haritanın oluşturulmasını sağlıyor. onMapReady ile harita üzerindeki işlemlerin yapıldığı methoddur. Sydney değişkenine harita üzerinde bulunan Latitude ve Longitude değerleri atanmış. Addmarker ile harita üzerinde lat ve long değerlenini belirlediğimiz yere bir title oluşturulur. Ekranda görünümü şu şekildedir.

MoveCamera ile uygulama açıldığında ekranın odak noktası lat ve long değerlerini girdiğimiz değişkenin haritadaki konumu üzerinde olacaktır.

activity_maps.xml dosyasına baktığımızda tek bir fragmentten oluşuyor ve uygulamayı çalıştırdığımızda bu fragment üzerine haritanın çizildiğini görüyoruz.

3- Login Activity

Login Activity uygulama içindeki giriş ekranı ve arkasındaki temel işlemleri bizim için hazır bir şekilde veren bir yapıdır.

Login Activity üzerinde bu dosyalar üzerine neler olup bitmiş gelin inceleyelim :)

LoggedInUser.kt

LoggedInUser model olarak kullanıcının id’si userID üzerinde kullanıcı adı da displayName olarak tanımlanmış.

LoginDataSource.kt

Bu dosya içinde login ve logout methodları görüyoruz. Login methodu içinde try catch kullanılarak olası bir hata durumunda kontorlü sağlanmış .FakeUser değişkenine az önce açıkldığımız sınıftan userID olarak random bir sayı, displayName değişkenine de Jane Doe ismi atanmış ve sonrasında da başarılı bir şekilde döndürülmüş. Eğer bir hata olursa catch bloğu içinde hata verecektir.

LoginRepository.kt

LoginRepository sınıfı içinde kullanıcının login yapıp yapmama durumları tanımlanmış, daha sonrasında logout isimli fonksiyon LoginRepository sınıfı içinde tanımlanmış ve LoginDataSource classı içinden logout olmamızı sağlıyor. Login methodu ise LoginDataSource üzerinden login olup olmama durumlarını kontrol eder. SetLoggedInUser ise giriş yapılan bilgileri döndürür.

Result.kt

Result classında login olup olmama durumlarına göre vereceğimiz sonuçlar toString methodundan override edilmiş.

LoggedInUserView.kt

LoggedInUserView classı içindeki displayName kullanıcı arayüzü üzerinden işlem yapılan veri alanıdır.

LoginFormState.kt

LoginFormState classı ekran üzerindeki form durumlarının kontrol edilmesi için oluşturulan değişkenlerdir.

LoginResult.kt

LoginResult classı içinde login durumları değişkenler üzerinde tutuluyor.

LoginViewModel.kt

LoginViewModel classında uygulamamızın kullanıcı arayüzü tarafındaki tüm logicleri yapılıyor. Yukardaki classlarda tanımladığımız değerlerden üretilen nesneler değişkenlere atanmış. _loginForm değişkenine form durumlarının kontrol edildiği bir nesne oluşturulmuş. loginResult değişkenine LoginResult sınıfından nesne üretilmiş. Bu class içinde login,loginDataChanged,isUserNameValid,isPasswordValid olmak üzere 4 faklı method bulunuyor. Şimdi onları inceleyelim.

Login methodunda LoginRepository sınıfındaki login methodundan erişilen değerler result değişkenine atanmıştır. Daha sonrasında oluşan durum if yapılarında kontrol edilip ilgili işlemler yapılmıştır.

isUserNameValid methodunda kullanıcı adının içermesi gereken durumlar ile ilgili bir kontrol yapılmıştır.

isPasswordValid methodunda ise kullanıcının girdiği parola uzunluğunun 5'ten uzun olma durumu kontrol edilmiştir.

loginDataChanged methodunda ise gelen kullanıcı adı ve şifreye göre az önce açıkladığım methodlar üzerinden validate durumu kontrol edilir.

LoginActivity.kt

LoginActivity classı uygulamanın ana logiclerinin kontrolülünün yapıldığı yerdir.

onCreate methodu ile kullanıcı arayüzü üzerindeki nesneler değişkenler ile ilişkilendiriliyor. Daha sonrasında UI üzerinde login olup olmama durumu kontrol ediliyor. Eğer login olmuşsa verilecek reaksiyonlar login olmamışsa geriye döndürülecek hata mesajları kurgulanıyor. Ekran üzerinde giriş yapılıp ya da hata alma durumunda gösterilcek nesneler ve uyarılar if yapıları içinde belirleniyor.

inputlara değerler girildikçe bu değerler dinlenip arayüz üzerinde gösterilecek durumlar bu methodlar içinde belirlenir.

Model üzerinden alınan display name ile login durumu olduktan sonra ekrana basılacak toast mesaj, ya da login hatalı olduğunda ekrana basılacak hata mesajlarının kontrolü bu bölümde yapılmıştır.

Bu yazımda sizlere genel olarak Android Studio’daki templatelerden bahsetmek istedim umarım faydalı olmuştur. Önerilerinizi için bana Linkedin üzrinden erişebilirsiniz. Yeni yazılarımda görüşmek üzere :)

--

--