slide1
Download
Skip this Video
Download Presentation
Muharrem Taç M2 Bilişim Gelecekonline

Loading in 2 Seconds...

play fullscreen
1 / 100

Muharrem Taç M2 Bilişim Gelecekonline - PowerPoint PPT Presentation


  • 283 Views
  • Uploaded on

Muharrem Taç M2 Bilişim Gelecekonline. Android Nedir. Android Nedir ?. Google’ın 5 Kasım 2007’de 34 şirket ile birlik olarak çalışmalarına başladığı mobil işletim sistemi projesidir. Şu an 65 şirket bu birliktedir.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Muharrem Taç M2 Bilişim Gelecekonline' - kateb


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Muharrem Taç

M2 Bilişim

Gelecekonline

slide3

Android Nedir ?

Google’ın 5 Kasım 2007’de 34 şirket ile birlik olarak çalışmalarına başladığı mobil işletim sistemi projesidir. Şu an 65 şirket bu birliktedir.

Bu birliğin adı Open Handset Alliance’dır ve web sitesi : http://www.openhandsetalliance.com

Android sadece bir işletim sistemi değildir.

Yazılım geliştirme platformu, SDK’sı, Eclipse Plugini, API’si ve Android Market ile birlikte dev bir ekosistemdir.

slide4

Android Nedir ?

Open Handset Alliance

slide5

Android Nedir ?

Pek çok cihaz, donanım,

Pek çok sensör,

Pek çok farklılaşmış sürüm,

Pek çok AR-GE projesi,

Pek çok uygulama mağazası,

Pek çok geliştirme ortamı, dili ve teknolojisi,

İçeren bir EKOSİSTEMDİR.

slide6

Android’in Özellikleri

Linuxkerneli

Uygulama çatısı

DalvikVirtualMachine (Java)

Webkit tabanlı dahili internet tarayıcısı

SQL Lite veritabanı

