Android
Her Android Geliştiricisinin Kullanması Gereken 5 Kütüphane
İyi bir geliştirici asla Amerika'yı yeniden keşfetme işine girmez. Var olanı geliştirmeyi amaçlar. Bu bağlamda Android geliştiricileri, kendi uygulamalarında özgürce kullanabileceği canlı ve güçlü bir özgür yazılım kütüphane ekosistemine sahiptir. Geliştiriciler bu ...
İyi bir geliştirici asla Amerika'yı yeniden keşfetme işine girmez. Var olanı geliştirmeyi amaçlar. Bu bağlamda Android geliştiricileri, kendi uygulamalarında özgürce kullanabileceği canlı ve güçlü bir özgür yazılım kütüphane ekosistemine sahiptir. Geliştiriciler bu kütüphaneleri diledikleri gibi kullanabilir. Bunun yanında gelişimlerine destek olabilir.
Eskiden bir projeye açık kaynak bir kütüphaneyi dâhil etmek işkence gibiydi ancak Android Studio ile birçok şeyde olduğu gibi bu daha kolay. Daha önceki yazımda da bahsettiğim gibi Android Studio dependency – library ekleme kısmıyla ilgili bizi müthiş kolaylıklar sunuyor (Bkz: Android Studio'yu Tanıyalım). Android Studio'da kütüphaneyi dâhil etmeniz için yapmanız gereken tek şey, ilgili kütüphanenin genelde tek satırlık olan gradle kodunu build.gradle dosyasına dâhil etmek. Android Studio sizin için geri kalan işleri halledecektir.
İşte birçok Android geliştiricisinin kullandığı 5 özgür yazılım ürünü kütüphane:
Picasso
Her uygulamada ihtiyaç duyulmamakla birlikte birçok uygulama içerisinde İnternet üzerinden resim indirmek istenilebilir. Bunun için kesinlikle en iyi çözüm Picasso. Bunu size şöyle anlatayım: Standart Android API'leri ile bir görüntüyü indirmek için yapılması gereken adımlar en azından şunlardır:
- Görüntü URL'i alınır.
- Görüntüyü indirmek için AsyncTask oluşturulur.
- AsyncTask çalıştırılır.
- Sonucu bitmap olarak saklanır.
- Bu bitmap kaynak olarak ayarlanır.
- Cache (Önbellek) görüntü saklanır.
Gördüğünüz gibi burada bir sürü iş var ama bu kütüphane sayesinde sadece ImageView için bir URL sağlamanız yeterli olacaktır. Picasso kullanıyorsanız yukarıdaki adımları unutun. Yapmanız gerekenler sadece:
- Görüntü URL'i alınır.
- Tek bir satır kod ile ImageView içerisine yüklenir.
[code]Picasso.with(this).load(imageUrl).into(mImageView);[/code]
Bu kolaylıklar için Android Studio'da uygulamada bulunan build.gradle dosyası içerisinde dependencies kısmına aşağıdaki satırları eklemeniz yeterli olacaktır
[code]compile 'com.squareup.picasso:picasso:2.4.0'[/code]
ActiveAndroid
ActiveAndroid, Android için kullanılan bir ORM(Object-Realition Mapping) işlemlerini kolaylaştıran bir kütüphanedir. "ORM nedir?" diye bir soru soracak olursak şöyle bir cevap verebiliriz: "İlişkisel veritabanı ile nesneye yönelik programlanın arasında bir tür köprü özelliği gören ve ilişkisel veritabanındaki bilgilerimizi yönetmek için, nesne modellerimizi kullandığımız bir tekniktir/metoddur". Basite indirgemek istersek, "Nesnelerimizi ilişkisel veritabanındaki tablomuza bağlayan ve veri alışverişini bizim için yapan bir tekniktir/metoddur".
ActiveAndroid, veritabanı ile çalışmak için kullanılan birçok fazlalık kodu ortadan kaldırmanın, SQL ifadelerini basite indirgemenin ve birkaç satır kod ile CRUD işlemler yapmanın güzel bir yoludur. Dilerseniz, GreenDAO ve ORMLite gibi diğer özgür yazılım ürünü kütüphaneleri de kullanabilirsiniz.
Gelin, birkaç örnek kod ile kütüphanemizi inceleyelim.
ActiveAndroid Model ile veritabanına obje kaydetme;
[code]user.save();[/code]
Tüm kullanıcı bilgilerini alma örneği;
[code]List<User> users = new Select().from(User.class).execute();[/code]
Bunları ve daha birçok kolaylığı kullanabilmek için yapmanız gereken tek şey, sadece build.gradle dosyası içerisine aşağıdaki kodları eklemeniz olacaktır.
[code]repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'[/code]
GSON
Uygulama geliştirirken sıklıkla bir Web API kullanmak zorunda kalabiliriz. Bugün JSON, basitliği ve veri odaklı yapısı nedeniyle herhangi bir API servisinde neredeyse standart konumunda. GSON işte tam da burada bize çok fazla kolaylık sağlıyor. Google tarafından desteklenen bu özgür yazılım lisanslı kütüphanede serialize - deserialize (serialize işlemi bir nesnenin saklanacak ya da transfer edilecek hale dönüştürülmesidir. Deserialize ise serialize edilmiş objeyi kullanmak için tekrar objeye çevirme işlemidir) işlemleri çok basit şekilde gerçekleştiriliyor.
[code]// Serialize String userJSON = new Gson().toJson(user); // Deserialize User user = new Gson().fromJson(userJSON, User.class);[/code]
Bu kütüphaneyi projelerinizde kullanabilmeniz için yapmanız gereken şey her zamanki gibi build.gradle dosyası içerisine aşağıdaki kodları eklemek.
[code]compile 'com.google.code.gson:gson:2.2.+'[/code]
Universal Image Loader
Uygulama içerisinde birden fazla görüntü aynı anda farklı kaynaklardan çekilmek istenebilir. Bu hem bizim için hem de uygulamamız için biraz zahmetli olabilir. Picasso güzel bir kütüphane olmasına rağmen görüntüyü önbellekte saklama ve box loading denilen toplu yükleme işlemlerini gerçekleştirememektedir. Burada yine yardımımıza başka bir kütüphane yani UIL yetişmektedir. UIL sadece İnternet üzerinden değil, SD Card gibi farklı konumlardan da veri yükleyebilir.
Bu kütüphanenin kullanımı çok basittir. Örnek verecek olursak:
[code]imageLoader.displayImage(imageUri, imageView);[/code]
gibi tek satır kod ile yükleme işlemi yapabilirsiniz.
Burada kullanılan imageUri için daha önce de söylediğim gibi farklı seçenekler kullanabilirsiniz. Örnek verecek olursak;
[code]"http://site.com/image.png" // Web "file://mnt/sdcard/image.png" // SD card "assets://image.png" //assets "drawable://" + R.drawable.img //drawable[/code]
Kütüphaneyi kullanmak için build.gradle dosyasına aşağıdaki satırı eklemelisiniz.
[code]compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'[/code]
ButterKnife
Özellikle Android uygulama geliştirmeye yeni başlayan kişilerden gelen ortak tepkiler şöyle olur: "Çok fazla kod var. Kod yazarken zorlanıyor ve yoruluyoruz. Bunun daha kısa bir yolu yok mu?" İşte aradığınız çözüm ButterKnife! ButterKnife, bir "injection" kütüphanesi olarak tanımlanabilir. Yukarıda da bahsettiğim gibi özellikle kodların fazlalığından ve karmaşıklığından şikayet edenler için bence en güzel çözüm diyebilirim. Gelin, size bunları örneklerle göstereyim.
Öncelikle sık sık yapılan ve bazen yorucu olabilen, bir Activity layout dosyasının içerisinde bulunan elemanları uygulamaya id yolu ile tanıtma işlemini inceleyelim.
[code]mUserNameEditText = (EditText) view.findViewById(R.id.username);
mPasswordEditText = (EditText) view.findViewById(R.id.password);[/code]
Şimdi bunu bir de ButterKnife kullanarak yapalım:
[code]@InjectView(R.id.username)
EditText username;
@InjectView(R.id.password)
EditText password;[/code]
Aradaki fark gözle görünür bir şekilde fazla. Bir örnekle daha devam edelim. Şimdi de bir düğme için yapılan setOnClickListener işlemini kullanalım.
[code]view.findViewById(R.id.sign_in_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
attemptLogin();//Bu fonksiyonun alt tarafta yazıldığını göz önüne alalım
}
});[/code]
Ve işte ButterKnife güzelliği :)
[code]@OnClick(R.id.sign_in_button)
public void attemptLogin() {
// fonksiyonun içini burada doldurabiliriz.
}[/code]
Örnekler bize bu kütüphanenin nimetlerini daha net bir şekilde gösterdi. Bunlar sadece iki tanesi. Kütüphaneyi daha detaylı inceleyince güzelliklerini daha çok göreceksiniz.
Peki, o zaman şimdi de "Bu kadar kolaylıklar sunan kütüphaneyi projelerimize nasıl dâhil ederiz?" sorusunun cevabını da tek satırlık bir kod ile verelim.
[code]compile 'com.jakewharton:butterknife:6.0.0'[/code]
16.12.2014
Yorumlar
Teşekkürler güzel makale olmuş.
Acaba pie chart, bar chart yada line chart tarzında komponentleri barındıran android kütüphaneleri mevcut mu? Bu listeye dahil edilse güzel olmaz mı?
Teşekkürler
Faydalı bir yazı olmuş, teşekkürler.
Volley kütüphaneside kesinlikle eklenmeli bu listeye
Çoğu android kütüphanesini bünyesinde barındıran Libraries for Developer uygulamasını da kesinlikle indirip kurcalamalısınız. Her kütüphanenin demosuna, ayrıntılı bilgisine, github linkine kolayca ulaşabilirsiniz.
Ellerine sağlık. Bir çok kişide gördüğüm bir sorunla ilgili ipuçu vermek istiyorum .ButterKnife kullanmak isteyipte eclipse'de @kurtulusahmet'in de bahsettiği linkteki gerekli ayarları yapmakta, "Java Compiler -> Annotation Processing" menüsünü bulma sıkıntı çekenler varsa bilmeliler ADT paketinde bu iş için bir eclipse eklentisi eksik. Help -> Install New Software menüsünden eclipsi kullandığınız release için doğru repoyu seçip "Eclipse Java Development Tools" aratıp kurmaları halinde butterknife için gereken özelliklere sahip olacaklardır
Bu güzel faydalı makale için teşekkür ediyorum. Ancak eclipse kullanıcısıyım. Söz konusu kütüphaneler eclipse aracılığıyla android projelerimize nasıl dahil edebiliyoruz?
Genellikle kütüphanenin .jar uzantılı dosyası indirilip gerekli eclipse konfigürasyonu yapılarak projeye dahil edilebilir. Mesela ButterKnife için eclipse konfigürasyonu nasıl yapılır ilgili linkten bakabilirsin.
Kolay gelsin.