💻 Android Uygulama Geliştirmek | Dev Konu

Homax

Üye
9 Ocak 2023
57
15
Merhabalar dostlar, sizler ile yeni bir seriye başlıyoruz, Android Geliştirme serisi. Bu seride Android Geliştirme içinde ne varsa hepsinin detayına ineceğiz hepsine bakacağız. Şimdi lafı çok uzatmadan başlayalım.

Öncelikle Android geliştirebilmek için Kotlin ya da Java bilmemiz gerekiyor. Bu seriye başlamadan önce Kotlin'i detaylı bir şekilde anlattığım bir anlatım serisi vardı okumak isteyenler için buraya bırakıyorum

https://www.turkhackteam.org/java/1943792-kotlin-1-kotlin-temelleri.html
https://www.turkhackteam.org/java/1943937-kotlin-null-safety-non-null.html
https://www.turkhackteam.org/java/1944871-kotlin-3-obje-odakli-programlama.html
https://www.turkhackteam.org/java/1945640-kotlin-4-coroutineler.html

Bu eğitim'de Kotlin üzerinden ilerleyeceğiz eğer Kotlin bilmiyorsanız, benim bıraktığım linklerden veyahut kendiniz öğrenebilirsiniz. Şimdi geliştireceğimiz platform kurulumlarına geçelim.

JDK İndirmek


İlk olarak JDK (Java Development Kit) Java Geliştirici Kit'ini indirmemiz gerekiyor. JDK yazdığımız kodun derlenmesi için gerekiyor. Şimdi arama çubuğuna "jdk download" yazalım.



Gelen sayfadan sistemimize uygun olan sürümü seçiyoruz. Eğer sistemimiz 32 bit ise Java SE 8'i, 64 bit ise en son sürümü indirebiliriz, bende şu an Java SE 15 gözüküyor siz de en son sürüm neyse onu indirebilirsiniz, zaten ben çok büyük değişim olursa konuyu güncellerim. Neyse şimdi buradan Oracle JDK kısmından JDK Download seçeneğine tıklıyoruz



Tıkladıktan sonra gelen sayfadan sisteminize uygun olan indirme seçeneğini seçiyorsunuz.



Dosyamızı indirdikten sonra next -> next şeklinde kurabilirsiniz lakin burada dikkat etmeniz gereken bir husus var. İndirme dizinin C:\Program Files\Java\jdk-15 şeklinde olması lazım, bu standart olandır. Değilse de bu duruma getirebilirsiniz.

Kurulum işlemleri bittikten sonra java'yı sistemimize tanıtmamız lazım bunun için; Bu Bilgisayar -> Özellikler -> Gelişmiş Sistem Ayarları -> Ortam Değişkenleri. Daha sonra buradan Sistem Değişkenleri altından Path'e çift tıklıyoruz ve C:\Program Files\Java\jdk-15\bin yazıyoruz.



Bunu yaptıktan sonra tamam, tamam deyip çıkıyoruz. Şimdi Android Studio yani Android uygulamalar geliştireceğimiz ortamın kurulmasına geldik.

Android Studio İndirmek


Android Studio İndirmek İçin Download Android Studio & App Tools - Android Developers adresine gidiyoruz ve Download Android Studio diyoruz.



Şimdi kurulumu detaylandıralım;

İndirdiğimiz dosyayı açıyoruz

Bu adımları izleyelim.















Ardından gelen Select Default JDK ******** Android Dizininin altında olmalıdır.

Sonra Gelen UI Teme kısmından Darcula ya da Light seçebilirsiniz. Benim favorim Darcula :))



Bu eski bir ekran görüntüsü olduğu için API 30 değil de 29 gözüküyor zaten sizde en son sürüm gelecektir. Android Virtual Device'ı işaretlemeyi unutmayın. Bu uygulamaları deneyeceğimiz emülatör cihazıdır. Yani bu olmazsa olmaz.

Android SDK ******** da yine çok önemlidir. SSD'niz varsa oraya kaydetmeyi unutmayın. VE EN ÖNEMLİSİ BU LOKASYONDA TÜRKÇE KARAKTER NOKTA VS OLMAMALI YOKSA HATA VERİYOR.



Burada RAM'i kendi raminize göre ayarlamanız gerek benim 8 gb ramim var. 2gb'da sorun çıkmıyor, bu şekilde kullanabilirsiniz.



Finish deyip yüklenmesini bekliyoruz.

Yüklendikten ve bir hata ile karşılaşmadıktan sonra Finish deyip kapatabiliriz.

Kurulum işlemlerimiz burada sona eriyor şimdi ise kodlamaya & uygulamaya başlayalım.

Proje Oluşturmak


Gelen ekranımızdan yeni bir proje oluşturuyoruz



Empty Activity yani Boş Aktiviteyi seçelim.



