Jetpack: Preferences Library

Güncelleme tarihi: 7 Haz 2021

Merhaba arkadaşlar, bu mobi'de kullanıcının android uygulamamıza dair kişiselleştirilmiş ayarlarının Preference Library ile nasıl yönetilebileceğini ve Jetpack'in ne olduğunu açıklar nitelikte olacaktır.

Keyifle okumanız dileğiyle :)

 


Jetpack Nedir?


Android Jetpack, bir Android uygulaması geliştirirken; test edilebilir, mimariye ayak uyduran ve geliştirme süremizi daha hızlı, daha stabil hale getiren paketler bütünüdür.


Bu bağlamda Jetpack içerisinde yer alan Data Binding ile layout üzerindeki view'leri bind edebilir, içerisine değerler atayabilirsiniz. Ayrıca bir başka Jetpack paketi olan Navigation Architechture ile tek Activity üzerinde fragmentlerin yer aldığı ve fragmentlerın yönetimini oldukça kolaylaştıran bir yapı kurabilirsiniz.


Jetpack'in en büyük faydası bir developer için verimliliği arttırmasıdır. Örneğin daha önce Camera 1 API(deprecated) ve Camera 2 API'lar ile bir kamera geliştirmeye kalktığınızda bu API'lar üzerinde ustalaşması oldukça güç bir durumdu. Ve işin içine cihaz kaynaklı uyumluluk sorunları girince (Samsung S6 Edge vs) içinden çıkılması güç bir hal alıyordu.

Fakat JetPack ile gelen Camera X ile artık bir kamera geliştirmek, bu kameradan görüntü analizleri almak oldukça stabil ve kolay bir hale geldi.

Bu sebeple Jetpack paketlerini kullanmak aslında bize daha mimariye dönük ve daha esnek bir perspektif çizmemize olanak tanıyor.


Preference Library Nedir?


Ayarlar ekranı, temelde geliştirdiğimiz bir Android uygulamasında kullanıcının uygulamaya dair kişisel deneyimlerini oluşturduğu bir sayfadır. Bir ayarlar ekranı oluşturduğumuzda kullanıcıdan uygulamayı kullanım tercihine dair bir çok bilgi alırız. Preference Library, bu ekran tasarımlarını yaparken içerisinde yer alan özel view'ler ile kullanıcı ayarlarını saklamayı kolaylaştıran bir Jetpack paketidir.


Ayarlar ekranı kullanıcılarımıza uygulamamıza dair özelleştirme imkanı sunar. Burada tema seçenekleri, kullanıcı deneyimi ayarları, gizlilik politikası ve açık kaynak lisanslarımızdan bahsedebiliriz. Örneğin bir push notification servisi olarak OneSignal’i tercih ettiğinizde, Notification Channel’ları oluşturmadığımızdan hangi bildirimlerin tercih edileceğine dair verileri yine ayarlar sayfamızda bulundurabiliriz. Ayarlar ile ilgili bir özellik kullanmak istediğimizde bu ekranın bir layout olarak tasarlanmasına ihtiyaç duyarız. Devamında tasarlanan ekrana, kullanıcının seçtiği ayar setlerine göre datanın doldurulması mantığını kurmalıyız. Bu çok fazla atık kodun (boiler plate) oluşmasına neden olacaktır. Neyse ki JetPack ile gelen Preference Library tüm bunları kendi yapısı içerisine alarak bizi büyük bir yükten kurtarıyor.

Preference Library kullandığınızda bir layout olarak ekran tasarlamanıza ve bu ekranlarda kullanıcının daha önceki ayarlarına dair bilgi tutmanıza gerek kalmıyor. Tüm bunları Preference Library’e özel xml tag’leri ve attribute’leri ile hazırlayabilirsiniz.

Başlarken


Şimdi bu özelliklerin nasıl kullanıldığını ve neleri kolaylaştırdığını kavramak için Preference Library'e yakından bakalım. Başlamadan önce Preference Library'nin güncel sürümünü projeye dahil etmelisiniz.

Şu an ki en güncel versiyon: implementation 'androidx.preference:preference:1.1.0'

Preferences Library ile Ayarlar Ekranı


Preferences Library’e dahil bir ayarlar ekranı oluşturmak istediğinizde bunun iki yolu karşınıza çıkıyor: Programlamatik olarak ya da XML üzerinden. Ayarlar ekranını bir XML aracılığıyla oluşturacaksak uygulamanın res/xml dizinine yeni bir PreferenceScreen kaynağı oluşturarak başlamalıyız. Bu sayede ekranda göstermek i