• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 8/2/2020 11:38:31 PM'Basit' Yazılım Dili
  • 6/25/2020 3:18:13 PMderleme hatası
  • 12/11/2017 4:49:15 PMWindows Hizmeti Hk.
  • 4/23/2016 12:55:33 AMC programlama 2 oyun

Popüler Sorular

  • 5/27/2012 5:49:50 AMAsp.Net ile Date time alana veri ekleyemiiyorum ?
  • 4/2/2012 12:45:18 AM.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 5/12/2012 8:44:49 AMAcil Yardım
  • 5/27/2012 1:46:51 PMveri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LibreOffice
  • LINQ
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

Android - Hesap Makinesi Uygulaması

Yeni öğrendiğimiz programlama dillerinde ilk uygulamalardan biri olarak hesap makinesi yapmaya alıştık şimdiye kadar. Bende bu tabuyu yıkmak istemedim açıkçası. Şimdi gelin Android Hesap Makinesi Uygulamasının nasıl yapıldığını hep birlikte inceleyelim.

02.10.2012

Yazar: Barış Arıburnu (Google+)

Kategori: Android

4036

 

Başlamadan önce vurgulamak istediğim bir bölüm var. Kodlama aşamasında değil ama tasarım aşamasında çok uğraştım. Özellikle buton nesnesine arka plan verdiğimde karşılaştığım sorunu çözmek için çok uğraştım. Karşılaştığım soruna nasıl çözüm bulduğumu Custom Button Oluşturma başlığı altında detaylı bir biçimde değindim.

Öncelikle neyi gerçekleştirmek istiyoruz? Nasıl bir tasarım düşünüyoruz? Ben tasarımı hazırladım. Aslında tasarım emulator de yer alan tasarıma neredeyse birebir benziyor :) Ama tabi bir kaç yerinde oynama yaptım. Daha da işlevsel hale getirebiliriz istersek bunu. Lafı fazla uzatmadan örnek tasarımı paylaşayım ben.

Sizlerde kendinize özel olarak bir tasarım çıkarabilirsiniz tabi ki. Şimdi bu tasarım üzerinden işlemlerimize başlayabiliriz. Hem kafa karışıklığını önlemek hemde anlatım sırasında kolaylık sağlaması açısından yaptığım işlemleri metot metot ayırdım.

 

 

Öncelikle form üzerine eklediğimiz nesnelerle işlem yapabilmek için bu nesnelere erişim sağlamamız gerekecek. Form üzerindeki nesnelere erişim işlemlerini yapmadan önce, bu nesneler için global değişkenler tanımlıyoruz.

 Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btnBol, btnCarp, btnCikar, btnTopla, btnEsittir,
btnNokta, btnTemizle;
TextView txtSonuc, txtDurum;
int oldNum = 0;

Form üzerindeki nesnelerin ID değerlerini kullanarak,  Button ve TextView nesnesinden türetmiş olduğumuz nesnelere atama işlemini gerçekleştiriyoruz. Bu işlemi onCreate fonksiyonu altında yapıyoruz.

 btn0 = (Button)findViewById(R.id.btn0);
btn1 = (Button)findViewById(R.id.btn1);
btn2 = (Button)findViewById(R.id.btn2);
btn3 = (Button)findViewById(R.id.btn3);
btn4 = (Button)findViewById(R.id.btn4);
btn5 = (Button)findViewById(R.id.btn5);
btn6 = (Button)findViewById(R.id.btn6);
btn7 = (Button)findViewById(R.id.btn7);
btn8 = (Button)findViewById(R.id.btn8);
btn9 = (Button)findViewById(R.id.btn9);
btnBol = (Button)findViewById(R.id.btnBol);
btnCarp = (Button)findViewById(R.id.btnCarp);
btnCikar = (Button)findViewById(R.id.btnCikar);
btnTopla = (Button)findViewById(R.id.btnTopla);
btnEsittir = (Button)findViewById(R.id.btnEsittir);
btnTemizle = (Button)findViewById(R.id.btnTemizle);
txtSonuc = (TextView)findViewById(R.id.txtSonuc);
txtDurum = (TextView)findViewById(R.id.txtDurum);

txtDurum nesnesi; Delete butonunun sol yanındaki nesnemiz, txtSonuc nesnesi ise bu iki nesnenin üzerinde yer alan nesnemiz.

Form üzerine eklediğimiz nesneleri, java dosyalarımız içinde erişebilir hale getirdik. Peki bu nesnelerin click olayı etkin hale geldiğinde bunu nasıl anlayacağız? Bu işlemi nesneleri dinleyerek gerçekleştireceğiz ama onun öncesinde dinleme işlemini yapabilmemiz için class genişletmemiz gerekecek.

 public class Calculator extends Activity implements OnClickListener

Şimdi sıra dinleme olayını gerçekleştirmeye geldi. Her nesnemiz için tek tek dinleme gerçekleştirmemiz gerekecek. Dinleme işlemini setOnClickListener metodu ile yapacağız.

 btn0.setOnClickListener(this);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
btn8.setOnClickListener(this);
btn9.setOnClickListener(this);
btnTemizle.setOnClickListener(this);
btnBol.setOnClickListener(this);
btnTopla.setOnClickListener(this);
btnCikar.setOnClickListener(this);
btnCarp.setOnClickListener(this);
btnEsittir.setOnClickListener(this);

