Sözlüğüm Uygulaması Yayında
Bu ay Haziran ayının gündemine ek olarak yeni bir android uygulama çıkardım. Uygulama ile ilgili hem bilgi vermek hem de bana kazandırdığı tecrübeleri anlatmak için bir yazı yazmak istedim.
Uygulamayı incelemek için :



//play.google.com/store/apps/details?id=com.umiitkose.sozluk_ingilizce_turkce_ceviri_dictionary
Uygulama için aşağıdaki teknolojileri kullandım. Kotlin programlama diliyle yazdım.
- MVVM
- Room
- Firebase ( Crashlitycs ve Analitycs için)
- Material Design Library
- Room Asset Helper
- Lottie
- Live Data
- ViewBinding
Yakında kod üzerinde refactor yapıyor olacağım. Eksikliklerimi de sizinle paylaşıyor oluyum. Di library ‘si eksik. Bunun için koin kullanmayı düşünüyorum. Ayrıca asenkron olarak veri tabanından verileri almam lazım. Şuan için açılış bence yavaş, hızlandırmam lazım. Bunun için de Kotlin ‘in coroutines ‘ini kullanacağım.
Peki Neler Yaptım ?
Uygulama 650k ‘dan fazla veriyi içerisinde barındırıyor. Türkçe ve İngilizce olarak 650 bin veriyi uygulama internetsiz çalışması için telefonun içerisinde tutmaya karar verdim. Nedeni bu uygulamayı sizler için yapsam da kendim içinde yapıyorum. Böylece herşeyde interneti aç ya da internete bağımlı kalmayı istemedim.
Veriyi projeye dahil ederken uygulama açılışını etkiler mi vs gibi bir çok sorum vardı. SQL ‘deki kabiliyetim de eksiklikler vardı. Aslında uygulama bu eksikliklerimi hem görmemi sağladı hem de daha fazla kendimi geliştirmeye. Öncelikle Veritabanı kısmıyla başladım Bunun içinde kullanacağım tüm sql ‘leri belirledim. Proje ‘de room içerisine dışarıdan bir veritabanı dahil ediyorsanız ve tablo sayısı fazlaysa aynı yapıyı kurmanız için room ne kadar uyarı yapsa da bazen hatanızı görmek işleri zorlaştırıyor. Aşağıdaki adres bu konuda çok fazlasıyla işime yaradı tavsiye ederim.
//hrankit.github.io/RoomSQLiteDifferenceFinder/
Veritabanı ile ilgili tüm sorunlarımı çözdüm ve aslında room ‘da dışardan 2.3 versiyonu ile veritabanı eklemeye izin verse de buradaki sorunları aşamadım ve yeterli çözüm bulamadım. Sorunu hızlıca çözmek istediğim için ueen ‘in RoomAsselHelper library ‘si çok işime yaradı. Tavsiye ederim.
Sıra geldi uygulamanın tasarımına. Bu konuda marketteki uygulamalar, dribble ‘ı, pinterest ‘i ve upslab ‘taki örnek uygulamaları bakarak kararımı verdim. Uygulamanın ekran görüntüleri daha sonraki kısımlarda aklınızda oluşması amacıyla aşağıda paylaşılmıştır.



Uygulamanın Ana sayfası, Kelimeleri İsim, Sıfat ve Fiile göre güncelliyor. Her girişte farklı bir kelime gözükmesi daha faydalı olur diye düşünüyorum.



Uygulamada kelimenin okunuşu, detay bilgisinin görünümü.



Aranılan kelimenin çevirileri. Tıkladığınızda kelimenin türünü öğreniyor. Paylaşabiliyor, Not alabiliyor favoriye kaydedebiliyorsunuz.



Geçmiş aramalarınız bu şekilde çıkmaktadır.



Uygulamanın Arama kısmı. Aranılan kelime daha sonrasındaki girişte suggestion olarak görünüyor.
Mavi ve Beyaz ile yazılarda hafif grimsi bir ton tercih ettim. Sadelik Steve Jobs ‘un kitaplarından aklımda kalan bir şeydi. Bence güzel oldu.
Veritabanı için class’ları yazdım, çalışırlığını test ettim, hızını test ettim, model classlarını yazdım. Package by Layer yapısı oluşturdum vs derken sıra geldi tasarıma ve yukarıdaki tasarımları yaptım. Burada sizinle önemli bir şey paylaşıcam. Arama kısmı benim istediğim yapı uygulamayı indirirseniz anlıyacaksınız tam bu şekilde olmasını istedim. Aslında tüm ekranlarda arama yapabilsin isterdim ama buradaki veri alışverişi zor oldu. History Suggestion kısımları vs istediğim gibi çalışmadı. Burada şu teknik sorun vs yazmıyacağım, denemesi bedava fakat bir fragment ya da activity içerisinde tek bir noktada arama yapmanız faydalı olacaktır. Bunu diğer uygulamalardaki arama yapılarını inceleyerek ‘te keşfedebilirsiniz. Neden biz direk uygulama içerisinde herhangi bir yerde arama yapamıyoruz diye. Twitter, İnstagram, Linkedin örnektir.
Ekranlarıda yazınca yavaş yavaş veritabanındaki verileri bağlamak kaldı ve proje aslında yukarıdaki halini aldı. Favori kısmı note alma vs gibi kısımlar bilindiğini düşündüğüm için yazma gereği bulmadım. Takıldığınız yer olursa bana yazabilirsiniz.
Proje ‘de beni zorlayan kısımlar aslında 2 taneydi.
1-> Arama kısmının tüm activitylerde yapmak istemem ama aslında bunun uygulama üzerinde büyük bir külfete ve suggestion kısmının olmamasına ve kullanıcının bir tetikleme yapmadan (bir button click) arama yapılamamasıydı. Şimdi ister geçmişteki aramalarına göre sorgulama yapabiliyor, isterse de yeni bir kelime arama yapabiliyor.
2 -> Dışardan bir veritabanı implemantasyonu. Aslında Room ‘un kendi içerisindeki yapısını kullanmam zaman kaybıydı. Sanki Room ‘un ilk eklenmesinde bir takım sıkıntılar vardı gibi ama daha sonra çözeceğim.
Proje ‘de fazlar belirli ve güncellemeler olacak. Güncelleme oldukça paylaşıyor olacağım.
Yazımı okuduğunuz için teşekkür ederim.