Video-Ses desteği (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

GSM telefon desteği

3B ve 2B gelişmiş grafikler, LG Real 3D ile 3 boyutlu cihazlar,

Bluetooth, NFC, EDGE, 3G, veWiFi(donanıma bağımlı)

Ön ve arka kamera, GPS, pusula ve akselerometre (ivmeölçer) (donanıma bağımlı)

Zengin uygulama geliştirme ortamı (emülatör, Eclipseplugin)

Android Market

Multitasking

Widget

Notification

slide7

Android’in Özellikleri

  • Handset layouts
    • The platform is adaptable to larger, VGA, 2D graphics library, 3D graphics library based on OpenGL ES 2.0 specifications, and traditional smartphone layouts.
  • Storage
    • SQLite, a lightweight relational database, is used for data storage purposes.
  • Connectivity
    • Android supports connectivity technologies including GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, NFC and WiMAX.
  • Messaging
    • SMS and MMS are available forms of messaging, including threaded text messaging and now Android Cloud To Device Messaging (C2DM) is also a part of Android Push Messaging service.
  • Multiple language support
    • Android supports multiple languages.[41]
  • Web browser
    • The web browser available in Android is based on the open-source WebKit layout engine, coupled with Chrome\'s V8 JavaScript engine. The browser scores 100/100 on the Acid3 test on Android 4.0, however does have some rendering issues.
slide8

Android’in Özellikleri

  • Java support
    • While most Android applications are written in Java, there is no Java Virtual Machine in the platform and Java byte code is not executed. Java classes are compiled into Dalvikexecutables and run on Dalvik, a specialized virtual machine designed specifically for Android and optimized for battery-powered mobile devices with limited memory and CPU. J2ME support can be provided via third-party applications.
  • Media support
    • Android supports the following audio/video/still media formats: WebM, H.263, H.264 (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-WB (in 3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3, MIDI, OggVorbis, FLAC, WAV, JPEG, PNG, GIF, BMP.[78]
  • Streaming media support
    • RTP/RTSP streaming (3GPP PSS, ISMA), HTML progressive download (HTML5 <video> tag). Adobe Flash Streaming (RTMP) and HTTP Dynamic Streaming are supported by the Flash plugin.[79] Apple HTTP Live Streaming is supported by RealPlayer for Mobile,[80] and by the operating system in Android 3.0 (Honeycomb).[45]
  • Additional hardware support
    • Android can use video/still cameras, touchscreens, GPS, accelerometers, gyroscopes, barometers, magnetometers, dedicated gaming controls, proximity and pressure sensors, thermometers, accelerated 2D bit blits (with hardware orientation, scaling, pixel format conversion) and accelerated 3D graphics.
slide9

Android’in Özellikleri

  • Multi-touch
    • Android has native support for multi-touch which was initially made available in handsets such as the HTC Hero. The feature was originally disabled at the kernel level (possibly to avoid infringing Apple\'s patents on touch-screen technology at the time).[81] Google has since released an update for the Nexus One and the Motorola Droid which enables multi-touch natively.[82]
  • Bluetooth
    • Supports A2DP, AVRCP, sending files (OPP), accessing the phone book (PBAP), voice dialing and sending contacts between phones. Keyboard, mouse and joystick (HID) support is available in Android 3.1+, and in earlier versions through manufacturer customizations and third-party applications.[83]
  • Video calling
    • Android does not support native video calling, but some handsets have a customized version of the operating system that supports it, either via the UMTS network (like the Samsung Galaxy S) or over IP. Video calling through Google Talk is available in Android 2.3.4 and later. Gingerbread allows Nexus S to place Internet calls with a SIP account. This allows for enhanced VoIP dialing to other SIP accounts and even phone numbers. Skype 2.1 offers video calling in Android 2.3, including front camera support.
slide10

Android’in Özellikleri

  • Multitasking
    • Multitasking of applications is available.[84]
    • Voice based features
    • Google search through voice has been available since initial release.[85] Voice actions for calling, texting, navigation, etc. are supported on Android 2.2 onwards.[86]
  • Tethering
    • Android supports tethering, which allows a phone to be used as a wireless/wired Wi-Fi hotspot. Before Android 2.2 this was supported by third-party applications or manufacturer customizations.[87]
  • Screen capture
    • Android natively supports the ability to capture a screenshot by method of pressing both the power and volume-down buttons at the same time on an Android device. This native support was first included within the Android 4.0 (Ice Cream Sandwich) update, which is first seen on the Galaxy Nexus smartphone.[88] Previously, Android did not feature native support for screen capturing which would have likely been due to security concerns. Furthermore, prior manufacturer and third-party customizations as well as using a PC connection (DDMS developer\'s tool) were the only known methods of capturing a screenshot on Android.
slide11

Android’in Özellikleri

System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices

Media Libraries - based on PacketVideo\'sOpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG

Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications

LibWebCore- a modern web browser engine which powers both the Android browser and an embeddable web view

SGL - the underlying 2D graphics engine

3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer

FreeType - bitmap and vector font rendering

SQLite - a powerful and lightweight relational database engine available to all applications

slide14

Versiyonlar

Versiyon 1 ve 1.1 ilk sürümler (Astro ve Bender ile başlıyor)

Versiyon 1.5 Cupcake

Versiyon 1.6 Donut

Versiyon 2.X (2.0, 2.1) Eclair

Versiyon 2.2 Froyo

Versiyon 2.3.X (2.3.1 - 2.3.7)Gingerbread

Versiyon 3.X (3.1,3,2) Honeycomb

Versiyon 4.X (4.0.1 - 4.0.3) Ice Cream Sandwich

slide15

Versiyonlar

http://developer.android.com/resources/dashboard/platform-versions.html

slide16

Versiyonlar

Android 1.1 Bender

Android 1.5 Cupcake

slide17

Versiyonlar

Android 2.0 ve 2.1

Eclair

Android 1.6 Donut

slide18

Versiyonlar

Android 2.3 Gingerbread

Android 2.2 Froyo

slide19

Versiyonlar

Android 3.0 Honeycomb

slide20

Versiyonlar

Android 4.0 Ice Cream Sandwich

slide22

Enteresan Uygulamalar

Android’in ve donanımın desteklediği özelliklere göre pusula, akseloremetre, GPS gibi özellikleri kullanan uygulamalar yaygınlaşmaktadır.

Özellikle “Layar” Augmented Reality konseptiyle bakılan yer hakkında görsel bilgiler vermektedir.

Bunun yanında pusulalar, Panoramio gibi konum bilgisine dayalı fotoğrafçılık uygulamaları, Google Maps API kullanan uygulamalar, Jedi ışın kılıcı, Zippo çakmak, her türden harekete duyarlı oyunlar vs. Android üzerinde çalışmakta ve geliştirilmektedir.

Sosyal ağ uygulamaları (Google Plus, Twitter, Facebook, Foursquare)

slide25

Android Uygulama Mağazaları

Android Market

Android Pazarı

slide26

Android Uygulama Mağazaları

Turkcell Uygulamalar

Samsung S-Andoid

slide29

Android Arayüzleri

HTC Sense

Samsung Touchwiz

Sony Timescape

slide30

3D API’ler

HTC 3D

LG 3D

slide32

Android Yazılım Geliştirme

Java ile Yazılım Geliştirme:

Google tarafından önerilen altyapıdır, Android’in içerisindeki uygulamaların pekçoğu Java ile yazılmıştır, Eclipse, Netbeans, IntelliJ Idea IDE’leri kullanılabilir,

HTML5 ile Yazılım Geliştirme:

Phonegap gibi sistemlerle uygulama içersinde HTML5 çalıştırmak mümkündür.

Adobe Flex ile Yazılım Geliştirme:

Adobe’nin Flash Builder aracı ile ActionScript kullanarak yazılım geliştirilebilir.

Mono for Android ile Yazılım Geliştirme:

.NET altyapısı ile C# dilinde yazılım geliştirilebilir.

slide33

Android Yazılımlarında Bileşenler

Aktiviteler(Activities):

Aktiviteler çalıştırılabilir kodun belirli kısımlarını oluşturan ve zamanın belirli bölgelerinde kullanıcı ile ve sistemle etkileşime geçerek gerekli veriyi sağlayan, sonunda da kullanılmadıkları zaman sistem tarafından sonlandırılan parçalardır.

Servisler (Services):

Servisler bilgisayarlardan da tanıdık olduğumuz arkaplanda çalışan ve uygulamanın bir parçası olan kısımlardır. Aygıt kapanana kadar arkaplanda hazır olarak çalışırlar.Genellikle kullanıcı arayüzü olarak sunulmazlar. Uygulamaların ihtiyacı olan verilerin ve hizmetlerin sağlanmasında kullanılırlar.

Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri-ve.html

slide34

Android Yazılımlarında Bileşenler

Broacast and Intent Receivers:

Broadcast bilinen broadcast uygulamaları gibi aygıtın temel mesajlarını algılayan kısımlardır. Düşük pil uyarısı yada zaman dilimi değiştirilmesi gibi olaylarda aygıt, uygulamaların tümünü bu durumlardan haberdar eder. Intent receivers ise belirli bir amaca göre bazı varolan uygulamalardan ve servislerden bilgi toplanmasıdır. Varolan bir uygulamayı kullanarak uygulama geliştirildiğinde bu tür olay yakalayıcılar kullanılır.

İçerik Sağlayıcılar(Content Provider):

Aygıt üzerindeki uygulamalar dosya sisteminde yada dosya sistemi üzerindeki SQLite veritabanı üzerinde uygulamaya ait verileri saklarlar. Diğer uygulamaların da belirli veri tiplerine uygun olarak bu verileri kullanabilmesi Content Provider ile sağlanır. Content provider uygulamalara bu verilere erişim için bazı metodlar sunar.

Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri-ve.html

slide35

Android SDK

EclipseAndroidPlugin

slide36

Android SDK İçeriği

Emülatörler,

Dökümanlar,

Örnek kodlar,

USB sürücüleri (usb_driver/android_winusb.inf),

Versiyonlar,

Güncelleme sihirbazı,

Araçlar…

slide38

Android SDK İçeriği

VirtualDevicesEmulator 1.1

slide39

Android SDK İçeriği

VirtualDevicesEmulator 1.5

slide40

Android SDK İçeriği

VirtualDevicesEmulator 1.6

slide41

Android SDK İçeriği

VirtualDevicesEmulator 2.0

slide42

Android SDK İçeriği

VirtualDevicesEmulator 2.1

slide43

Android SDK İçeriği

VirtualDevicesEmulator 2.2

slide44

Android SDK İçeriği

VirtualDevicesEmulator 2.3

slide45

Android SDK İçeriği

InstalledPackages

slide46

Android SDK İçeriği

AvailablePackages

slide50

AndroidEclipsePlugin

Eclipse ile Android üzerinde yazılım geliştirme, development, debugging , test ve deployment yapılmasına imkan veren plugindir.

EclipseHelp-> Install New Software yolu ile giderek aşağıdaki adres eklenir:

https://dl-ssl.google.com/android/eclipse/

slide52

AndroidEclipsePlugin

EclipseAndroidplugin şunları sağlar :

Dalvik Debug Monitor Server (DDMS)perspective,

Eclipse içinden Android SDK and AVD Manager bağlantısı,

AllocationTrackerview,

Devicesview,

Emulatorcontrolview,

File Explorer view,

Heapview,

LogCatview,

Resource Explorer view,

Threadsview ,

New Android Project Menu

slide53

AndroidEclipsePlugin

Dalvik Debug Monitor Server (DDMS)Perspective

slide54

AndroidEclipsePlugin

Eclipse’eAndroidPluginyüklenince workspace’de SDK tanımlaması yapılmadıysa bir ekran geliyor.

slide55

Yeni Android Projesi

Eclipse File -> New -> Other… Android -> Android Project

slide56

Yeni Android Projesi

Önceki versiyonlarda tek sayfada gerçekleşen proje oluşturma süreci sihirbaz halinde sayfalara bölünmüştür.

Project name : Proje adı

slide57

Yeni Android Projesi

Buildtarget : Android versiyonu, mutlaka seçiyoruz,

slide58

Yeni Android Projesi

Application Name : Android’in uygulamayı göreceği isim.

Package name : Uygulamanın kullanacağı paketlendirme, mecburi alan.

Create Activity : Uygulama oluşturulurken örnek activity oluşması sağlanabilir.

slide59

Yeni Android Projesi

Projemiz yaratıldı.

Klasörler şöyle :

src,

gen,

res.

----------------------------------------------

AndroidManifest.xml

ve

default.properties adında iki dosya var.

slide60

Yeni Android Projesi

Proje içerisinde bir de çalışmaya hazır Activity var. Bu haliyle çalıştırabiliriz.

slide61

Yeni Android Projesi

Proje üzerinde sağ tuş -> Run As -> AndroidApplication

slide62

Yeni Android Projesi

Projemizin çalışır hali. Tabii ki “Hello World”

slide63

Projedeki Önemli Dosyalar

AndroidManifest.xml

Activity adını verdiğimiz ekranların bilgisini, uygulama bazlı global bilgileri tutar. Uygulamamızın isteyeceği ayrıcalıklar da buradan tanımlanır.

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.m2bilisim.android"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

<activity

android:label="@string/app_name"

android:name=".MainActivity" >

<intent-filter >

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

slide64

Projedeki Önemli Dosyalar

res/layout/main.xml

Her bir Activity için görsel tasarım öğelerini içerir.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

</LinearLayout>

slide65

Projedeki Önemli Dosyalar

res/values/strings.xml

Mesaj metinlerinin tutulduğu dosyadır.

Activity’ler için düzenlenen xml’lerden android:text=“@string/hello” şeklinde kullanılabilir.

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello">Hello World, StartUp!</string>

<string name="app_name">tbd</string>

</resources>

res/values/ dizininde başka xml dosyaları tutarak iş bölümü yapabiliriz.

res/values/color.xml

  • <?xml version="1.0" encoding="utf-8"?>
  • <resources>
    • <color name="white">#fff</color>
    • <color name="black">#000</color>
    • <color name="gelecekonline_red">#d11517</color>
    • <color name="gelecekonline_gray">#323232</color>
    • <color name="gelecekonline_light_gray">#efefef</color>
  • </resources>
slide66

Activity

  • Bir aktivite 3 duruma sahip olabilir :
  • Aktif ya da çalışır durumda uygulama kullanıcıya odaklanmıştır ve kullanıcıdan gelecek verilere göre sonuçlar üretilir,
  • Bekleme modunda başka bir uygulama çalışmaya başlamış, uygulama arkaplana itilmiş fakat aynı şekilde çalışmaya devam etmektedir. Uygulama bekleme modunda düşük bellek durumlarında sistem tarafından yokedilebilir,
  • Durdurulmuş durumda uygulama tamamen çalışmaz durumdadır buna rağmen en son verilere sahiptir. Uygulamaya ayrılmış bellek sistem tarafından gerektiğinde kullanılabilir.

Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri-ve.html

slide67

Activity

Aktivite bir durumdan diğer duruma geçerken aşağıdaki metodları çalıştırır.

void onCreate(Bundle savedInstanceState)

void onStart()

void onRestart()

void onResume()

void onPause()

void onStop()

void onDestroy()

Kaynak : http://androidgelistir.blogspot.com/2010/07/android-ile-uygulamasnn-bilesenleri-ve.html

slide69

Activity

Android ekranlarının her biri bir android.app.Activity sınıfından extend olmak zorundadır.

Eventhandling için Listenerinterface’leriniimplemente etmeleri gerekir.

public class MainActivityextends Activity implements OnClickListener

slide70

Activity

  • Android ekranlarının her biri için layout tanımlamak gerekir.
  • Örnek :
  • res/layout/nextactivity.xml
  • Bir Activity’den diğer Activity’ye erişmek için, örneğin bir clickeventi içerisinden:
  • public void onClick(View v) {
    • Intent itemintent = new Intent(this, NextActivity.class);
    • startActivity(itemintent);
  • }
slide71

Intent

Intent kelime anlamı olarak niyet demektir. Android’de işler Intent’ler üzerinden yürür diyebiliriz. Bir Activity başlatmak, bir servis çalıştırmak, bir sisteme broadcast yapmak, broadcast dinlemek gibi işlemler için önce Intent oluşturulmalı daha sonra bu Intent başlatılmalıdır.

//Yeni activity acmak

Intent activityIntent = new Intent(getApplicationContext(), YeniActivity.class);

startActivity(activityIntent);

//Bir numara cevirmek

Intent telefonIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:05051110011"));

startActivity(telefonIntent);

//Web site baslatmak

Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://gomobil.in"));

startActivity(webIntent);

slide72

Layout

Layout dosyaları, Activity veya görsel elemanlar (View’lar) içersinde öğelerin nerede ve nasıl durması gerektiğini belirleyen şemalar gibi düşünülebilir. Activity’nin ne şekilde duracağı, içerisinde ne gibi öğelerin olacağı bilgisi xml dosyalarıyla belirlenir. Projedeki res dizini altında bulunan layout dizini içerisinde Activity veya View’lar için xml uzantılı dosyalar düzenlenir. Bu dosyaların içerisindeki bilgi Android tarafından okunarak Activity’ler veya View’lar üzerine yüklenir.

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

Buradaki main aslında layout dizinindeki main.xml adlı layout dosyasına karşılık gelir.

Activity’ler içerisinde çeşitli View’lar olabileceği gibi yazılımcı tarafından geliştirilmiş özel View’lar da Layout dosyalarında düzenlenebilir.

slide73

Layout

gen dizininde bulunan R.java dosyası; res dizininde bulunan layout dizinine eklenen her xml dosyasını otomatik olarak kendi içerisinde yaratmaktadır. Bu yöntem ile xml tasarım şema (layout) dosyalarına Java sınıflarından erişim mümkün olmaktadır.

slide74

Layout

AbsoluteLayout :Ekranüzerindehangigörselelemanınnerededuracağınıpikselpikselsabitler. Örneğinbirbutonunsoldan 20 piksel, üstten 20 pikselkoordinatlarındadurmasınıistersekAbsoluteLayoutkullanmalıyız.

LinearLayout : Bütüneklenengörselelemanları alt altaveyayanyanaçizgiselolarakdizer.

RelativeLayout : Görselöğelerinekrandaüst-sol, üst-sağ, üst-orta, dikey-orta, yatay -orta, taban-sol, taban-orta, taban-sol gibiekranboyununabağlıolmaksızınayarlanmasınısağlar.

TableLayout : Ekranöğelerinitablolarhalindegöstermekiçinkullanılabilenlayouttur. HerbirTableLayoutiçerisindeTableRow’larhalindetablosatırlarıoluşturulabilir.

FrameLayout : En basittürde layout sistemdir. İçerisineeklenengörselöğeleri sola dayalıolarakgösterirveeğerbirdenfazlaöğeeklersenizbunlarıüstüstegösterir. Resimdosyalarınınüzerineyazıeklemekiçinkullanılabilir. FrameLayoutyapısısekmeliekranyapımındadakullanılmaktadır.

slide75

View

  • Activity’lerdekullanılangörselyapılara View denilmektedir.
  • View’larListView, TextView, WebView, ScrollViewgibiçeşitlişekillerdeolabilirler.
        • ListView :Alt altadizilecekgörselöğelerigöstermedekullanılır. Java’nındiziyapılarınıdoğrudanekranabasabilmektedir.
        • TextView : Ekrandametiniçeriğigöstermedekullanılabilen View türüdür. Diğerpekçokprogramlamadilinde Label olarakgeçer.
        • TextView’larametingirişibirkaçyöntemleyapılabilir:
        • WebView : HTML içeriklerinive web sayfalarınıActivity’leriçerisindeaçabilenView’dır.
        • ScrollView : UzuniçeriklerinkaydırmaçubuğuileaşağıyadoğruinilerekgörüntülenmesinisağlayanView’dir. SözgelimiiçerisindeçoksayıdabilgininbulunduğubirListViewScrollViewiçerisindegösterilebilir. Böyleceekranasığmayanlistelerkullanıcıtarafındanaşağıyadoğrukaydırılarakgörüntülenebilir.
slide76

View

  • Activity’lerdekullanılangörselyapılara View denilmektedir.
  • View’larListView, TextView, WebView, ScrollViewgibiçeşitlişekillerdeolabilirler.
        • ListView :Alt altadizilecekgörselöğelerigöstermedekullanılır. Java’nındiziyapılarınıdoğrudanekranabasabilmektedir.
        • TextView : Ekrandametiniçeriğigöstermedekullanılabilen View türüdür. Diğerpekçokprogramlamadilinde Label olarakgeçer.
        • TextView’larametingirişibirkaçyöntemleyapılabilir:
        • WebView : HTML içeriklerinive web sayfalarınıActivity’leriçerisindeaçabilenView’dır.
        • ScrollView : UzuniçeriklerinkaydırmaçubuğuileaşağıyadoğruinilerekgörüntülenmesinisağlayanView’dir. SözgelimiiçerisindeçoksayıdabilgininbulunduğubirListViewScrollViewiçerisindegösterilebilir. Böyleceekranasığmayanlistelerkullanıcıtarafındanaşağıyadoğrukaydırılarakgörüntülenebilir.
slide77

View

  • Activity’lerdekullanılangörselyapılara View denilmektedir.
  • View’larListView, TextView, WebView, ScrollViewgibiçeşitlişekillerdeolabilirler.
        • ListView :Alt altadizilecekgörselöğelerigöstermedekullanılır. Java’nındiziyapılarınıdoğrudanekranabasabilmektedir.
        • TextView : Ekrandametiniçeriğigöstermedekullanılabilen View türüdür. Diğerpekçokprogramlamadilinde Label olarakgeçer.
        • TextView’larametingirişibirkaçyöntemleyapılabilir:
        • WebView : HTML içeriklerinive web sayfalarınıActivity’leriçerisindeaçabilenView’dır.
        • ScrollView : UzuniçeriklerinkaydırmaçubuğuileaşağıyadoğruinilerekgörüntülenmesinisağlayanView’dir. SözgelimiiçerisindeçoksayıdabilgininbulunduğubirListViewScrollViewiçerisindegösterilebilir. Böyleceekranasığmayanlistelerkullanıcıtarafındanaşağıyadoğrukaydırılarakgörüntülenebilir.
slide78

View

import android.app.Activity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.ListView;

public class Main extends Activity {

private ListView listView;

private String yazarlar[]={"Erol Dizdar","Egemen Mede","Selçuk Yavuz"};

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

listView =(ListView)findViewById(R.id.yazarlarView); listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , yazarlar));

}

}

slide79

View

  • WebView
  • public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webviewornek);
    • WebView webView = (WebView) findViewById(R.id.webview); webView.loadUrl("http://www.gelecekonline.com/mobile");
  • }
  • Aşağıdaki şekilde internet erişim izni alınmalıdır:
  • <uses-permission android:name="android.permission.INTERNET"/>