Tamamdır nesnelerimizi dinliyoruz. Dinliyoruz ama dinlediğimiz bu nesneleri bir de yakalamak gerekmez mi? Hangi nesnenin kullanılması gerektiğini anlamak için onClick fonksiyonumuzu yazıyoruz.

 public void onClick (View yakala){
switch (yakala.getId()){
case R.id.btn0:
txtSonuc.setText(txtSonuc.getText() + "0");
break;
case R.id.btn1:
txtSonuc.setText(txtSonuc.getText() + "1");
break;
case R.id.btn2:
txtSonuc.setText(txtSonuc.getText() + "2");
break;
case R.id.btn3:
txtSonuc.setText(txtSonuc.getText() + "3");
break;
case R.id.btn4:
txtSonuc.setText(txtSonuc.getText() + "4");
break;
case R.id.btn5:
txtSonuc.setText(txtSonuc.getText() + "5");
break;
case R.id.btn6:
txtSonuc.setText(txtSonuc.getText() + "6");
break;
case R.id.btn7:
txtSonuc.setText(txtSonuc.getText() + "7");
break;
case R.id.btn8:
txtSonuc.setText(txtSonuc.getText() + "8");
break;
case R.id.btn9:
txtSonuc.setText(txtSonuc.getText() + "9");
break;
case R.id.btnTemizle:
txtDurum.setText("");
txtSonuc.setText("");
break;
case R.id.btnBol:
getSonuc(1);
break;
case R.id.btnTopla:
getSonuc(2);
break;
case R.id.btnCikar:
getSonuc(3);
break;
case R.id.btnCarp:
getSonuc(4);
break;
case R.id.btnEsittir:
getSonuc(5);
break;
}
}

Yakalama işlemimiz de bu kadar işte. Dikkat ederseniz burada kendi oluşturmuş olduğumuz getSonuc fonksiyonunu çağırdık.  Bu fonksiyon da yapılan işlemler ise şu şekilde;

public void getSonuc(int num){
if(txtSonuc.getText().toString().equals(""))
{
Toast.makeText(getApplicationContext(), "Kullanıcı Hatası!", Toast.LENGTH_SHORT).show();
}
else
{
if(txtDurum.getText().toString().equals(""))
{
txtDurum.setText(txtSonuc.getText());
txtSonuc.setText("");
oldNum = num;
}
else
{
switch (oldNum)
{
case 1:
txtDurum.setText(String.valueOf(Float.parseFloat(txtDurum.getText().toStr ing())/Float.parseFloat(txtSonuc.getText().toString())));
txtSonuc.setText("");
if(num == 5) sonMu();
else oldNum = num;
break;
case 2:
txtDurum.setText(String.valueOf(Float.parseFloat(txtDurum.getText().toStr ing())+Float.parseFloat(txtSonuc.getText().toString())));
txtSonuc.setText("");
if(num == 5) sonMu();
else oldNum = num;
break;
case 3:
txtDurum.setText(String.valueOf(Float.parseFloat(txtDurum.getText().toStr ing())-Float.parseFloat(txtSonuc.getText().toString())));
txtSonuc.setText("");
if(num == 5) sonMu();
else oldNum = num;
break;
case 4:
txtDurum.setText(String.valueOf(Float.parseFloat(txtDurum.getText().toStr ing())*Float.parseFloat(txtSonuc.getText().toString())));
txtSonuc.setText("");
if(num == 5) sonMu();
else oldNum = num;
break;
}
}
}}

getSonuc fonksiyonunda, int tipinde bir parametre istedik. Bu parametreyle işlem değerimizi (toplama, çıkarma vs) belirledik. Hesap makinemizin ideal işlem sırasını takip ederek hesaplama işlemlerinin yapıldığı ve hata kontrollerinin sağlandığı getSonuc fonksiyonumuz içerisinde de yine kendi oluşturmuş olduğumuz sonMu fonksiyonunu kullandık.

 public void sonMu()
{
oldNum = 0;
txtSonuc.setText(txtDurum.getText());
txtDurum.setText("");
}

sonMu fonksiyonumuz herhangi bir parametre almıyor ve geriye de bir değer döndürmüyor. Bu fonksiyonu kullanmaktaki amacımız, zincirleme işlemlerin Eşittir (=) butonu ile son kez işlem görmesini sağlamak ve hesap makinesini default hale getirmekti.

Basit şekilde Android Hesap Makinesinin nasıl yapıldığını, yapılırken hangi adımların izlendiğini klavyem el verdiğince sizlere aktarmaya çalıştım. Bu yazımızda yapımını anlattığımız hesap makinesi uygulamasını telefonuna kurmak isteyen arkadaşlar için .apk dosyasını da merak edenler için paylaşıyorum.

Hesap Makinesi Uygulaması (Android) Dersinin Örnekleri: Calculator.apk (Buradan İndirin)

Barış Arıburnu

Yazılım Mühendisi

barisariburnu@gmail.com

www.barisariburnu.com

Yazar Hakkında

Barış Arıburnu

Barış Arıburnu

barisariburnu.com

Üniversite yıllarını tamamen kişisel ve mesleki gelişime adamış yegane bilim genci olarak görüyorum kendimi. Hayat amaçlarının ulaşılması zor olduğuna ancak başarılmasının imkansız olmadığına inanırım. Kişilerin amaçlarını gerçekleştirmeleri için, öğrenme yolunda küçük de olsa bir engeli kaldırmalarını sağlamak düşüncesiyle buradayım.

Sosyal Medya

ORANLAR

  • 4036izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Merhaba, ellerinize sağlık çok yardımcı ol...
  • Merhaba Bu uygulama örneğinden ASP.net ...
  • Hocam Link başka sayfaya yönlendiriyor.

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 123823
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 70897
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 51538
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