Name'e MyFirstApp dedim siz istediğiniz diyebilirsiniz. Package name'in açılımı şu şekildedir com.<SİZİNADINIZ>.<UYGULAMAİSMİ> bu şekilde yaptıktan sonra Save ********'da Türkçe karakter olmamasına dikkat edin. Dil tabi ki Kotlin seçiyoruz. Minimum SDK ise, en düşük olarak hangi telefon'da çalışacağıdır. Android Studio standart olarak API 16 Android 4.1 seçmekte. Eğer burada karar vermekte zorlanırsanız, aşağısında kalın bir şekilde yazan dünyadaki bütün Android cihazlarının ortalama kaçında çalışacağını yazan sayıya bakabilirsiniz. Hala karar veremediyseniz Help Me To Choose yazan yere basıp grafiği inceleyebilirsiniz.



Daha sonra Finish deyip projeyi oluşturuyoruz.

İlk açıldığında hem Kotlin hem de bazı Gradle dosyalarını yüklediği için ilk açılışa mahsus biraz uzun sürebilir. Bu sürede dosyalarda değişiklik yapmayalım



Bittiğinde Build penceresi altından BUILD SUCCESSFUL yazısını görüyorsanız, hazırız demektir :))

İlk App'im Hello World


Evet dostlar bütün kurulum işlemlerimiz hallolduğuna göre artık başlayabiliriz.

activity_main.xml dosyamızı ilk açtığımızda bu şekil bir ekran geliyor.



Ekranın tam ortasında bir TextView var ve içinde Hello World! yazıyor. İsterseniz yazıyı değiştirip Selam THT Ailesi yapalım.

Yaptıktan sonra uygulamayı bir çalıştıralım bakalım gerçekten çalışıyor mu?



Burada normalde yükleme ekranında seçtiğimiz gibi hazır olarak bir telefon gelmesi gerekiyor eğer gelmediyse, sağdan 4. bir telefonun önündeki Android logosu olan butona tıklayalım. Bu AVD (Android Virtual Device) Manager yani Android Sanal Cihaz Yöneticisi'dir, buradan sanal telefonlarımızı kontrol edebiliriz.



Buradan Create Virtual Device diyoruz.



İstediğimiz telefonu seçip Next diyoruz.

Burada sürümü soruyor. Güncel olarak R gelmesi lazım seçip Next diyoruz.

Cihaza isim veriyoruz ve daha sonra hiç bir şeyi ellemeden finish diyoruz.

Ve cihaz geliyor. Şimdi AVD'yi kapatıp sağ üstteki menüden yeşil çalıştır tuşuna basalım.

Eğer hata çıkmazsa cihaz açılacak ve uygulama çalışacaktır

Hata çıkarsa sormayı unutmayın dostlar :))




Gördüğünüz gibi uygulama başarılı bir şekilde çalıştı. Bunlar arkada dursun şimdilik.

Şimdi kısa bir uygulama yapalım. Bu uygulama şöyle olsun. Bir kişi adını soyadını ve yaşını girsin daha sonra onu başka bir sayfada gösterelim. Biliyorum çok basit gibi geliyor ama bir sürü şey öğreneceğiz, başlayalım.

Öncelikle 2 tane EditText ve 1 tane Button koymamız gerek, bunlar sol kısımdaki palette kısmından bulabilirsiniz.



Sağ taraftaki attributes kısmından istediğiniz özellikleri değiştirebilirsiniz.

Ben açık olması için PlainText'lerimizin en üst tarafta bulunan id'lerin adsoyadtext ve yastext olarak değiştiriyorum.

Button'da ise yine özellikler kısmından onClick kısmına tiklandi yazıyorum. Tasarım tarafındaki işlemlerimiz bu kadar şimdi kodlara gelelim. Öncekikle onClick yani tıklandığında ne olacağını belirten metodumuzu bir yazmamız gerekiyor.

onClick nedir?


onClick bir görünümün (buton, yazı, resim) üstüne kullanıcı tarafından basıldığında ne olacağını belirten fonksiyondur.

Şimdi "tiklandi" olarak belirttiğimiz onClick fonksiyonumuzu onCreate()'nin dışında ama MainActivity'nin içine yazmamız gerekiyor.