slide80

View (Form elemanları)

Kullanıcıdan veri almak için kullanılan yapılar da birer View’dır.

Mesela EditText, Button, RadioButton, DatePicker, Spinner, gibi çok sayıda form elemanı vardır ve bunlar da aslında View sınıfından türemiştir.

View’lar çeşitli event’ları listen edebilirler (dinleyebilirler) vardır.

Örneğin Button için OnClickListenerevent’ı vardır.

ListView’ınOnItemClickListenerevent’ı bulunmaktadır.

Bu listener’ları kullanabilmek için OnClickListenerInterface’inden dinamik sınıf yaratmak gereklidir. Örnek:

Button ornekButton = (Button)findViewById(R.id.ornekButton);

ornekButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

TextViewtextView = (TextView)findViewById(R.id.ornekText);

textView.setText("Butonatıklandı");

}

});

slide81

View (Form elemanları)

ListView için OnItemClickListenerInterface’i kullanılabilir.

listView.setOnItemClickListener(this);

public void onItemClick(AdapterView<?> adapterView, View view, int position, long id)

{

Toast.makeText(getApplicationContext(), ((TextView) view).getText(),

Toast.LENGTH_SHORT).show();

}

slide82

Dialoglar

Android’de çok sayıda iletişim kutusu seçeneği vardır.

