Kotlin language constains a container type which is called sequences. Sequences are very similar to lists. The difference between a list and sequence is that the sequences are lazily evaluated.

We can create sequences with different ways:

1 — From elements — By calling sequenceOf()

val numbersSequence = sequenceOf("four", "three", "two", "one")

We give elements as parameter to sequenceOf() function.

2- From iterable objects — By calling asSequence() function of an iterable object such as a List or Set.

val numbers = listOf("one", "two", "three", "four")
val numbersSequence = numbers.asSequence()

We can create a sequence by calling asSequence() function of…


Merhaba değerli Android geliştiriciler ,

bu yazımda ktlint’den bahsedeceğim. KtLint kullanarak kotlin projenizde kotlin style guide’larına uyup uymadığını kontrol edebilirsiniz. Style guideline’a uygun şekilde projenizin tamamının otomatik olarak formatlanmasını sağlayabilirsiniz. Ayrıca Command Shift L kısa yolu ile yaptığınız auto indentation’ı ktlint format’lamaya bağlayabilirsiniz.

Hızlıca başlayalım.

Projenize KtLint’i entegre etmenin farklı yolları var. Temel olarak ise plugin’li ve pluginsiz entegre etmek olarak 2 farklı yolu var diyebiliriz. Bu yazımda

https://github.com/jlleitschuh/ktlint-gradle adresindeki plugin’i entegre edeceğim, ancak diğer yollardan da bahsedeceğim.

1- ktlint plugin eklenmesi

root level build.gradle’ınıza aşağıda plugin’i eklemelisiniz.

// root-level build.gradle
plugins {
id "org.jlleitschuh.gradle.ktlint" version "10.0.0"
}

2- ktlint…


At the end this article, you will understand the use of the following in scene file :

  • <ConstraintSet> and <Constaint>
  • <OnClick> inside <Transition>.
  • clickAction attribute of <OnClick>

Example 3 :

When textView is clicked, position of textView changes from top,left to bottom right and vice versa gradually.

Below is the codes of our 3rd example.


androidId — Kullanıcılarınız için unique bir string

Aşağıdaki kodu kullanarak androidId bulunabilir. Uygulamalarınızda, kullanıcılara özel bir unique bir string’e ihtiyacınız varsa androidId’yi kullanabilirsiniz. androidId, 64-bit bir sayıdır ve hexadecimal string ile gösterilir. Örnek : 44ecc5b239c308ba

val androidId = "" + Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID)

Aynı device’da aynı kullanıcı ile 2 farklı uygulamada çalıştırsanız aynı string’i elde edersiniz.(api26 üzeri ve altı için bu durum aynı keystore ile imzalanmış mı durumuna göre farklılık gösterir. )

  • Factory reset atılınca androidId değişir.
  • Uygulama silip tekrar yükleyince androidId değişmez.
  • Telefonda 2 farklı user varsa, her iki user’ın da androidId’si farklıdır.
  • Root’lanmış cihazlarda androidId değiştirilebilir.
  • androidId’nin arasıra null…


Why does using LiveData is buggy in some cases and how to solve the problem using SingleLiveEvent ? Try with examples.

In this article, i got help from Jose Alcerreca’s great article, and implemented the cases he mentioned.

Example 1 :

In the first example we used MutableLiveData. When we clicked the textView, clickedLiveData.postValue(true) is called. Thus, the observer is invoked and 2nd activity is launched. Then if you press back button, 1st activity is opened. Then if you rotate the device, 2nd activity is opened. Why ? Because activity is recreated and observer is invoked again. This is a…


Google’ın github’ında paylaştığı app-bundle-samples içerisinde birbirinden farklı dynamic-feature ve instant app örnekleri var.

En basit bir instant yapabilmek için aşağıdaki linkte verdiğim aab-simple isimli projeyi derleyip google play’e instant app kısmından upload edebilirsiniz:

Bu projenin kodlarını incelerseniz, basit bir hello world uygulama olduğunu tek farkının manifest’deki şu kod olduğunu görebilirsiniz:

<dist:module
dist:instant="true">
</dist:module>

Kodların tamamını aşağıda görebilirsiniz :

Normal uygulamamızı ve instant app’ımızı bu şekilde iki farklı application module kullanarak sürdüreceksek, instant app ve installable app(normal uygulamamız)’’ımızın build.gradle’ında tanımladığımız applicationId’leri aynı olmalıdır.

Ayrıca instant app’iniz için kullandığınız versionCode ve versionName, installable app için uygulamanızda kullandığınız versionCode ve versionName’den mutlaka düşük…


Bu yazımda dynamic feature module’lerden bahsedip, google code lab’da verilen örneği inceleyeceğim.

Google codelab’da geliştirilen Dynamic feature module örneğinin github link’i üzerinden kodları incelemiştim. Ancak daha sonra bu repo’nun daha güncel halini buldum. Her iki link’i de inceleyebilirsiniz, iki proje de düzgün çalışıyor :

https://developer.android.com/guide/app-bundle/play-feature-delivery

App bundle

Dynamic feature module kullanabilmek için app bundle kullanmak zorundayız.

Dynamic feature’lar API level 21+ için kullanılabilir

Dynamic feature module’lerin runtime’da indirilip yüklenmesi işlemini sadece API level 21 ve üzeri cihazlar destekler. API level 20 ve altındaki cihazlarda feature module’lerin kullanılabilir olması için fusing enable edilmelidir. …


This is an introductory article for MotionLayouts in Android development. We will explore the MotionLayout with code samples step by step.

At the end of this article, you will learn the usage of keywords i mentioned in the title :

  • layoutDescription,
  • KeyFrameSet and KeyAttribute,
  • framePosition,
  • motionTarget

Dependency

MotionLayout is a subclass of ConstraintLayout. The below dependency works for both ConstraintLayout and MotionLayout:

implementation 'androidx.constraintlayout:constraintlayout:2.0.4'

Backwards compatible to API level 14

MotionLayout is available as a part of the ConstraintLayout library, MotionLayout is available as a support library and is backwards-compatible to API level 14.

MotionLayouts are really simple. Lets write…


Hi all ! This is my first medium post but not the last !

I will talk about the specific topic as stated in the title of this post.

The below is the components which can be used in Dagger Hilt ( https://dagger.dev/hilt/components.html ).

https://dagger.dev/hilt/components.html
https://dagger.dev/hilt/components.html
https://dagger.dev/hilt/components

Below is a sample module we used for retrieving OkHttpClient instance.

ömer iyiöz

Android Developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store