Kod:
class MainActivity : AppCompatActivity() {[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun tiklandi(view: View){
        
    }
}


NOT: fun tiklandi() yapıp parantezin içini boş bırakırsanız hata verir çalışmaz, burada view yazmamızın sebebi bu fonksiyonun bir görünüm (bizim örneğimizde buton) tarafından çağrıldığını & kullanıldığını belirtmek.

Bu yazdığımız kod sayesinde butona tıklandığında olacak bütün işlemleri buradan belirtebiliyoruz.

Aşağıdaki kodları tiklandi'nın içine yazalım:

Kod:
var adsoyad = String()[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]var yas = String()
        
adsoyad = adsoyadtext.text.toString()
yas = yastext.text.toString()


adsoyad.text = Buradaki text'in kendisine erişir, adsoyad.text.toString() ise o Text'i String' çevirir, bu yüzden böyle bir tanımlama yaptık
Burada adsoyad ve yas isimli iki değişken oluşturduk ve daha sonra kullanıcı tarafından girilen değerleri eşitledik.

adsoyad ve yas değelerini kolaylık olması açısından String olarak aldım.

Değerlerimizi aldık şimdi sıra diğer aktiviteyi oluşturmakta.



Bu şekilde yeni bir aktivite oluşturuyoruz. Açılan ekranda direkt olarak finish diyebiliriz. Böylece MainActivity2 isimli bir aktivitemiz ve onun tasarım dosyası oluştu onun içine de iki tane textview koydum ve id'lerini adsoyadgoster ve yasgoster yaptım.

Şimdi diğer aktiviteye geçelim bunun için bir Intent oluşturmamız gerekiyor ve daha sonra bu Intent'i başlatarak 2. aktiviteye geçeceğiz.

Intent Nedir?


Intent, Android'de bir Activity'den diğerine geçmek için kullanılan yapıdır. Sırasıyla önceki aktiviteyi kapatır ve diğerini başlatır. Intent ile verileri de aktarabiliriz. Şimdi MainActivity içinde bir Intent oluşturalım ve içine bazı değişkenler koyalım.

Kod:
val intent = Intent(this, MainActivity2::class.java)[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]intent.putExtra("adsoyad", adsoyad)
intent.putExtra("yas", yas)
startActivity(intent)


Bir Intent oluşturduk ve this'ten yani MainActivity'den (this MainActivity'e işaret ediyor) MainActivity2'ye geçeceğimiz söyledik
İki tane değişken koyduk adsoyad ve yas isimli bunlar Intent'le beraber gidiyorlar.
ve Intent'i başlattık. Bundan sonra ise MainActiviy2'deki kodlar çalışacak.

Peki yapmak istediğimiz ne? Değişkenleri alıp textview'larımızda göstermek.

MainActivity2 içinde değişkenlerimizi alalım:

Kod:
val adsoyad = intent.getStringExtra("adsoyad")[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]val yas = intent.getStringExtra("yas")


Bu kodlar ile değişkenlerimizi almayı başardık. Burada belki bir gariplik fark etmişsinizdir. bir intent oluşturmadan direkt olarak intent.getStringExtra diyebildik, bunun sebebi aktivitelere intent ile gelmemiz ve her aktivite oluşturulduğunda otomatik olarak bir Intent oluşması.
Burada intent.getStringExtra ile aktardığımız String'leri aldık başka bir değer atsaydık atıyorum boolean. O zaman getBoolExtra dememiz gerekecekti. getDegiskenAdiExtra bu işleme yarıyor.

Kod:
adsoyadgoster.text = adsoyad[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]yasgoster.text = yas


Bu kodlar ile de değişkenlerimizi aktivitemizde daha önceden oluşturduğumuz textview'larda gösterdik. Yani textview'daki textlerle bu değerlerimizi eşitledik. İşlemlerimiz bu kadar, çalıştırmadan önce yapmamız gereken son bir şey daha var. İki Aktivite de



Bu kısımdan ucunda mavi şeyler parıldayan çubuğa yani Infer Constraints'e dokunmamız gerek. Bu görüntümüzün kaymamasını sağlıyor.

Şimdi çalıştıralım ve deneyelim.



Değerlerimizi girelim ve butona basalım.



Gördüğünüz gibi değerlerimizi başarılı bir şekilde göstermeyi başardık.

Peki şimdi ne öğrendik?

- EditText'deki değerleri kullanıcıdan almayı
- Buton'a tıklayınca işlem yaptırmayı
- Başka Sayfalara Geçmeyi
- Geçiş Yaparken Veri Aktarmayı
- Aldığımız Verileri Kullanıcılara Göstermeyi

öğrendik.

Şuan sadece bu öğrendiklerimizle bile güzel uygulamalar çıkartabiliriz :)

Bilmemiz Gereken Bazı Şeyler


Android App Components yani Uygulama Bileşenleri

Uygulama Bileşenleri, uygulamanın yapı taşlarıdır. Her bir bileşen kullanıcıların uygulamayı kullanmasında kullanılır, her uygulamada temel 4 tür bileşen vardır. Bunlar;

Aktiviteler

Servisler
Broadcast Alıcıları
İçerik Sağlayıcıları

Aktiviteler;

Aktiviteler kullanıcıyla uygulamanın buluştuğu yerdir. Aktivite ekranda kullanıcı arayüzü gösterir. Örneğin, bir e-posta uygulaması, yeni e-postaların listesinin gösterildiği bir aktiviteye sahip olabilir, başka bir aktivite ise e-posta yazmak için, başka bir tanesi okumak için vesaire vesaire. Buna ayrılığa karşın aktiviteler, birbirleriyle iyi bir kullanıcı deneyimi oluşturmak için bağlıdırlar. Örneğin, bir kamera uygulaması, kullanıcının bir resmi paylaşmasına izin vermek için yeni posta oluşturan e-posta uygulamasında aktivite başlatabilir.
Aktivitelerin kendilerine ait yaşam döngüleri vardır.

activity_lifecycle.png


Gördüğünüz resim Android'in kendi sayfasından alınmıştır. Yaşam döngüsünü açıklayacak olursak

onCreate() = Aktivite ilk oluşturulduğunda çağrılır.

onStart() = Aktivite oluşturulduktan sonra başladığında çağrılır.
onResume() = Devam ettirildiğinde çağrılır, ilk açıldığında da çağrılır.

Bunlar olduktan sonra aktivite çalışıyor demektir.

onPause() = Başka bir uygulama ekrana geldiğinde veya uygulama aşağı alındığında çağrılır. Daha yüksek öncelikli uygulamalar belleğe ihtiyaç duyduğu zaman ve başka bir aktiviteye geri tuşuyla gidildiğinde eski aktivitede çağrılır

onStop() = Aktivite artık görünür değildir. Kullanıcı uygulamayı yan veya düz çevirdiğinde de çağrılır.
onDestroy() = Aktivite tamamen biter ve sistem tarafından yok edilir.

Destroy çağrıldıktan sonra aktivite tamamen kapanır.

Bunların hepsini uygulamamızda çağırabiliriz.

Kod:
override fun onCreate(savedInstanceState: Bundle?) {[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onStart() {
        super.onStart()
    }

    override fun onResume() {
        super.onResume()
    }

    override fun onPause() {
        super.onPause()
    }

    override fun onStop() {
        super.onStop()
    }

    override fun onDestroy() {
        super.onDestroy()
    }


Bu şekilde her bir işlemde ne olacağını belirtebiliriz.

Servisler;


Servis uygulamanın arka planında herhangi bir sebepten ötürü çalışan genel amaçlı bileşene denir. Servisler, uzun süreli işlemler için arka planda çalışan bileşendir. Bir serviste kullanıcı arayüzü olmaz. Örnek verecek olursak; bir servis, kullanıcı başka bir uygulamadayken arkaplanda bir müzik çalıyor olabilir ya da kullanıcının telefonla etkileşimini bloklamadan internetten veri indiriyor olabilir.

Broadcast alıcıları;


Broadcast alıcıları, sistemin cihazda olan biteni kullanıcı akışını bloklamadan göndermesini sağlayan ve uygulamanın bu sistem duyurularına yanıt vermesini sağlayan bileşendir. Broadcast alıcıları, uygulamaya yönelik tanımlanmış olduğundan sistem, anlık olarak çalışmayan uygulamalara bile broadcast gönderebilir. Dolayısıyla, bir uygulama kullanıcıya yaklaşan bir olay hakkında bilgi vermek için bildirim göndermek üzere broadcast sağlayabilir.

İçerik Sağlayıcıları;


Bir içerik sağlayıcısı, dahili hafızada, bir veritabanında, web'de veya uygulamanın erişebileceği herhangi bir kalıcı hafızada depolayabileceğiniz her türlü veriyi bütün cihazla paylaşan bir uygulama verileri kümesini yönetir. İçerik sağlayıcısı aracılığıyla, diğer uygulamalar, içerik sağlayıcı izin verirse verileri alabilir veya değiştirebilirsiniz. Örneğin, Android sistemi, kullanıcının iletişim bilgilerini yöneten bir içerik sağlayıcısı sağlar. Böylece, uygun izinlere sahip herhangi bir uygulama, belirli bir kişi hakkında bilgi okumak ve yazmak için ContactsContract.Data gibi içerik sağlayıcısını kullanabilir.

AndroidManifest.xml Nedir?


AndroidManifest, Android derleme araçları, Android işletim sistemi ve Google Play için uygulamanızla ilgili temel bilgileri tanımlar. Her uygulama projesinin root dizininde bir AndroidManifest.xml(tam olarak bu isim) olmalıdır.

Her Android Manifest dosyasının sahip olması gerekenler;

Tüm aktiviteler, hizmetleri, broadcast alıcılarını ve içerik sağlayıcıları içeren uygulamanın bileşenleri. Her bileşen, Kotlin veya Java sınıfının adı gibi temel özellikleri ile tanımlanmalıdır. Ayrıca, hangi cihaz ayarlarını kullanabileceği ve bileşenin nasıl başlatılabileceğini açıklayan Intent Filters'a sahip olmalıdır.

Sistemin saklanan kısımlarına veya diğer uygulamalar erişmek için uygulamanın ihtiyaç duyduğu izinler. Ayrıca bu uygulamadaki içeriğe erişmek istiyorsa, diğer uygulamanın sahip olması gereken bütün izinleri bildirmek zorundadır.

Google Play'den hangi cihazların yükleyebileceğini etkileyen uygulamanın gerektirdiği donanım ve yazılım özelliklerini belirtmek zorundadır.

Uygulamanın paket adı (package name)'i belirtilmelidir.

Umarım bu içerik yararlı olmuştur, işinize yaradıysa, okumaktan keyif aldıysanız veya hoşunuza gittiyse teşekkür etmeyi unutmayın. Sağlıcakla kalın :)

Merhaba.Eline sağlı çok güzel olmuş.Android Studio içerisinde kullandığın kodlamayı nasıl öğrene bilirim?
 

Muslukcu

Katılımcı Üye
17 Kas 2021
699
262
Tesisat dükkanı
Merhabalar dostlar, sizler ile yeni bir seriye başlıyoruz, Android Geliştirme serisi. Bu seride Android Geliştirme içinde ne varsa hepsinin detayına ineceğiz hepsine bakacağız. Şimdi lafı çok uzatmadan başlayalım.

Öncelikle Android geliştirebilmek için Kotlin ya da Java bilmemiz gerekiyor. Bu seriye başlamadan önce Kotlin'i detaylı bir şekilde anlattığım bir anlatım serisi vardı okumak isteyenler için buraya bırakıyorum

https://www.turkhackteam.org/java/1943792-kotlin-1-kotlin-temelleri.html
https://www.turkhackteam.org/java/1943937-kotlin-null-safety-non-null.html
https://www.turkhackteam.org/java/1944871-kotlin-3-obje-odakli-programlama.html
https://www.turkhackteam.org/java/1945640-kotlin-4-coroutineler.html

Bu eğitim'de Kotlin üzerinden ilerleyeceğiz eğer Kotlin bilmiyorsanız, benim bıraktığım linklerden veyahut kendiniz öğrenebilirsiniz. Şimdi geliştireceğimiz platform kurulumlarına geçelim.

JDK İndirmek


İlk olarak JDK (Java Development Kit) Java Geliştirici Kit'ini indirmemiz gerekiyor. JDK yazdığımız kodun derlenmesi için gerekiyor. Şimdi arama çubuğuna "jdk download" yazalım.



Gelen sayfadan sistemimize uygun olan sürümü seçiyoruz. Eğer sistemimiz 32 bit ise Java SE 8'i, 64 bit ise en son sürümü indirebiliriz, bende şu an Java SE 15 gözüküyor siz de en son sürüm neyse onu indirebilirsiniz, zaten ben çok büyük değişim olursa konuyu güncellerim. Neyse şimdi buradan Oracle JDK kısmından JDK Download seçeneğine tıklıyoruz



Tıkladıktan sonra gelen sayfadan sisteminize uygun olan indirme seçeneğini seçiyorsunuz.



Dosyamızı indirdikten sonra next -> next şeklinde kurabilirsiniz lakin burada dikkat etmeniz gereken bir husus var. İndirme dizinin C:\Program Files\Java\jdk-15 şeklinde olması lazım, bu standart olandır. Değilse de bu duruma getirebilirsiniz.

Kurulum işlemleri bittikten sonra java'yı sistemimize tanıtmamız lazım bunun için; Bu Bilgisayar -> Özellikler -> Gelişmiş Sistem Ayarları -> Ortam Değişkenleri. Daha sonra buradan Sistem Değişkenleri altından Path'e çift tıklıyoruz ve C:\Program Files\Java\jdk-15\bin yazıyoruz.



Bunu yaptıktan sonra tamam, tamam deyip çıkıyoruz. Şimdi Android Studio yani Android uygulamalar geliştireceğimiz ortamın kurulmasına geldik.

Android Studio İndirmek


Android Studio İndirmek İçin Download Android Studio & App Tools - Android Developers adresine gidiyoruz ve Download Android Studio diyoruz.



Şimdi kurulumu detaylandıralım;

İndirdiğimiz dosyayı açıyoruz

Bu adımları izleyelim.















Ardından gelen Select Default JDK ******** Android Dizininin altında olmalıdır.

Sonra Gelen UI Teme kısmından Darcula ya da Light seçebilirsiniz. Benim favorim Darcula :))



