Eğitim Videosu :
https://www.youtube.com/watch?v=yxdd3EuxnQA&ab_channel=GoogleDSC%26WTMKarab%C3%BCk
Android Study Jam - Kotlin ile Temel Android Eğitimi
Google DSC Karabük olarak düzenleyecek olduğumuz Android Study Jam etkinliğimizde Muhammet Çağatay Bey eğitmenimiz olacak!
Etkinlikte gerçek zamanlı uygulama yapmak isteyenlerin, etkinlik saatinden önce Android Studio’yu kurması gerekmektedir.
Android Studio ve Emülatör kurulumu için buraya tıklayabilirsiniz.
Program Akışı:
Hoş geldiniz
Muhammet Çağatay Kimdir?
Kotlin Nedir?
Agile ve Scrum Metotları
Temiz Kod (Clean Code)
Uygulama
Etkinlik Tarihi: 20 Aralık 2020 Pazar 17.00
4. Android Nedir?
● Google ve Open Handset Alliance tarafından geliştirilen,
● Linux tabanlı, özgür ve ücretsiz bir mobil işletim sistemidir.
● Sistem açık kaynak kodlu olsa da, kodlarının ufak ama çok önemli bir
kısmı Google tarafından kapalı tutulmaktadır.
9. Android Native Geliştirme Dili
Kotlin’in ilk stabil sürümü 5 Şubat 2016'da yayınlanmıştır. Google I/O
2017'de resmi bir Android geliştirme dili olarak duyurulmuştur.
10. Kotlin Nedir?
● Java sanal makinesi (JVM) üzerinde çalışan ve ayrıca JavaScript
kaynak koduna derlenebilen, statik tipli bir programlama dilidir.
● Java ile uyumlu sözdizimi olmasa da, Kotlin Java kodu ile birlikte
çalışmak üzere tasarlanmıştır.
● Kotlin, Apple'ın Swift diline de benzemektedir.
Statik Tipli Programlama Dili : her değişken tipinin önceden belirtiliyor olmasıdır.
11. Kotlin İle Gelen Yenilikler
● Data Class
● Top-level (package level) sınıflar ve
fonksiyonlar
● var ve val kullanımı
● .equals() yerine == kullanımı
● get/set ön eklerinin kullanılmaması
● Tip kontrolü ve dönüşümleri (is ve as)
● Smart casts (akıllı dönüşümler)
● Safe (nullable) casting
● When Yapısı
● Extensions
● Delegates
● Sealed Sınıflar
14. Android Klasör Yapısı
● src (kaynak kodlar)
● libs (android sdk'da bulunmayan kütüphanelerin jar dosyaları koyulur)
● res (uygulama ile ilgili tüm kaynak(resource)ların olduğu klasör)
○ drawable-* klasörleri (uygulamada kullanılan resim dosyaları bulunur)
● drawable-ldpi (low dpi yani düşük çözünürlüklü cihazlarda kullanılacak resimler)
● drawable-mdpi (mdpi dpi yani orta çözünürlüklü cihazlarda kullanılacak resimler)
● drawable-hdpi (high dpi yani yüksek çözünürlüklü cihazlarda kullanılacak resimler)
● drawable-xhpi (extra high dpi yani çok yüksek çözünürlüklü cihazlarda kullanılacak resimler)
■ layout (Ekranların (activity) tasarım yapısın olduğu xml dosyaları bulunur)
■ raw (mp3, video, pdf gibi dosyalar bulunur)
■ xml (anahtar-değer çiftleri şeklinde saklanan sabit değerler)
■ anim (animasyon xml dosyalarını barındırır)
■ menu (standart menü düğmesi ile açılan menüdeki maddeleri tanımlamak için kullanılır)
■ values ve values-* klasörleri (Uygulama içinden erişilen sabit değerleri tutan xml dosyaları. Örneğin
mesajlar, başlık metinleri, renkler, style değerleri vb..)
● strings.xml dosyası (anahtar-değer çiftleri şeklinde saklanan sabit bilgiler)
● colors.xml dosyası (layout dosyalarında kullanılan renk tanımlarını içerir)
● styles.xml dosyası (ekranlarda kullanılan biçim tanımlarını içerir)
● dimens.xml dosyası (farklı boyutlar için tasarımları saklamak içindir. farklı values-* klasörleri içinde farklı
özelliklerde tanımlanabilir)
● AndroidManifest.xml dosyası (uygulamanın ana activity'sin belirtildiği, uygulama izinlerin verildiği, genel ayarların
tanımlandığı ana ayar dosyası)
15. Intent, Context ve Activity
Intent :
● Uygulama bileşenleri arasında veri alışverişini ve bilgi aktarımını sağlayan bir
haberleşme nesnesidir.
Context :
● Android sistemi tarafından soyut bir şekilde bize sunulan, uygulamamız
hakkında global bilgiye sahip arayüzdür.
● Bir nevi uygulamamızın komponentlerinin kimliğidir diyebiliriz.
Activity :
● Bir kullanıcı arayüzüne (UI) sahip bir ekranı temsil eder
21. Kotlin’de Veri Tipleri
var sayi1=53
val sayi2 =34.0
var sayi1:Int= 53
val sayi2:Float =34.0f
var isim ="Muhammet ÇAĞATAY"
var isim:String ="Muhammet ÇAĞATAY"
22. Kotlin’de Arayüz Nesneleri Kullanma
var btnMesaj:Button=findViewById(R.id.btnMesaj)
var edtIsim:EditText=findViewById(R.id.edtIsim)
var btnMesaj:Button?=null
btnMesaj=findViewById(R.id.btnMesaj)
var edtIsim:EditText?=null
edtIsim=findViewById(R.id.edtIsim)
23. Kotlin Nulable ve Non-Null
● Kotlin’de nullable için soru işareti (?)
Kesinlikle Null gelmeyeceğini biliyoruz.
● non-null tanımlar için iki ünlem işareti (!!) kullanılır.
Bekediğimiz değerin ne zaman dolu ne zaman boş geleceğini
bilmiyoruz.
24. Nesnelere Click Özelliği Ekleme
var btnMesaj:Button?=null
btnMesaj=findViewById(R.id.btnMesaj)
btnMesaj?.setOnClickListener{
}
25. Log Kullanımı
Log.i("LOG_TAG","Bu bir bilgi (info) logu")
Log.d("LOG_TAG","Bu bir debug logu")
Log.e("LOG_TAG","Bu bir hata (error) logu")
Log.w("LOG_TAG","Bu bir uyarı (warn) logu")
Log.v("LOG_TAG","Bu bir ayrıntı (verbose) logu")
27. Multi Click
class MainActivity : AppCompatActivity() , View.OnClickListener
var btn1:Button?=null
var btn2:Button?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn1=findViewById(R.id.btn1)
btn1?.setOnClickListener(this)
btn2=findViewById(R.id.btn2)
btn2?.setOnClickListener(this)
}
override fun onClick(view: View) {
}
28. if Koşul Yapısı
override fun onClick(view: View) {
if(view.id==R.id.btn1)
{
Toast.makeText(applicationContext,"Btn1 tıklandı",Toast.LENGTH_SHORT).show()
}
else if(view.id==R.id.btn2)
{
Toast.makeText(applicationContext,"Btn2 tıklandı",Toast.LENGTH_SHORT).show()
}
}
29. When Koşul Yapısı
override fun onClick(view: View) {
when(view.id){
R.id.btn1 -> {
Toast.makeText(applicationContext,"Btn1 tıklandı",Toast.LENGTH_SHORT).show()
}
R.id.btn2 -> {
Toast.makeText(applicationContext,"Btn2 tıklandı",Toast.LENGTH_SHORT).show()
}
}
}
30. Activiyler Arası Geçiş
var ikinciEkran:Intent?=null
btn1?.setOnClickListener{
ikinciEkran=Intent(this@MainActivity,SecondActivity::class.java)
startActivity(ikinciEkran)
}
31. Metin Kutusundan Değer Alma
var edtSayi:EditText?=null
edtSayi=findViewById(R.id.edtSayi)
var sayi = edtSayi?.text.toString().toInt()
33. CleanCode ( Temiz Kod ) Nedir?
● Kod yazarken takip edilen bir felsefedir.
● Kodunuzun tam ve mümkün olduğunca kusursuz olması gerektiği fikridir.
● İhtiyaç olandan daha fazla kodunuz olmamasıdır.
● Gereksiz hiçbir satır olmamalı.
● Kodlama yaparken yalnızca sorunu çözmek yerine, mümkün olduğunca
verimli, okunabilir ve bakımı yapılabilir kodlama tarzıdır.
35. Bir Yazılımın Oluşum Süreci
● Gereksinim Analizi
● Mimari Tasarımı
● UI Tasarımı
● Kodlama ve Birim Testi
● Entegrasyon Testleri
● Kabul Testleri
● Kabul ( Entegrasyon )
Şelale (Waterfall) Modeli :