Dialog : Mesaj kutusu çıkarır. Genişletilebilir ve özelleştirilebilir. Layout yüklenebilir.

AlertDialog : Uyarı mesajıdır. Tamam – iptal gibi görünümleri olabilir.

ProgressDialog : İşlem yapıldığında kullanılabilen mesaj kutusudur.

DatePickerDialog : Tarih seçim mesajı

TimePickerDialog : Zaman seçim mesaj kutusu

Custom Dialog : Özelleştirilmiş bir mesaj kutusudur. İçerisinde başka View’lar olabilir.

slide83

Dialoglar

Dialog : Mesaj kutusu çıkarır. Genişletilebilir ve özelleştirilebilir. Layout yüklenebilir.

final Dialog dialog = new Dialog(DialogTestActivity.this);

dialog.setTitle("Basit dialog");

dialog.show();

AlertDialog : Evet/hayır şeklinde mesaj kutusu çıkarır.

AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this);

builder.setMessage("Uygulamadançıkılsınmı?").

setCancelable(false).setPositiveButton("Evet",newDialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

finish();

}

}).setNegativeButton("Hayır",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

dialog.cancel();

}

});

AlertDialog alert= builder.create();

alert.show();

slide84

Dialoglar

AlertDialog : Liste şeklinde mesaj kutusu çıkarır.