Bu eski bir ekran görüntüsü olduğu için API 30 değil de 29 gözüküyor zaten sizde en son sürüm gelecektir. Android Virtual Device'ı işaretlemeyi unutmayın. Bu uygulamaları deneyeceğimiz emülatör cihazıdır. Yani bu olmazsa olmaz.

Android SDK ******** da yine çok önemlidir. SSD'niz varsa oraya kaydetmeyi unutmayın. VE EN ÖNEMLİSİ BU LOKASYONDA TÜRKÇE KARAKTER NOKTA VS OLMAMALI YOKSA HATA VERİYOR.



Burada RAM'i kendi raminize göre ayarlamanız gerek benim 8 gb ramim var. 2gb'da sorun çıkmıyor, bu şekilde kullanabilirsiniz.



Finish deyip yüklenmesini bekliyoruz.

Yüklendikten ve bir hata ile karşılaşmadıktan sonra Finish deyip kapatabiliriz.

Kurulum işlemlerimiz burada sona eriyor şimdi ise kodlamaya & uygulamaya başlayalım.

Proje Oluşturmak


Gelen ekranımızdan yeni bir proje oluşturuyoruz



Empty Activity yani Boş Aktiviteyi seçelim.



Name'e MyFirstApp dedim siz istediğiniz diyebilirsiniz. Package name'in açılımı şu şekildedir com.<SİZİNADINIZ>.<UYGULAMAİSMİ> bu şekilde yaptıktan sonra Save ********'da Türkçe karakter olmamasına dikkat edin. Dil tabi ki Kotlin seçiyoruz. Minimum SDK ise, en düşük olarak hangi telefon'da çalışacağıdır. Android Studio standart olarak API 16 Android 4.1 seçmekte. Eğer burada karar vermekte zorlanırsanız, aşağısında kalın bir şekilde yazan dünyadaki bütün Android cihazlarının ortalama kaçında çalışacağını yazan sayıya bakabilirsiniz. Hala karar veremediyseniz Help Me To Choose yazan yere basıp grafiği inceleyebilirsiniz.



