Muharrem Taç
Download
1 / 100

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


  • 278 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

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.

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.


Android Nedir ?

Open Handset Alliance


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.


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


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.


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.


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.


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.


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


Android Mimarisi



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


Versiyonlar

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


Versiyonlar

Android 1.1 Bender

Android 1.5 Cupcake


Versiyonlar

Android 2.0 ve 2.1

Eclair

Android 1.6 Donut


Versiyonlar

Android 2.3 Gingerbread

Android 2.2 Froyo


Versiyonlar

Android 3.0 Honeycomb


Versiyonlar

Android 4.0 Ice Cream Sandwich



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)




Android Uygulama Mağazaları

Android Market

Android Pazarı


Android Uygulama Mağazaları

Turkcell Uygulamalar

Samsung S-Andoid




Android Arayüzleri

HTC Sense

Samsung Touchwiz

Sony Timescape


3D API’ler

HTC 3D

LG 3D


Android Yazılım Geliştirme


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.


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


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


Android SDK

EclipseAndroidPlugin


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…


Android SDK İçeriği

VirtualDevices


Android SDK İçeriği

VirtualDevicesEmulator 1.1


Android SDK İçeriği

VirtualDevicesEmulator 1.5


Android SDK İçeriği

VirtualDevicesEmulator 1.6


Android SDK İçeriği

VirtualDevicesEmulator 2.0


Android SDK İçeriği

VirtualDevicesEmulator 2.1


Android SDK İçeriği

VirtualDevicesEmulator 2.2


Android SDK İçeriği

VirtualDevicesEmulator 2.3


Android SDK İçeriği

InstalledPackages


Android SDK İçeriği

AvailablePackages


Android SDK İçeriği

Settings


Android SDK İçeriği

About


AndroidEclipsePlugin


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/


AndroidEclipsePlugin


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


AndroidEclipsePlugin

Dalvik Debug Monitor Server (DDMS)Perspective


AndroidEclipsePlugin

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


Yeni Android Projesi

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


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ı


Yeni Android Projesi

Buildtarget : Android versiyonu, mutlaka seçiyoruz,


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.


Yeni Android Projesi

Projemiz yaratıldı.

Klasörler şöyle :

src,

gen,

res.

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

AndroidManifest.xml

ve

default.properties adında iki dosya var.


Yeni Android Projesi

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


Yeni Android Projesi

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


Yeni Android Projesi

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


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>


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>


Projedeki Önemli Dosyalar

res/values/strings.xml

Mesaj metinlerinin tutulduğu dosyadır.

Activity’ler için düzenlenen xml’lerden android:[email protected]/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>


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


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



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


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);

  • }


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);


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.


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.


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.


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.


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.


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.


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));

}

}


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"/>


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ı");

}

});


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();

}


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.


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();


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();


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();


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;

  • }


  • 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"


    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


    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);

    }

    };


    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);

    }

    }


    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>


    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.


    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.


    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,


    MotodevStudio


    Android Market’e Uygulama Gönderme


    Android Market’e Uygulama Gönderme


    Android Market’e Uygulama Gönderme


    Kaynakça:

    http://wikipedia.org

    http://www.android.com

    http://developer.android.com



    ad