final CharSequence[] items = {"Kirmızı", "Yeşil", "Mavi"};

AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this);

builder.setTitle("Pick a color");

builder.setItems(items, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int item) {

Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();

}

});

AlertDialog alert = builder.create();

alert.show();

slide85

Dialoglar

AlertDialog : Seçim listesi şeklinde mesaj kutusu çıkarır.

final CharSequence[] items = {"Kirmızı", "Yeşil", "Mavi"};

AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this);

builder.setTitle("Pick a color");

builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int item) {

Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();

}

});

AlertDialog alert = builder.create();

alert.show();

slide86

Menu

  • Activity içerisinde onPrepareOptionsMenu() metoduyla menu oluşturabiliyoruz.
  • publicbooleanonPrepareOptionsMenu(Menumenu) {
      • menu.add(0, 0, 1, R.string.BaseMenu);
  • menu.add(0, 1, 2, R.string.About);
  • returnsuper.onPrepareOptionsMenu(menu);
  • }
  • Seçilen menu elemanını onOptionsItemSelected(MenuItem item) metoduyla algılayabiliriz. Örnek :
  • public booleanonOptionsItemSelected(MenuItem item) {
  • switch (item.getItemId()) {
  • case 0:
  • finish();
  • case 1:
  • final CharSequence[] items = {"Kirmızı", "Yeşil", "Mavi"};
  • AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this);
  • builder.setTitle("Pick a color");
  • builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
  • public void onClick(DialogInterface dialog, int item) {
  • Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
  • }
  • });
  • AlertDialog alert = builder.create();
  • alert.show();
  • }
  • return false;
  • }