Daha sonra Finish deyip projeyi oluşturuyoruz.

İlk açıldığında hem Kotlin hem de bazı Gradle dosyalarını yüklediği için ilk açılışa mahsus biraz uzun sürebilir. Bu sürede dosyalarda değişiklik yapmayalım



Bittiğinde Build penceresi altından BUILD SUCCESSFUL yazısını görüyorsanız, hazırız demektir :))

İlk App'im Hello World


Evet dostlar bütün kurulum işlemlerimiz hallolduğuna göre artık başlayabiliriz.

activity_main.xml dosyamızı ilk açtığımızda bu şekil bir ekran geliyor.



Ekranın tam ortasında bir TextView var ve içinde Hello World! yazıyor. İsterseniz yazıyı değiştirip Selam THT Ailesi yapalım.

Yaptıktan sonra uygulamayı bir çalıştıralım bakalım gerçekten çalışıyor mu?



Burada normalde yükleme ekranında seçtiğimiz gibi hazır olarak bir telefon gelmesi gerekiyor eğer gelmediyse, sağdan 4. bir telefonun önündeki Android logosu olan butona tıklayalım. Bu AVD (Android Virtual Device) Manager yani Android Sanal Cihaz Yöneticisi'dir, buradan sanal telefonlarımızı kontrol edebiliriz.



