Kotlin @JvmOverloads Kotlin ile uygulama geliştirmeyi teşvik eden en büyük etkenlerden biri şüphesiz Java dili uyumlu yapısıdır. Her iki tarafdan da birbirlerine referanslar verilebilir. Kotlin dilinin Java’dan ayıran özelliklerinden biri Java compiler ından daha zeki olmasıdır. Nitekim java dili yaşlanıyor :). Kotlin ile oluşturulan bazı yapıların Java tarafına uyumlu hale getirilmesi için bazen ufak düzenlemelere gerek duyulabiliyor. Bu düzenlemelerden bir tanesi de @JvmOverloads annotation kullanımı. fun ViewGroup.inflate(resId: Int, attachToRoot: Boolean = false): View { return LayoutInflater.
Okumaya Devam Et

Kotlin Sealed Class Enum yapısına benzer bir yapıya sahiptir. Ve benzer görevler için kullanılır. Aradaki fark enum lar sabit değer ifade etmek için kullanılırken sealed yapısı normal sınıf gibi fakat enum mantığıyla kullanılır. Yani belli bir duruma ait fonksiyonları bir arada tutmak ve when() gibi fonksiyonlar ile birlikte kullanımını sağlamak için kullanılır. // Sealed class enum yapısına benzer // Bir durum için belli başlı akışları bir arada tutmamızı sağlar ve bu akışların yönetimini kolaylaştırır.
Okumaya Devam Et

Kotlin’de when operatörü oldukça işimizi kolaylaştıran operatörlerden biridir. if- else if yapısı yerine kullanılabileceği gibi bazı yardımcı operatörler ile birçok marifet kazanabilir. val i = 10 when { i < 7 -> println("first block") fooString.startsWith("hello") -> println("second block") else -> println("else block") } Yukarıda ki örnek if-else if-else yapısının aynısıdır. when (i) { 0, 21 -> println("0 or 21") in 1..20 -> println("in the range 1 to 20") else -> println("none of the above") } Yukarıda ki gibi aralıklar tanımlanabilir ve bu aralıklara uyum kontrolü yapılarak ilgili işlemlerin yapılması sağlanılabilir.
Okumaya Devam Et

Kotlin fun <T, R> T.let(f: (T) -> R): R = f(this) let() temel olarak, belirli bir kapsam için bir değişken/kod bloğu oluşturmamızı sağlayan bir kapsamlayıcı işlevdir. Yani let() bir sarmalıyıcı fonksiyondur. Örneğin: private var mPhotoUrl: String? = null fun uploadClicked() { if (mPhotoUrl != null) { uploadPhoto(mPhotoUrl!!) } } Yukarıda ki if (mPhotoUrl != null) satırı ile null kontrolü yapılır ve eğer null değilse uploadPhoto(mPhotoUrl!!) kod bloğu çalıştırılır.
Okumaya Devam Et

Kısa Hikaye : Üstünde çalışmakta olduğum bir projede kredi kartı ile ödeme yapısı kurmam gerekti. Kısaca projenin yapısından bahsedecek olursak Backend : .Net Client : Android (Java) Ödeme altyapısı : İyzico Client tarafında rest isteğiyle tüm işlemlerimizi backend tarafında yapıyoruz. Ödeme yapımızı da bu doğrultuda geliştirdik. Problem : 3DS ile ödeme almaya çalıştığımızda malumunuz işin içerisine bankanın bize telefonumuza gelen şifreyi girmemiz için göndermiş olduğu web sayfası vs.
Okumaya Devam Et

RxJava range() Kullanımı **Örnek kod:– private void range() { Observable.range(3, 5).subscribeOn(Schedulers.io()) .subscribe(success -> { Log.i(TAG, "val: " + success.toString()); }); } Açıklama: İlk değer 3 kabul edilerek sonraki 5 sayı için teker teker onNext() çağırılır. Yani 3 , 4, 5, 6, 7 Yukarıda ki kodun çıktısı aşağıdaki gibidir. I/MainActivity: val: 3 I/MainActivity: val: 4 I/MainActivity: val: 5 I/MainActivity: val: 6 I/MainActivity: val: 7 RxJava candır 😉
Okumaya Devam Et

RxJava scan() Kullanımı RxJava da scan() kullanımı iki şekilde olur. 1. İlk değer ataması yapılarak private void scan() { Observable.just(3, 5, 7, 9) .scan(10,(val1, val2) -> { // Log.i(TAG, "val1: " + val1.toString()); Log.i(TAG, "val2: " + val2.toString()); return val1 + val2; }).subscribeOn(Schedulers.io()) .subscribe(success -> { Log.i(TAG, "Sonuc:" + success.toString()); }); } 2. İlk değer ataması yapılmadan private void scan() { Observable.just(3, 5, 7, 9) .
Okumaya Devam Et

RxJava reduce() Kullanımı reduce() fonskyionu iki şekilde çalışır; 1 .reduce(new BiFunction<Integer, Integer, Integer>() { @Override public Integer apply(Integer val1, Integer val2) throws Exception { return null; } }) 2 .reduce(10,new BiFunction<Integer, Integer, Integer>() { @Override public Integer apply(Integer val1, Integer val2) throws Exception { return null; } }) 1 ile 2 nin farkı, 2 de görüldüğü üzere fonksiyona başlangıç değeri atanabilmesidir. Aşağıdaki örneklerde daha net görebilirsiniz.
Okumaya Devam Et

Android uygulaması yazarken bazı oluşturmuş olduğunuz yapıları tekrar tekrar yazmak durumunda kalıyorsanız, sizin de artık kendi kütüphanenizi yazmanızın zamanı gelmiş geçiyor demektir. Böyle bir durum söz konusu olmak zorunda değil tabi library oluşturmak için 🙂 Bu yazının konusu Android Library oluşturmak, oluşturmuş olduğumuz bu kütüphaneyi maven ve jcenter repository e deploy etmek olucak. Ve başlayabiliriz. İlk olarak Android Studio yu açarak File > New > New Project e tıklayıp yeni bir proje oluşturalım.
Okumaya Devam Et

Yavaş yavaş mevcut android cihazlarının API level düzeyi doğal olarak yükselmekte ve bizlerinde tabi ki buna ayak uydurması gerekmekte. Bunlardan biri de Android M – Marshmallow (23) ile gelen Runtime Permissions olayı. Kullanıcı açısından bakıldığında oldukça yararlı birşey gibi duruyor ama tabi ki biz kullanıcılar runtime sırasında çıkan permission dialog daki yazıyı ne kadar okuruz ve buna göre onay veririz meçhul. Aslına bakarsanız çok da okunacağını düşünmüyorum ama olsun yine de güzel.
Okumaya Devam Et

Aykut Asil

Continious Innovation

Software Developer

Turkey