slide87

Theme

Android’in kendine ait temaları bulunmaktadır.

Default tema siyah zemin üzerine beyaz yazılar şeklindedir. Ama bu temanın alternatifleri vardır.

Bir activity’nin temasını değiştirmek için AndroidManifest.xml’de :

Beyaz zemin üzerine siyah yazılar için :

android:theme="@style/android:Theme.Light" tanımlaması yapabiliriz.

Şeffaf arkaplan için : android:theme="@style/android:Theme.Translucent“

Ekrana diyalog kutusu şeklinde Activity basmak için :

android:theme="@style/android:Theme.Dialog"

slide88

Theme – CustomTheme

Programcı isterse kendine ait temalar da oluşturabilir.

Bunu yapabilmek için /res/values içerisinde styles.xml adında bir dosya oluşturup tanımlamalarını bu dosyada yapar.

<resources>

<style name="Theme.Ntv" parent="android:Theme.Light">

<item name="android:windowBackground">@drawable/bg</item>

</style>

</resources>

Androidthemes.xml : http://goo.gl/P8hv1

Androidstyles.xml : http://goo.gl/d46Zf

slide89

Thread

Thread yönetimi iki şekilde yapılıyor:

Klasik yöntem ve AsnycTask ile

Klasik yöntem:

Activity’yi Runnable Interface’inden türetmek : implements Runnable