Buradan Create Virtual Device diyoruz.



İstediğimiz telefonu seçip Next diyoruz.

Burada sürümü soruyor. Güncel olarak R gelmesi lazım seçip Next diyoruz.

Cihaza isim veriyoruz ve daha sonra hiç bir şeyi ellemeden finish diyoruz.

Ve cihaz geliyor. Şimdi AVD'yi kapatıp sağ üstteki menüden yeşil çalıştır tuşuna basalım.

Eğer hata çıkmazsa cihaz açılacak ve uygulama çalışacaktır

Hata çıkarsa sormayı unutmayın dostlar :))




Gördüğünüz gibi uygulama başarılı bir şekilde çalıştı. Bunlar arkada dursun şimdilik.

Şimdi kısa bir uygulama yapalım. Bu uygulama şöyle olsun. Bir kişi adını soyadını ve yaşını girsin daha sonra onu başka bir sayfada gösterelim. Biliyorum çok basit gibi geliyor ama bir sürü şey öğreneceğiz, başlayalım.

Öncelikle 2 tane EditText ve 1 tane Button koymamız gerek, bunlar sol kısımdaki palette kısmından bulabilirsiniz.



Sağ taraftaki attributes kısmından istediğiniz özellikleri değiştirebilirsiniz.

Ben açık olması için PlainText'lerimizin en üst tarafta bulunan id'lerin adsoyadtext ve yastext olarak değiştiriyorum.

Button'da ise yine özellikler kısmından onClick kısmına tiklandi yazıyorum. Tasarım tarafındaki işlemlerimiz bu kadar şimdi kodlara gelelim. Öncekikle onClick yani tıklandığında ne olacağını belirten metodumuzu bir yazmamız gerekiyor.

onClick nedir?


onClick bir görünümün (buton, yazı, resim) üstüne kullanıcı tarafından basıldığında ne olacağını belirten fonksiyondur.

Şimdi "tiklandi" olarak belirttiğimiz onClick fonksiyonumuzu onCreate()'nin dışında ama MainActivity'nin içine yazmamız gerekiyor.

