Android Eğitim Programı Eğitimin Hedefi

Benzer belgeler
Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

1 GİRİŞ 1 Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

Matech Bilişim Teknolojileri

Android Ders Notları

MOBİL UYGULAMA GELİŞTİRME

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi KULLANICI ARAYÜZ. BLM401 Dr.Refik SAMET

Activity Context.startActivity Activity, AndroidManifest

Görsel Komponentler. TextView. Metin değerlerini ekranda göstermek için kullanılır.

MOBIL UYGULAMA GELIŞTIRME

Android e Giriş. Öğr.Gör. Utku SOBUTAY


E-Posta Yönetimi. E-Posta Açma, Silme ve Yönetim Kılavuzu

Bölüm 1 / Mobil Uygulama Hakkında

1 LK ANDROID YAZILIMIMIZ VE ÖN HAZIRLIKLAR

Proje 1. Arayüz Tasarımı

Hoşgeldiniz DİBBYS. Yeni Özellikler ve Faydaları

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

CUSTOMSLİDİNG KULLANIMI

Android Platformunda Uygulama Geliştirme.

XMail. Kurulum ve Senkronizasyon Ayarları Rehberi

İSTANBULKART MOBİL UYGULAMASI KULLANICI EĞİTİM DOKÜMANI

Sade ve tam ekran masaüstü kullanımının temel çıkış noktası, aranılan özelliğe çabuk erişimi sağlayan yenilikçi kullanıcı deneyimidir.

MOBİL UYGULAMA GELİŞTİRME

Kullanım Kılavuzu Ekim 2017

UZAKTAN EĞİTİM YÖNETİM SİSTEMİ (MMYO)EĞİTMEN YARDIM KILAVUZU

Enlil programını açtığımızda karşımıza gelen ilk ekrandır.bu ekranda özel tanımlanmış kullanıcı kodu ve parola ile programa giriş sağlanmaktadır.

BİLGİSAYAR DESTEKLİ TASARIM II

Bireysel İnternet Şubesi

ELEKTRONİK İMZA KURULUM REHBERİ

Data Structures Lab Güz

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

Boğaziçi Üniversitesi Bilgi İşlem Merkezi. Web Yönetimi Birimi. Drupal Kullanım Kılavuzu

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

K12NET Eğitim Yönetim Sistemi

Kurulum; Ana Bilgisayar ve Tahtalara ayrı ayrı yapılmaktadır. KURULUM ŞEMASI x.x x.x x.x x.

ZİRVEDRİVEWEB YAZILIMI KULLANIM KILAVUZU

Safirblog WP Teması - Kurulum ve Kullanım Kılavuzu

AKINSOFT CMS (İçerik Yönetim Sistemi)

ADVANCITY ALMS KULLANIM KILAVUZU: Uzaktan Eğitim Sistemini kullanabilmek için dl.adanabtu.edu.tr adresine giriş yapılır.

Kullanım Kılavuzu

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi UYGULAMA KAYNAKLARI. BLM401 Dr.Refik SAMET

T.C. KONAK BELEDİYE BAŞKANLIĞI ELEKTRONİK BELGE VE ARŞİV YÖNETİM SİSTEMİ EBYS NİN GÜVENİLEN SİTELERE EKLENMESİ

MapCodeX MapLand Kullanım Kılavuzu

Ticimax Versiyon Yenilikleri! Bu versiyonda kendi yaptığımız geliştirmeler, performans iyileştirmeleri ve sizlerden gelen taleplerin

Pearson Kütüphane Erişimi Kullanım Kılavuzu

Dosyalama olarak: HTML, PDF, DOC ve XLS dosya türlerini kullanabilirsiniz. Kütüphane Modülü açıldığında Vet.Asistanı Kütüphanesi ekrana gelmektedir.

TÜİK e-vt Teknik Kılavuz

Ecofont Yazılım Kullanıcı Rehberi

ELEKTRONİK BELGE VE ARŞİV YÖNETİM SİSTEMİ EBYS NİN GÜVENİLEN SİTELERE EKLENMESİ

VERİ TABANI YÖNETİM SİSTEMLERİ II. 9. FORMLAR ve ORACLE FORMS PROGRAMINDA FORM OLUŞTURMA

Logo Mobile Kurulum ve Kullanım