Bir Thread çalıştırmak :

Thread thread = new Thread(Main.this);

thread.start();

run() methodu yazmak :

public void run() {

                pi_string = Pi.computePi(800).toString();

                handler.sendEmptyMessage(0);

        }

Handler sınıfı içerisindeki handleMessage() ile buradan dönecek mesajı yakalamak:

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

pd.dismiss();

tv.setText(pi_string);

}

};

slide90

Thread - AscyncTask

AsnycTask ile asenkron işlem yapmak Google tarafından önerilen yöntemdir.

Bu yöntemde Activity içersinde InnerClass olarak AsyncTasksınıfından oluşturulan bir sınıf yazılır.

Örnek :

private class PiHesaplaTask extends AsyncTask<String, Void, Void>

Bu sınıfın execute metodu çağırılarak asenkron işlem başlatılır.

Örnek : new PiHesaplaTask().execute();

AsyncTask sınıfının içerisinde süreç ilk başladığı zaman onPreExecute() metodu aktifleşir. Bu metotta işlemin yapıdığına dair bir uyarı kutusu çıkarılabilir. Asenkron işlem doInBackground() metodu içerisinde gerçekleşir. onPostExecute()metodu ile işlem bittiğinde asenkron işlem sonuçlanır ve uyarı kutusu kapatılır.