Kod:
class MainActivity : AppCompatActivity() {[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun tiklandi(view: View){
        
    }
}


NOT: fun tiklandi() yapıp parantezin içini boş bırakırsanız hata verir çalışmaz, burada view yazmamızın sebebi bu fonksiyonun bir görünüm (bizim örneğimizde buton) tarafından çağrıldığını & kullanıldığını belirtmek.

Bu yazdığımız kod sayesinde butona tıklandığında olacak bütün işlemleri buradan belirtebiliyoruz.

Aşağıdaki kodları tiklandi'nın içine yazalım:

Kod:
var adsoyad = String()[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]var yas = String()
        
adsoyad = adsoyadtext.text.toString()
yas = yastext.text.toString()


adsoyad.text = Buradaki text'in kendisine erişir, adsoyad.text.toString() ise o Text'i String' çevirir, bu yüzden böyle bir tanımlama yaptık
Burada adsoyad ve yas isimli iki değişken oluşturduk ve daha sonra kullanıcı tarafından girilen değerleri eşitledik.

adsoyad ve yas değelerini kolaylık olması açısından String olarak aldım.

Değerlerimizi aldık şimdi sıra diğer aktiviteyi oluşturmakta.



Bu şekilde yeni bir aktivite oluşturuyoruz. Açılan ekranda direkt olarak finish diyebiliriz. Böylece MainActivity2 isimli bir aktivitemiz ve onun tasarım dosyası oluştu onun içine de iki tane textview koydum ve id'lerini adsoyadgoster ve yasgoster yaptım.

Şimdi diğer aktiviteye geçelim bunun için bir Intent oluşturmamız gerekiyor ve daha sonra bu Intent'i başlatarak 2. aktiviteye geçeceğiz.

Intent Nedir?


Intent, Android'de bir Activity'den diğerine geçmek için kullanılan yapıdır. Sırasıyla önceki aktiviteyi kapatır ve diğerini başlatır. Intent ile verileri de aktarabiliriz. Şimdi MainActivity içinde bir Intent oluşturalım ve içine bazı değişkenler koyalım.

Kod:
val intent = Intent(this, MainActivity2::class.java)[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]intent.putExtra("adsoyad", adsoyad)
intent.putExtra("yas", yas)
startActivity(intent)


Bir Intent oluşturduk ve this'ten yani MainActivity'den (this MainActivity'e işaret ediyor) MainActivity2'ye geçeceğimiz söyledik
İki tane değişken koyduk adsoyad ve yas isimli bunlar Intent'le beraber gidiyorlar.
ve Intent'i başlattık. Bundan sonra ise MainActiviy2'deki kodlar çalışacak.

Peki yapmak istediğimiz ne? Değişkenleri alıp textview'larımızda göstermek.

MainActivity2 içinde değişkenlerimizi alalım:

Kod:
val adsoyad = intent.getStringExtra("adsoyad")[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]val yas = intent.getStringExtra("yas")


Bu kodlar ile değişkenlerimizi almayı başardık. Burada belki bir gariplik fark etmişsinizdir. bir intent oluşturmadan direkt olarak intent.getStringExtra diyebildik, bunun sebebi aktivitelere intent ile gelmemiz ve her aktivite oluşturulduğunda otomatik olarak bir Intent oluşması.
Burada intent.getStringExtra ile aktardığımız String'leri aldık başka bir değer atsaydık atıyorum boolean. O zaman getBoolExtra dememiz gerekecekti. getDegiskenAdiExtra bu işleme yarıyor.

Kod:
adsoyadgoster.text = adsoyad[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]yasgoster.text = yas


Bu kodlar ile de değişkenlerimizi aktivitemizde daha önceden oluşturduğumuz textview'larda gösterdik. Yani textview'daki textlerle bu değerlerimizi eşitledik. İşlemlerimiz bu kadar, çalıştırmadan önce yapmamız gereken son bir şey daha var. İki Aktivite de



Bu kısımdan ucunda mavi şeyler parıldayan çubuğa yani Infer Constraints'e dokunmamız gerek. Bu görüntümüzün kaymamasını sağlıyor.

Şimdi çalıştıralım ve deneyelim.



Değerlerimizi girelim ve butona basalım.



Gördüğünüz gibi değerlerimizi başarılı bir şekilde göstermeyi başardık.

Peki şimdi ne öğrendik?

- EditText'deki değerleri kullanıcıdan almayı
- Buton'a tıklayınca işlem yaptırmayı
- Başka Sayfalara Geçmeyi
- Geçiş Yaparken Veri Aktarmayı
- Aldığımız Verileri Kullanıcılara Göstermeyi

öğrendik.

Şuan sadece bu öğrendiklerimizle bile güzel uygulamalar çıkartabiliriz :)

Bilmemiz Gereken Bazı Şeyler


Android App Components yani Uygulama Bileşenleri

Uygulama Bileşenleri, uygulamanın yapı taşlarıdır. Her bir bileşen kullanıcıların uygulamayı kullanmasında kullanılır, her uygulamada temel 4 tür bileşen vardır. Bunlar;

Aktiviteler

Servisler
Broadcast Alıcıları
İçerik Sağlayıcıları

Aktiviteler;

Aktiviteler kullanıcıyla uygulamanın buluştuğu yerdir. Aktivite ekranda kullanıcı arayüzü gösterir. Örneğin, bir e-posta uygulaması, yeni e-postaların listesinin gösterildiği bir aktiviteye sahip olabilir, başka bir aktivite ise e-posta yazmak için, başka bir tanesi okumak için vesaire vesaire. Buna ayrılığa karşın aktiviteler, birbirleriyle iyi bir kullanıcı deneyimi oluşturmak için bağlıdırlar. Örneğin, bir kamera uygulaması, kullanıcının bir resmi paylaşmasına izin vermek için yeni posta oluşturan e-posta uygulamasında aktivite başlatabilir.
Aktivitelerin kendilerine ait yaşam döngüleri vardır.

activity_lifecycle.png


Gördüğünüz resim Android'in kendi sayfasından alınmıştır. Yaşam döngüsünü açıklayacak olursak

onCreate() = Aktivite ilk oluşturulduğunda çağrılır.

onStart() = Aktivite oluşturulduktan sonra başladığında çağrılır.
onResume() = Devam ettirildiğinde çağrılır, ilk açıldığında da çağrılır.

Bunlar olduktan sonra aktivite çalışıyor demektir.

onPause() = Başka bir uygulama ekrana geldiğinde veya uygulama aşağı alındığında çağrılır. Daha yüksek öncelikli uygulamalar belleğe ihtiyaç duyduğu zaman ve başka bir aktiviteye geri tuşuyla gidildiğinde eski aktivitede çağrılır

onStop() = Aktivite artık görünür değildir. Kullanıcı uygulamayı yan veya düz çevirdiğinde de çağrılır.
onDestroy() = Aktivite tamamen biter ve sistem tarafından yok edilir.

Destroy çağrıldıktan sonra aktivite tamamen kapanır.

Bunların hepsini uygulamamızda çağırabiliriz.

Kod:
override fun onCreate(savedInstanceState: Bundle?) {[/COLOR][/FONT][/B][/SIZE][/CENTER]
[SIZE=3][B][FONT=Arial][COLOR=White][CENTER]        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onStart() {
        super.onStart()
    }

    override fun onResume() {
        super.onResume()
    }

    override fun onPause() {
        super.onPause()
    }

    override fun onStop() {
        super.onStop()
    }

    override fun onDestroy() {
        super.onDestroy()
    }


Bu şekilde her bir işlemde ne olacağını belirtebiliriz.

Servisler;


Servis uygulamanın arka planında herhangi bir sebepten ötürü çalışan genel amaçlı bileşene denir. Servisler, uzun süreli işlemler için arka planda çalışan bileşendir. Bir serviste kullanıcı arayüzü olmaz. Örnek verecek olursak; bir servis, kullanıcı başka bir uygulamadayken arkaplanda bir müzik çalıyor olabilir ya da kullanıcının telefonla etkileşimini bloklamadan internetten veri indiriyor olabilir.

Broadcast alıcıları;


Broadcast alıcıları, sistemin cihazda olan biteni kullanıcı akışını bloklamadan göndermesini sağlayan ve uygulamanın bu sistem duyurularına yanıt vermesini sağlayan bileşendir. Broadcast alıcıları, uygulamaya yönelik tanımlanmış olduğundan sistem, anlık olarak çalışmayan uygulamalara bile broadcast gönderebilir. Dolayısıyla, bir uygulama kullanıcıya yaklaşan bir olay hakkında bilgi vermek için bildirim göndermek üzere broadcast sağlayabilir.

İçerik Sağlayıcıları;


Bir içerik sağlayıcısı, dahili hafızada, bir veritabanında, web'de veya uygulamanın erişebileceği herhangi bir kalıcı hafızada depolayabileceğiniz her türlü veriyi bütün cihazla paylaşan bir uygulama verileri kümesini yönetir. İçerik sağlayıcısı aracılığıyla, diğer uygulamalar, içerik sağlayıcı izin verirse verileri alabilir veya değiştirebilirsiniz. Örneğin, Android sistemi, kullanıcının iletişim bilgilerini yöneten bir içerik sağlayıcısı sağlar. Böylece, uygun izinlere sahip herhangi bir uygulama, belirli bir kişi hakkında bilgi okumak ve yazmak için ContactsContract.Data gibi içerik sağlayıcısını kullanabilir.

AndroidManifest.xml Nedir?


AndroidManifest, Android derleme araçları, Android işletim sistemi ve Google Play için uygulamanızla ilgili temel bilgileri tanımlar. Her uygulama projesinin root dizininde bir AndroidManifest.xml(tam olarak bu isim) olmalıdır.

Her Android Manifest dosyasının sahip olması gerekenler;

Tüm aktiviteler, hizmetleri, broadcast alıcılarını ve içerik sağlayıcıları içeren uygulamanın bileşenleri. Her bileşen, Kotlin veya Java sınıfının adı gibi temel özellikleri ile tanımlanmalıdır. Ayrıca, hangi cihaz ayarlarını kullanabileceği ve bileşenin nasıl başlatılabileceğini açıklayan Intent Filters'a sahip olmalıdır.

Sistemin saklanan kısımlarına veya diğer uygulamalar erişmek için uygulamanın ihtiyaç duyduğu izinler. Ayrıca bu uygulamadaki içeriğe erişmek istiyorsa, diğer uygulamanın sahip olması gereken bütün izinleri bildirmek zorundadır.

Google Play'den hangi cihazların yükleyebileceğini etkileyen uygulamanın gerektirdiği donanım ve yazılım özelliklerini belirtmek zorundadır.

Uygulamanın paket adı (package name)'i belirtilmelidir.

Umarım bu içerik yararlı olmuştur, işinize yaradıysa, okumaktan keyif aldıysanız veya hoşunuza gittiyse teşekkür etmeyi unutmayın. Sağlıcakla kalın :)

Elinize saglik cok kapsamli ve guzel şahane
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.