Sisteme giriş için Personel Daire Başkanlığı web adresinde ( bulunan Personel Bilgi Sistemi butonuna basılır.

Uzaktan Eğitim Programlarına Giriş Kılavuzu

EndNote Web Hızlı Başvuru kartı

Koordinat Dönüşümleri (V )

Tarihli Mikro Müşavir 07a Sürümü

E-Firma Rehberi Sistemi Plus

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

ELEKTRONİK BELGE YÖNETİM SİSTEMİ (EBYS)

İMZAGER PROGRAMI İLE UZUN DÖNEM İMZA TİPİNDE ELEKTRONİK İMZALI BELGE OLUŞTURMA

Moodle MOODLE ÖĞRENCİ EL KİTABI HAZIRLAYAN ULAŞ REMZİ KORALAY

2. HTML Temel Etiketleri

TÜRKİYE ULUSAL AJANSI ELEKTRONİK BELGE VE ARŞİV YÖNETİM SİSTEMİ EBYS NİN GÜVENİLEN SİTELERE EKLENMESİ

MOBİL UYGULAMA GELİŞTİRME

İÇİNDEKİLER VII İÇİNDEKİLER

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET

Sade ve tam ekran masaüstü kullanımının temel çıkış noktası, aranılan özelliğe çabuk erişimi sağlayan yenilikçi kullanıcı deneyimidir.

İdari Birimler Yönetim Paneli Kullanma Kılavuzu Bilgi İşlem Daire Başkanlığı Web Tasarım Ve Yazılım Birimi

Windows Live Movie Maker

Luca NET Kobi Ticari Yazılımında ilk yapılacaklar

MOBİL UYGULAMA GELİŞTİRME

MS POWERPOINT Şekil 111 Powerpoint 2010 Programını Başlatmak

Qsign Manager. Digital Signage Software Hızlı Başlangıç Kılavuzu

"SQL Server Management Studio" yazılımını yüklemek için alttaki resmi sitesinden 180 günlük deneme sürümünü indirebilirsiniz.

Arayüz Geliştirme Dokümantasyonu

Kullanım Kılavuzu Ekim 2017

MİLLİ EĞİTİM BAKANLIĞI YENİ EPOSTA SİSTEMİ HAKKINDA MEB

LOGO 3 SERİSİ: KULLANICI DENEYİMİNİN BİTMEYEN YOLCULUĞU

SUBA. SUBA CRM. Bulut Teknoloji ile İşinizi Zirveye Taşıyın! SMART TECHNOLOGY SOLUTIONS

Kets DocPlace LOGO Entegrasyonu

Sürüm Güncelleme Dokümanı Tarihli Mikro Jump 07a Sürümü

FIRAT ÜNİVERSİTESİ WEB TABANLI KÜTÜPHANE OTOMASYONU

Kullanım Kılavuzu Milli Eğitim Bakanlığı 2010

VitalSource Bookshelf Nedir? Bookshelf e Giriş Kayıt Kitap Ekleme. Masaüstü ve Dizüstü Bilgisayarda

SQL 2005 SQL STUDIO MANAGER ACP YAZILIMI KURULUM KILAVUZU

Mobil Uygulama Kullanma Kılavuzu

GOSS SORU BANKASI ÖNERİ HAVUZU OLUŞTURMA KILAVUZU

General Mobile DSTL1. Sürüm Güncelleme Notları

AMACSEO TEMASI KULLANIM KILAVUZU. AmacSeo temasının Amacdizayn.com tarafından hazırlanmış kullanım kılavuzudur. 1

Dil değiştiği andan itibaren bilgisayar yeniden başlatılmalıdır.

NB Macro Kullanımı Hakkında Genel Bilgiler

İÇİNDEKİLER. Uyap Sorgu Modülü

Öğrenci Kullanım Kılavuzu

CHECKPOINT VPN KULLANIM KILAVUZU

KASIM 2016 MKYS ZİMMET ANDROID MOBİL UYGULAMASI STOK TAKİP VE ANALİZ DAİRE BAŞKANLIĞI T.C. SAĞLIK BAKANLIĞI

KULLANIM KILAVUZU. Reserve Online Reservation Systems

MOBİL UYGULAMA GELİŞTİRME

TTR BİLİŞİM HİZMETLERİ MERKEZİ VERİ TABANI HİZMETİ (MTHS) KULLANIM KILAVUZU

TecCom TecLocal Programı Kurulum ve Yapılandırma Rehberi

Transkript:

Android Eğitim Programı Eğitimin Hedefi Tüm katılımcıların Android hakkındaki temel kavramlara hakim olması ve eğitim sonunda geliştirilecek uygulama benzerinde uygulamaları yazabilecek kabiliyete ulaşması, karşılaşılacak sorunların üstesinden gelebilecek yeterliliğe ulaştırılması hedeflenmektedir. Bu eğitim içeriği en özet bilgilerle ve en hızlı şekilde mobil uygulama geliştirme için oluşturulmuştur. İçerik hazırlanırken muhtemel tüm gereklilikler göz önüne alınmıştır. İçeriklerin tümü orta düzeyde rahatlıkla tüm talepleri yerine getiren uygulamalar başarıyla yazılabilir. Eğitim Gereksinimleri Katılımcılarımızın temel düzeyde olsa JAVA bilgisine sahip olmalı, bu bilgiye sahip olmayan kullanıcılar sadece genel kültür düzeyinde mobil uygulamaların sadece yaşam döngüsünü öğrenerek eğitim programından yararlanmış olacaklar. Her katılımcı için Android Studio ve SDK kurulumu yapılmış uygulama geliştirmeye hazır olan bilgisayar olmalıdır. Kaynak Paylaşımı Eğitim boyunca derslerdeki anlık kod ve link paylaşımları https://notepad.pw/androidegitim linki üzerinden yapılacaktır. Derslerin verimliliğini artırmak ve bölünmeleri azaltmak için sorular ve problemlerle ilgili https://notepad.pw/androidegitimsorular linki üzerinden iletişim kurulabilir. Tüm katılımcılar sorulan soruları ve cevapları buradan ortak olarak görebilecektir. Kaynak linkleri 1 Anlık kod ve link paylaşım Soru ve problemler Bütün halindeki proje paylaşımları Kod bloklarından oluşan paylaşımlar https://notepad.pw/androidegitim https://notepad.pw/androidegitimsorular https://github.com/bulentsiyah https://gist.github.com/bulentsiyah

Eğitim Sonu Uygulama Geliştirilmesi Eğitimin tamamlanmasının ardından, welcome aktivitye sahip, splash screen bulunan, Shared Preferences kullanılmış, arayüzler arası animasyonlu geçişlere sahip, özelleştirilmiş Dialog ve Toast gibi kullanıcı etkileşim araçlarının da kullanıldığı, Runtime Permission kullanılmış olan, kullanıcı giriş, şifremi unuttum gibi Login ekranlarına sahip arayüz ile giriş yapılabilen, (Database - Data Caching) anket verilerin alınabildiği Anket Doldurma ekranı bulunan ve topladığı verileri iç veritabanına (sqlite) yazabilen, (otomatik offline mod) bu verileri kullanıcıyı etkilemeden ve uygun internet koşullarında servis yardımıyla iletebilen, geçmişte doldurulmuş anketlerin listelendiği ve detay ekranın bulunduğu bir anket uygulaması yazılacaktır. Referans Olabilecek Diğer Kaynaklar 2 Kitap tavsiyesi Android Studio Üzerinden Anlatımlı Örneklerle Android Programlama Eğitimi Yazar: Aykut Taşdelen https://github.com/googlesamples https://android-arsenal.com/ https://gelecegiyazanlar.turkcell.com.tr/konu/android http://umiitkose.com/android/ https://www.mobilhanem.com http://www.vogella.com/tutorials/android.html

Konular 1. Mobil Uygulama Geliştirme Hakkında 2. Bir Projenin Yaşam Döngüsü a. Projenin kurgusu b. Geliştirme ortamı detayları ve emülatör ile telefonun hazırlanması c. Temel kavramlar ve Android e giriş (Activity, Servis, Receiver, Constant, Adapter vs.) d. Proje oluşturma ve tüm proje yapısını tanıma i. Manifest dosyası önemi ve detayı ii. Style, Dimens, Color, String xml leri, Assets, Anim klasörü e. Empty, Login, Maps, Tabbed Page ve Navigation Drawer proje kalıbı seçimi f. Arayüz oluşturma argümanları. i. Android Layout Türleri ii. Button, Edittext, Textview, ImageButton, ImageView, Spinner, Listview, Seekbar arayüz elemanları ve değer ölçümleri iii. Progress, Alert Dialog, SnackBar ve Toast işlemleri iv. Menü örnekleri (İkon veya Yazı, Alt menü, Popup menü) v. İkon uyarlaması, Material Design Renk Kaynağı, Harici Font kullanımı g. Google Play Store yayın aşamaları i. İmzalı ve imzasız apk üretme ii. iii. iv. Console detayları Ücretli ücretsiz yayınlama, uygulama işi satın alma Alfa, Beta yayınları 3. Android Activity Yaşam Döngüsü, Giriş ve Kayıt İşlemleri, Animasyonlu Giriş İşlemleri ve 3.Parti Yazılımlar, Splash Ekranı Ekleme ve Geçişler Arası Bilgi Aktarma (Bundle, Statik ve Receiver) a. Android activity yaşam döngüsü b. Giriş ve kayıt işlemleri c. Animasyonlu giriş işlemleri ve 3.Parti yazılımlar d. Splash ekranı ekleme ve geçişler arası bilgi aktarma (Bundle, Statik ve Receiver) 3

4. Android Shared Preferences Kullanımı ve Ayarlar Arayüzü 5. Welcome Tanıtım Arayüzleri Ekleme 6. Progress, Alert Dialog ve Toast Arayüzlerinin Özelleştirilmesi 7. Basit ve Özelleştirilmiş Listview kullanımı 8. Android Runtime Permission Kullanımı 9. Timer, Servis ve Broadcast Receiver Kullanımı 10. AsyncTask ve Handler(UI Thread) Kullanımı 11. Android Location Listener (Gps ve Network-Fused) işlemleri 12. Android Google Maps Örneği a. Pin ekleme b. Çizgi çizdirme (manuel ve otomatik) c. Google Place Autocomplete kullanımı 13. Android Sqlite Veritabanı Kullanımı a. Ekleme, Silme, Güncelleme ve Listeleme b. Resim kaydetme 14. Android Web Servis (Rest, WCF veya ASMX) 15. Android Görüntü Alma a. Kamera veya galeriden alınan resmi ekrana basma b. SD karta kaydetme c. StringBase64 olarak web servise yollama 16. Android İşlemleri Loglama Örneği a. Sd karta loglama ve otomatik log silinmesi b. İşlem anın ekran görüntüsünü alma 17. Android Local Notification 18. Android Firebase Push Notification 19. Android Firebase Analytics ile istatistik Toplama 4 Dahil Edilebilecek Diğer Konular Wifi üzerinden debug etme Android Tcp Client-Server işlemleri

Sohbet arayüzü örneği İOS 11 de bulunan acil otomatik çağrı örneği Rehber, çağrı kaydı alma Call recorder örneği Bir Eclipse projesini Android Studio projesine dönüştürme Apk sı şifrelenmemiş bir uygulamayı geri çözme Servis içerisinden alert dialog çağırma Android Badge Notification Android Alarm kullanımı (Alarm uyandırma servisi değil) 5

Ders İçeriği 6 1.Mobil Uygulama Geliştirme Hakkında 2017 itibariyle Android 2 Milyar kullanıcı, Apple 1 Milyar kullanıcı barajlarını aşmış durumda. Bu verilerin anlamı şöyle yapılacak işler aslında daha yeni başlıyor (Android 2013 yılında 1 Milyar barajına ulaşmıştı). Bu standart gelişim haricinde Yapay Zeka (AI), Nesnelerin interneti (IoT), Artırılmış gerçeklik (AR) ve Sanal gerçeklik (VR) kavramlarıyla da mobil dünyanın nasıl büyüyeceği yönünde tahminleri zorlayan gelişimlerin olacağının da göstergesidir. Özetle bu çalışmayı sadece uygulama yazmayı başarmak hedefinden çok, yapılabilecek bütün bu gelişimleri takip ve içinde olma yetkinliği kazandırması için bir adım olacak şekilde hedeflemeliyiz. Google I/O 2017 etkinliği

7 2.Bir Projenin Yaşam Döngüsü 2.a. Projenin kurgusu Bir projenin en başta bir hedefi vardır, bu hedef uygulama geliştirirken nelere ihtiyaç olacağını hangi teknolojilerin kullanılacağını ve tüm gereksinimleri ve hatta ortalama bitiş süresini ortaya çıkartır. İşin başından tüm organizasyon şeması ortaya çıkartıp modülleri ayırıp ilerlemek gerekir, örneğin mavi renge sahip bir butonu tıkladığımda ben çalışıyorum diyebilen, birden fazla dile çevrilebilen, ücretsiz ama uygulama içi satın almaya sahip bir programı Google Play Store yayınlamayı hedefleyelim. Örnek toplamak için kullanılabilecek siteler: www.pinterest.com www.behance.net Akış şeması (Flowchart) Akış Şeması, mobil uygulamanın içindeki ekranlar arasındaki geçişleri, hangi ekrandan hangi ekrana geçileceğini ve uygulama içindeki diğer navigasyonel fikirlerin tasarım süreci başlamadan önce görsel olarak düzenlenmesidir. Akış şeması, uygulamanın içinde arayüzler arasındaki geçişin, çalışma akışının ve sürecinin her bir aşamasını (arayüzünün) oklar ile birbirlerine bağlanarak görsel anlatımına denir. Mesela, bir sosyal medya uygulaması yapılıyorsa; Giriş Yap ekranından başka hangi arayüzlere geçiş olacağı (mesela, Şifreni mi unuttun? ve Kayıt Ol ekranları). Bu akış şeması aslında kullanıcı uygulama içinde hangi arayüzden hangisine geçecek ve uygulama toplamda ne kadar arayüz içerecek? sorularına cevap vermek için tasarım aşamasının başında yapılmalıdır. Akış Şeması için kullanılabilecek programlar: https://www.lucidchart.com/ https://www.draw.io/ http://shapesapp.com/ https://www.gliffy.com/ Wireframing Wireframe aslında arayüz tasarımının şematik planıdır. Yani, tasarımın görsel bir iskeletidir. Wireframe, arayüzdeki görsel elemanların yerleşimini genel hatlarıyla göstermek için yapılır. Butonların nerede duracağı, imgelerin pozisyonları ve büyüklükleri ile metin aralarındaki ilişkiler bu süreçte çözülür.

Bazı Wireframe programları: 8 https://studio.design/ https://www.fluidui.com http://www.simplediagrams.com/ https://gomockingbird.com/ http://www.lumzy.com/ Prototip / Kullanıcı deneyimi: Mobil arayüz tasarımını bitirdikten sonra kolaylıkla bulunulabilecek ve kodlama bilmeden rahatlıkla kullanılabilecek Prototip yapma programları ile mobil cihazlara yüklenebilecek çalışan küçük bir prototip tasarlanır. Bu programların amacı hangi butonun ne işe yarayacağı, genel Wireframe ve akış şemasını daha görünür ve kullanılabilir yapmaktır. Prototip yapılabilecek programlar: https://proto.io/ https://mockingbot.com/ https://www.invisionapp.com/ Bir projede olması gerekenler Dil bağımsız olmalı Uygulamanın dil desteği için yapılması gereken tek şey kodlama yapılırken ilerde anlatılacak olan string dosyası üzerinden tüm textlerin girilmiş olması. İşletim sistemi uygulama içindeki string dosyalarına b akarak telefonun varsayılan diline ait dosyaya göre işlem yapıyor. Başarılı ikon, ana renklere sahip olmalı https://icons8.com/ https://jgilfelt.github.io/androidassetstudio/icons-launcher.html https://www.materialui.co/ https://www.computerhope.com/ https://material.io/guidelines/style/color.html#color-color-palette Welcome ekranları olmalı

Splash screen olmalı 9

Firebase Analytics istatistik eklenmeli Apk şifrelenmeli Tanıtım videosu Play Store da eklenmiş olmalı, animasyon veya kullanım videosu 10

https://www.youtube.com/watch?v=ejl9op7mrz0 Tanıtım resimleri geniş ekran ve yazılı slogan başlıklar bulunmalı 11

12 Satma Ücretsiz Uygulama içi satın al Ücretli Video veya resimli reklamlar 2.b. Geliştirme Ortamı Ayarları ve Emülatör ile Telefon Hazırlanması Android Studio ve SDK indirme linki https://developer.android.com/studio/index.html Android Studio yüklemeler tamamlandıktan sonra dikkat edilecek husus SDK Platforms sekmesi için tüm Android sürümleri indirmek yerine minimum, test cihazlarınızın ve en yüksek SDK platformlarını seçmiş olmak.

13 SDK Platforms Seçenekleri SDK Tools sekmesinde ise Play store, USB debug ve diğer işlemler için aşağıdaki seçimlerin yüklenmiş olması

14 SDK Tools Seçenekleri Emülatör seçimlerinde dikkat edilecek tek konu sürümün en az 6.0 olmasıdır. Çünkü 6.0 sürümünden sonra çalışma anında izin kontrolü (RunTime Permission) eklenmiştir. Bu köklü değişiklik yüzünden Emülatörünüz 6.0 olursa sorunsuz testlerinizi yapabilirisiniz. Emülator konusunda birden çok seçenek olsa da https://www.visualstudio.com/tr/vs/msft-android-emulator/ Microsoftun emülatörü kullanılabilir. Kurulum sonrası cihaz boyutu seçimi hedef kullanılara yönelik olmalıdır. Eğer birden fazla hedef kullanıcı varsa en geniş kullanıcı küme için seçim yapılabilir.

Yükleme sonrası emülatörün görüntüsü: 15

16

17 Daha popüler olan GenyMotions Emülatör ile kodlarınızı çalıştırabilirsiniz. Emülatörler temelde aynı prensiple çalıştıkları için istediğiniz Emülatörü kurabilirsiniz ama en popüleri GenyMotions dır. İndirme için hesap oluşturduktan sonra https://www.genymotion.com/download-trial/ indirebilirsiniz ama 30 günlük deneme sürümü bulunmaktadır. Genel kültür olması sebebiyle bu emülatöre değinilmiştir. Android Studio kendi içindeki Emülatörü kullanmak için Tools -Android-AVD Manager altından eklenebilir. Sanal makine kullanımı mevcut olanlar şöyle bir hata ile karşılaşabilirler. Bu hatayı çözmek için Biostan veya Intel Processor (SDK ile yükleme yaptığınızda programlarınız içinde yüklü olmalı) çalıştırıp kullanım için aldığınız hatayı devre dışı bırakabilirsiniz.

18 Telefonda Debug Yapmaya Hazırlanma Bunun için telefonun ayarlar bölümündeki geliştirici modu alanı açık olmalı, açık değilse aşağıdaki ekranda sizin telefon modelinize göre değişse de Derleme Numarasına (Model numarası, Android sürümü, çekirdek sürümüde olabilir) ard arda birkaç kez basınız. Geliştirisi seçeneklerini aktif hale getirip USB hata ayıklama açmalısınız. Ardından yine ayarlar içinde Güvenlik bölümündeki bilinmeyen kaynaklara izin ver seçeneği seçilmeli. Debug anında bu bilgisayara güvenmeli diye soru sorulacaktır, o dialogunda onaylanması halinde sorunsuz bir şekilde debug yapılabilir.

19

20

21

2.c. Temel kavramlar ve Android e giriş (Activity, Servis, Receiver, Constant, Adapter vs.) Activity Nedir? 22 Activity Android in taban sınıflarından biridir. Bu sınıf tarafından oluşturulan nesneler uygulamamızda ki ekranları temsil eder. Android sınıflarından biri olan View, kullanıcı arayüzünü oluşturan nesneleri içerir. Bir kaç View nesnesi; TextView, ImageView, Button, EditText Intent: Intent'in kelime karşılığı niyet, amaç demektir. Android'in diğer Activity'ler veya herhangi bir bileşenine erişirken bu kavramı kullanmamız gerekiyor. İki çeşit Intent karşımıza çıkacaktır. Bunlardan birinci Explicit Intent(Açık Niyet), ikincisi ise Implicit Intent(Kapalı Niyet) Explicit intentin kullanım amacı uygulamanıza yerleştirdiğiniz fonksiyonun hangi uygulama ile devam ettirileceğine siz karar verebiliyorsanız bu intent Explicit Intent ile sağlanır. Örneğin, Maps uygulaması ile etkileşime geçerken varsayılan olarak Google Maps uygulamasını yazılımcı olarak doğrudan tanımlamanız bu intent türüne girer. Implicit Intent ise yine aynı uygulama için cihazda hangi map uygulamasının kullanılacağına kullanıcının karar vermesini isterseniz bu kullanımda Implicit Intent olur. Service: Bu bileşen ile doğrudan kullanıcı ile etkileşim halinde olmayan veya arka planda çalışabilen bir uygulama geliştirebilirsiniz. Örnek verecek olur isek, bir müzik çalar geliştirdiniz ve kullanıcının uygulamanız ile müzik dinlerken aynı anda farklı bir uygulamaya geçtiğinde müzik çalarınız kapanmasın istiyorsanız bu uygulamayı service olarak geliştirmeniz size yardımcı olacak çözümdür. Resim upload etme veya indirme görevlerinde de service kullanabilirsiniz. Kısaca arka planda kullanıcı bekletilmemesi gereken durumlarda kullanılır. Broadcast Receivers: Bu bileşen, uygulamanızın android ile haberleşmesinde kullanacağınız bir özelliktir. Bu özellik ile geliştirdiğiniz uygulamanız android'de gerçekleşen işlemleri dinleyip, aynı şekilde dinlemede olan diğer uygulamalar ile etkileşime geçebilir olacaktır. Örneğin, telefonunuz kulaklığın takıldığını veya gelen bir sms'i Broadcast Receiver bileşeni ile algılar. Bunun dışında kendi uygulamanız içerisinde servislerin birbiriyle veya activity servis arasınd a iletişim kurulabilir. Content Providers: Uygulamanızı geliştirdiğiniz zaman, uygulamanıza ait bileşenler (veritabanı gibi) sadece uygulamanızın erişimine açıktır. Eğer bu bileşen kullanırsanız uygulamanıza ait veritabanı diğer uygulamalar ve işletim sistemi tarafından erişilebilir olacaktır. Android sağladığı bazı içerik sağlayıcılar, Contacts Provider, Settings Provider vb.. XML (Extensible Markup Language) Genişletilebilir İşaretleme Dili anlamına gelmektedir. Hem insanlar hemde bilgisayarlar tarafından kolayca anlaşılabilen dokümanlar oluşturmaya yarayan bir işaretleme dilidir. XML dokümanları ağaç veri yapısı şeklinde yazılır.

23 Application Context: Yukarıda saydığımız bileşenlerden bir kaçı veya tamamı bir araya gelerek uygulama ortamınız meydana getirir. Yukarıdaki tüm bileşenler bu içerikten türetilmiştir. Bütün bu bileşenleri uygulamanıza eklerken uygulamanızın bu bileşenleri kullanabilmesi için tanıtılması gerekir. Diğer tüm kavramlar aşağıdaki kaynaktan erişilebilir. https://developers.google.com/android/for-all/vocab-words/?hl=tr 2.d. Proje oluşturma ve tüm proje yapısını tanıma Manifest AndroidMenifest.xml dosyası Uygulama izinlerinin, çalışacak aktivity, servis receiver ların belirtildiği dosyadır. Uygulamanın hangi aktivity nin başlangıç olduğuna karar verildiği yerdir. <uses-permission android:name="android.permission.camera" /> <uses-permission android:name="android.permission.internet" /> <receiver android:name=".callreceiver" > <intent-filter> <action android:name="android.intent.action.phone_state" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.new_outgoing_call" /> </intent-filter> </receiver> <activity android:name=".kisiekleduzenle" android:windowsoftinputmode="statehidden" /> Java Klasörü Bu klasör altında Java dosyaları, kaynak kodları bulunmaktadır. Klasörleme mantığı activityler, servisler, receiverlar ayrı ayrı gruplara bölmek gerekir. assets Klasörü Harici fontların içinde bulunduğu klasördür.

Res Klasörü 24 Anim: Animasyon xmlerinin bulunduğu dosyadır. Color: Tüm renkler buradaki color.xml altında bulunur. Drawable: Uygulamada kullanılacak resim dosyaları tutulur. Buna ek olarak görünümle ilgili arkaplan değişikliğine sebep olabilecek xmleleri barındırır. Layout: Tüm aktivity, listview itemlerı için tasarlanmış ekranlar bulunur. Toast ve Progress dialog tasarımlarıda burada bulunur. Menu: Herhangi bir aktivity de kullanılmak üzere menu dosyaları bulunur. Bu menu dosyaları uygulama içinde sağ üstte ikon veya yazı olarak bulunabilir.

25 Mipmap: Uygulama ikonlarının veya resimlerin farklı boyutlardaki cihazlarda sorunsuz görünmesi için hdpi, mdpi xhdpi, xxhdpi, xxxhdpi şeklinde klasörler bulunur. Bu klasörlere ikonların belirtilmiş boyutlardaki resimleri eklenerek düzgün görünmesi sağlanır. https://developer.android.com/guide/practices/screens_support.html Values: Yazı, öçlüm ve stil dosyalarının bulunduğu klasördür. Özellikle başka dillere çevirmek için bu klasörü ülke kodu eklenerek değişmesi sağlanıyor. Örneğin Orjinali ingilizde olan bir uygulamaya Values-tr klasörü oluşturulup içine string xml atılırsa dil alt yapısı eklenmiş oluyor, geriye çeviri metinlerini eklemek kalıyor.

26 Stil değişimi için values altındaki style.xml içerisine özelleştirilmiş stil kodları eklenir. Bu dosyada varsayılan tüm tanımlar mevcuttur örneğin ilk oluştuğunda <!-- Base application theme. --> <style name="apptheme" parent="theme.appcompat.light.darkactionbar"> <!-- Customize your theme here. --> <item name="colorprimary">@color/colorprimary</item> <item name="colorprimarydark">@color/colorprimarydark</item> <item name="coloraccent">@color/coloraccent</item> </style> Şeklinde kullanılan aktivity renkleri ile ilgili bilgiler içerir. Bundan farklı olarak bir butonu stilini aşağıdaki gibi değiştirilir. <style name="customstylebuttonsuccess" parent="@android:style/widget.button"> <item name="android:gravity">center</item> <item name="android:background">@drawable/custom_button_blue</item> <item name="android:textcolor">@color/white</item> <item name="android:padding">10dip</item> </style>

libs: Kütüphanelerin tutulduğu klasör. 27 Gradle: Geliştirme aşamalarını otomatize eden açık kaynak kodlu Android Studio üzerinde çalışan bir yapı sistemidir. Android Studio da bir proje oluşturduğumuzda otomatik olarak gradle build sistemi devreye girer ve build işlemini gerçekleştirir. Burada proje, kütüphane, proguard ve anahtarlarla ilgili bilgiler tutulur. Burada ki minsdkversion ve targetsdkversion daha önce AndroidManifest dosyasında bulunan değerlerin aynısıdır. compilesdkversion da projenizi compile etmek istediğin SDK versiyonu anlamına gelir. Gradle projelerinde her modül için birer tane, genel proje için de 1 tane build.gradle dosyası vardır. Başlangıçta sizin kullanacağınız tek dosya app (bu örnek projede) modülünün içinde olan build.gradle dosy asıdır. Gradle ın sağladığı en büyük avantaj kütüphane yönetim sistemidir. Projenizin ihtiyaç duyduğu herhangi bir açık kaynak kodlu kütüphaneyi, projenize tek satır kod ile ekleyebilirsiniz. ( app dizinindeki build.gradle içerisinde bulunan dependencies içerisinde bu işlemi kolayca gerçekleştirebilirsiniz böylece kullanacağınız kütüphaneyi otomatik olarak internet üzerinden sizin için indirecektir.) compilesdkversion 25 buildtoolsversion "25.0.2" defaultconfig {

applicationid "com.bulentsiyah.familyreminder" minsdkversion 16 28 targetsdkversion 25 versioncode 13 versionname "1.0914" testinstrumentationrunner "android.support.test.runner.androidjunitrunner" } compile 'com.github.dmytrodanylyk.circular-progress-button:library:1.1.3' compile 'com.github.dmytrodanylyk:android-morphing-button:98a4986e56' compile 'com.github.ugurtekbas:dialtimepicker:8d263fc3a1' compile 'de.hdodenhof:circleimageview:2.1.0'

29

2.e. Empty, Login, Maps, Tabbed Page ve Navigation Drawer proje kalıbı seçimi 30

31

32

Basic Activity 33

Bottom Navigation Activity 34 Full Screen Activity

Google AdMob Ads Activity 35

Google Maps Activity 36

37

38 Eğer emülatör kullanıyorsanız, yukarıdaki durum için http://www.alteridem.net/2017/02/02/installing-google-playgapps-visual-studio-android-emulators/ yönergeleri yaparak sorunu çözebilirsiniz.

Login Activity 39

Master/Details Flow Activity 40

Navigation Drawer Activity 41

Settings Activity 42

Tabbed Activity 43

44

45

46

2.f. Arayüz oluşturma agrümanları Android Layout Türleri 47 RelativeLayout : RelativeLayout ile birlikte Android görsel bileşenlerini istediğimiz yere sürükleyip kullanabiliriz. Bu layout içerisinde yer alan bileşenleri de kendi içerisinde konumlandırabiliriz sağına göre, soluna göre, alt kısma göre, üst kısma göre. Relative Layout ile daha esnek tasarımlar yapabiliriz. LinearLayout: LinearLayout ile birlikte tüm android bileşenlerini tek bir konumda kullanabiliriz. orientation özelliğini kullanarak yatay LinearLayout (horizontal) ve dikey LinearLayout (vertical) olarak da konumlandırabiliriz. Alt alta yada yan yana aynı çizgi üzerinde bulunacak componentleri LinearLayout ile kullanırız. TableLayout: TableLayout ile birlikte Android bileşenlerini bir tablo yapısına yerleştirirsniz. Html deki gibi tablo yapısı şeklinde göstermek için kullanılır. FrameLayout: FrameLayout ile birlikte Android bileşenleri üst üste biner. Örnek verecek olursak; iki butonunuz var ve aynı yerde konumlansın istiyorsunuz, biri gözüktüğünde diğeri kaybolsun ve tam tersi koşulda gerçekleşsin istiyorsanız FrameLayout kullanabilirsiniz. Başka bir örnek ise elinizde bulunan bir Listview üzerinde bir butonun her zaman sabit kalmasını istiyorsunuz. Bu durumda FramelLayout kullanabilirsiniz. GridLayout: row ve column yapısına sahip olan android bileşenlerini grid de toplayan layout türüdür. ConstraintLayout: Android Studio 2.2 ile gelen bu layout ile Android bileşenlerini sürükle bırak yaparak responsive bir görüntü elde edebiliriz ayrıca alt alta ve yan yana android bileşenlerini elde etmek için kullandığımız LinearLayout

48 yerine ConstraintLayout kullanarak her cihaz için uyumlu tasarımlar oluşturabiliriz. Bu layout sınıfına en iyi örnek https://medium.com/exploring-android/exploring-the-new-android-constraintlayout-eed37fe8d8f1 linkten erişebilirsiniz.

Button, Edittext, Textview, ImageButton, ImageView, Spinner, Listview, Seekbar arayüz elemanları ve değer ölçümleri Örnek kodlar: https://gist.github.com/bulentsiyah/961000db4299f8a5ad8ba93b0f0a3b46 49

Progress, Alert Dialog, SnackBar ve Toast işlemleri Örnek kodlar: https://gist.github.com/bulentsiyah/c6fb358635ad0f7f8a94b707578f9cdf 50

Menü örnekleri (İkon veya Yazı, alt menü, Popup menü) Örnek kodlar: https://gist.github.com/bulentsiyah/ef7848fdd6975c06d0538ba7244ce39e 51

52 İkon uyarlaması, Material Design Renk Kaynağı, Harici Font kullanımı Uygulama için seçilen ana ikon her boyuttaki cihaza uyarlanmalı bunun için online araçlar mevcut, bu araç sayesinde ikonunuzu Android için uygun çözünürlüklere dönüştürmektedir. https://jgilfelt.github.io/androidassetstudio/iconslauncher.html Bu online araç haricinde ikon kaynağı olabilecek https://icons8.com/, https://www.flaticon.com/ Renk kaynağı için https://material.io/guidelines/style/color.html#color-color-palette, https://flatuicolors.com/ Bu kaynaklardan alınan renk kodları values klasoru altındaki colors.xml içinde toplanmalıdır. Örnek kullanım <color name="white">#ffffff</color> <color name="gray">#b6b5b7</color> <color name="blue">#36a9ff</color> <color name="green">#00d700</color> <color name="red">#d81300</color> <color name="yellow">#ffa400</color> <color name="black">#000000</color>

Harici font kullanımı için main altında assets klasörü eklenmeli, fonts klasörü eklenmeli ve bu klasör içine font dosyaları konulmalıdır. Font kaynağı için https://www.dafont.com/, https://www.fontsquirrel.com/fonts/list/popular 53 Seçilen fontun kullanımı için uygulama başlığı değiştirme kodu SpannableString s = new SpannableString(getString(R.string.app_name)); s.setspan(new TypefaceSpan(this, "fonts/pacifico.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); actionbar.settitle(s); veya bir textview font değişimi için Typeface face = Typeface.createFromAsset(getAssets(), "fonts/pacifico.ttf"); TextView tt= (TextView) findviewbyid(r.id.textview2); tt.settypeface(face); 2.g. Google Play Store yayın aşamaları İmzalı ve imzasız apk üretme

54

55

56

57

58

59

60 Console detayları Tek bir google hesabıyla bir kereye mahsus 25 dolarlık geliştirici lisansı alınabiliyor. Alınan bir lisans ile bir başka hesap davet edilebiliyor, bu davet geliştirme düzenleme yayınlama gibi erişim kısıtlarına sahip olabiliyor.

61

62

63

64

65

66 Ücretli ücretsiz yayınlama, uygulama işi satın alma Play store uygulamanızı ücretsiz, ücretsiz ama uygulama içi satın almalı, ücretli veya ücretsiz ama reklam içerecek şekilde yayınlayabilirsiniz.

Alfa, Beta yayınları Bir uygulamayı yayınlamadan önce alfa veya beta aşamalarında yayına sunulabilir. Bu aşamalarda açık ve kapalı alanlar oluşturarak uygulamanın yayın öncesi test ve kontrolleri yapılabilir. 67

Bu aşamalarda açık yayında en az 1000 olacak şekilde katılımcı sayısı belirlenip, url gönderdiğiniz kişiler uygulamanızı indirip test edebiliyorlar. 68

Bu aşamalarda kapalı yayında ise belirlediğiniz kişilerin e-posta adresleri listeye ekleniyor, dolayısıyla sadece erişim linkine sahip ve listedeki kişiler uygulamayı indirebiliyor. 69

70 3.Android Activity Yaşam Döngüsü, Giriş ve Kayıt İşlemleri, Animasyonlu Giriş İşlemleri ve 3.Parti Yazılımlar, Splash Ekranı Ekleme ve Geçişler Arası Bilgi Aktarma (Bundle, Statik ve Receiver) 3.a. Android activity yaşam döngüsü Android Activity methodların hangi sırayla çalıştığını bilmek gerekir. Bu bilgi sayesinde bir harita, konum alma gibi uygulamalar geliştiriyorsanız arayüz oluşmadan bazı tanımları başlatıp bağlantı kurmalısınız. Detay bilgi https://developer.android.com/guide/components/activities/activity-lifecycle.html oncreate : Activity başlatıldığında ilk çalışan method. onstart : oncreate methodu işlemini tamamladıktan sonra çalışan method. onresume : Activity çalıştıktan sonra bütün ön yüzdeki işlemler bittiğinde activity devamı için çalışan kısımdır. Activity arka plana geçip tekrar ön plana geldiğinde onresume methodu tetiklenir ve Activity çalışmaya devam eder.

onpause : Activity arka plana alındığında bu metod tetiklenir. 71 onstop : Aktivite arkaplana atıldığında çalışan bir diğer metoddur. Kullanıcı Activitye geri döndüğünde onrestart methodu tetiklenir ve onstart methodundan itibaren yaşam döngüsü devam eder. Eğer kullanıcı geri dönmezse ilgili Activity e ( bu durumda Activity sonlandı veya sistem tarafından kapatıldıysa ) ondestroy methodu tetiklenir. ondestroy : Yaşam döngüsünün en son kısmıdır. Activity sonlandığında tetiklenir.bellekte uygulama için kullanılan tüm kaynaklarda sonlandırılmış olur.

Örnek kodlar: https://gist.github.com/bulentsiyah/56b8e5cb5c46f89e443b9456872476b3 3.b. Giriş ve kayıt işlemleri Bu tip ekranlarda görsel uyumluluk, sade ve kolay kullanım yeterlidir. Örnek kodda giriş bilgilerinde yapılan hatalar Edittext in error bilgilendirme özelliği ve validation işlemleri kullanılmıştır, kodlar incelendiğinde daha net anlaşılabilir. Detaylı incelenirse kayıt ekranında status bar renginin arkaplan rengine göre değiştirilmesi sağlandı. 72 Örnek kodlar: LoginActivity ve RegisterActivity java ve ilgili layoutlar incelenmelidir.

73 https://github.com/bulentsiyah/android_activity_yasam_dongusu Giris_ve_Kayit_islemleri Animasyonlu_Giris_i slemleri 3.c. Animasyonlu giriş işlemleri ve 3.Parti yazılımlar Uygulamalara 3.parti kütüphaneleri eklemek için eğer gradle üzerinden yapılacaksa build.gradle (Module:app) içerisine dependencies altında kütüphane sağlayıcının da belirteceği şekilde compile 'com.wrapp.floatlabelededittext:library:0.0.6' şeklinde kütüphane linki eklenerek uygulama dahil olması sağlanır. Eğer bu yapı bir jar dosyası ise önce jar dosyası ana proje klasörü içine taşınıyor, ardından File menüsü altında Project Structure seçilip sol menüden app ve açılan tab seçeneklerden de Dependencies seçilip, sağ taraftan jar dosyası seçilir. Bu seçim tamamlandığında jar dosyası yine gradle tarafından uygulamaya dahil edilmiş olur

74 Float Labeled EditText Bu kütüphane, edittext arayüz elemanı kullanılırken yazım alanı doldurulduğunda hint içeriği yukarı başlık bölümüne çekerek kullanıcıya hangi alanı doldurduğu bilgisi vermiş olur. Kütüphane gradle ile compile 'com.wrapp.floatlabelededittext:library:0.0.6' yazılarak uygulamaya dahil edilebilir.

Örnek kodlar: LoginActivity içinde Boolean floatlabelededittext=false; true yapılarak layoutlar incelenmelidir. 75

76 https://github.com/bulentsiyah/android_activity_yasam_dongusu Giris_ve_Kayit_islemleri Animasyonlu_Giris_i slemleri Android Circular Progress Button Kütüphane gradle ile compile 'com.github.dmytrodanylyk.circular-progress-button:library:1.1.3' yazılarak uygulamaya dahil edilebilir. Referans link https://github.com/dmytrodanylyk/circular-progress-button Örnek Kod: https://gist.github.com/bulentsiyah/65c9df223073261b334e8e298f0a1fae Circle Image View Kütüphane gradle ile compile 'de.hdodenhof:circleimageview:2.1.0' yazılarak uygulamaya dahil edilebilir. Ref erans link https://github.com/hdodenhof/circleimageview

77 AndroidViewAnimations Kütüphane gradle ile compile 'com.android.support:support-compat:25.1.1', compile 'com.daimajia.easing:library:2.0@aar', compile 'com.daimajia.androidanimations:library:2.3@aar' yazılarak uygulamaya dahil edilebilir. Referans link https://github.com/daimajia/androidviewanimations

78 Bunların haricinde SecretTextView https://github.com/matthewrkula/secrettextview, Android Working with XML Animations http://www.androidhive.info/2013/06/android-working-with-xml-animations/, Android Floating Action Button https://github.com/clans/floatingactionbutton 3.d. Splash ekranı ekleme ve geçişler arası bilgi aktarma (Bundle, Statik ve Receiver) Android Splash Screen

79 Splash screen uygulama her açıldığında bir kaç saniye görünen ve çoğunlukla uygulama ikonu ve başlığını içeren ekranlardır. Örnek kodlar: SplashScreen.java ve activity_splashscreen.xml incelenmelidir. https://github.com/bulentsiyah/android_activity_yasam_dongusu Giris_ve_Kayit_islemleri Animasyonlu_Giris_i slemleri

Activityler arası bilgi aktarma 80 Bilgi aktarma tamamıyla kullanım amacına göre değişmektedir. Örneğin sadece basit bir seçim sırası bilgisi aktarılacaksa bir statik değişken setlenip, diğer arayüzde bu setlenmiş değer üzerinden işlem yapılabilir. Bunun dışında eğer activityler arası bağ varsa bu aktarımlar Bundle ile de yapılabilir. Bahsedilen i ki yöntemde algoritmanıza göre karar vereceğiniz aktarım biçimleridir. Eğer iki activity arasında yakın geçiş yok ise ama bilgi aktarılması gerekiyorsa o zaman Receiverlar kullanılmalıdır. Örneğin tablar halinde bir birinden ayrılmış ekranlar mevcut, ve bu aktif ekranda ekstra dialoglar mevcut ve yapılan bir seçimle aslında tüm activityleri yakından ilgilendiren bir durum olduğunu düşünelim bu durumda Receiverlar ile aktarılan bilgi sayesinde tüm ekranlarda görünümler yenilenebilir.

81

82 Örnek kodlar: BilgiAktarilmaEkrani ve BilgiAktarilmaEkrani2 ve ilgili layout lar incelenmelidir. https://github.com/bulentsiyah/android_activity_yasam_dongusu Giris_ve_Kayit_islemleri Animasyonlu_Giris_i slemleri