Tam sınıf örneği:

private class PiHesaplaTask extends AsyncTask<String, Void, Void> {

private ProgressDialogprogressDialog;

protected void onPreExecute() {

progressDialog = ProgressDialog.show(MainAsyncTask.this, "Hesaplanıyor..", "Pi sayısıhesaplanıyor");

}

@Override

protected Void doInBackground(String... arg0) {

pitext = Pi.computePi(800).toString();

return null;

}

protected void onPostExecute(final Void unused) {

progressDialog.dismiss();

textView.setText(pitext);

}

}

slide91

Widget

  • Widget’lar uygulamaların masaüstünde çalışabilen kısımlarıdır. Wndget’ların da aynen Activity gibi Layout’ları olur.
  • AndroidManifest.xml dosyasına receiver olarak tanıtılırlar.
  • <receiver android:name=".Widget1" android:label="Widget1">
  • Intent-filter olarak android.appwidget.action.APPWIDGET_UPDATEeklenir.
  • AndroidManifest.xml dosyasında metadata ilavesi yapmak gereklidir. Ve metadata dosyasına widget tanımlama xml bilgisi eklenir.
  • <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget1" />
  • AndroidManifest.xml ‘de bir widget tanımlamak için gereken tüm tanımlama:
  • <receiver android:name=".Widget1" android:label="Widget1">
    • <intent-filter>
    • <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    • </intent-filter>
  • <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget1" />
  • </receiver>
slide92

Widget

Widget’ların hangi layout’u kullanacağı, boyutlarının ne olacağı gibi bilgiler için ayrı bir xml dosyası oluşturulur. Örnek widget1.xml

<?xml version="1.0" encoding="utf-8"?>

<appwidget-provider

xmlns:android="http://schemas.android.com/apk/res/android"

android:minWidth="50dp"

android:minHeight="72dp"

android:updatePeriodMillis="10000"

android:initialLayout="@layout/widget_layout"

android:label="Hello1"

/>

Buradaandroid:initialLayout="@layout/widget_layout" ile tanımlanan satır widget_layout.xml dosyasıdır.

Widget sınıfları android.appwidget.AppWidgetProvidersınıfından türetilir ve en önemli metodu onUpdate()metodudur.

slide93

Droiddraw

Android için görsel olarak GUI tasarımı yapmaya olanak tanıyan bir uygulamadır.

http://www.droiddraw.org/

Site üzerinde çalışan applet ya da indirilebilen Swing uygulaması ile XML olarak GUI çıktısı alınabilir.

slide94

MotodevStudio

Motorola tarafından Android geliştiricileri için çıkarılmış harika bir IDE’dir.

Çok sayıda örnek kod (snippet) içerir,

görsel programlamayı kolaylaştırmaktadır,

Mevcut Eclipse Plugin’ini geliştirmiştir,

slide99

Kaynakça:

http://wikipedia.org

http://www.android.com

http://developer.android.com

ad