Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net

Anasayfa - Makale - Pratik - Android Programlama Ders 17: Basit Bir Hesap Makinesi Oluşturuyoruz

Android Programlama Ders 17: Basit Bir Hesap Makinesi Oluşturuyoruz

27 Temmuz 2013 - 18:30
- Mobil, Pratik

 

Android Programlama derslerimizin 17. bölümünde sizlerle birlikte basit bir hesap makinesini oluşturmayı öğreneceğiz.

Hesap makinemiz iki tane rakamla dört işlem (artı, eksi, bölme ve çarpma) yapacaktır. Sonucu tam olarak bize verecektir.

 

Yeni proje oluşturalım:

Project name: P0017_SimpleCalculator
Build Target: Android 4.2
Application name: SimpleCalculator
Package name: tr.androidApp.simpleCalculator
Create Activity: MainActivity

 

main.xml’i açalım ve ekranı oluşturalım:

<?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”>
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:id=”@+id/linearLayout1″
android:layout_marginLeft=”10pt”
android:layout_marginRight=”10pt”
android:layout_marginTop=”3pt”>
<EditText
android:layout_weight=”1″
android:layout_height=”wrap_content”
android:layout_marginRight=”5pt”
android:id=”@+id/etNum1″
android:layout_width=”match_parent”
android:inputType=”numberDecimal”>
</EditText>
<EditText
android:layout_height=”wrap_content”
android:layout_weight=”1″
android:layout_marginLeft=”5pt”
android:id=”@+id/etNum2″
android:layout_width=”match_parent”
android:inputType=”numberDecimal”>
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:id=”@+id/linearLayout2″
android:layout_marginTop=”3pt”
android:layout_marginLeft=”5pt”
android:layout_marginRight=”5pt”>
<Button
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:layout_weight=”1″
android:text=”+”
android:textSize=”8pt”
android:id=”@+id/btnAdd”>
</Button>
<Button
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:layout_weight=”1″
android:text=”-”
android:textSize=”8pt”
android:id=”@+id/btnSub”>
</Button>
<Button
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:layout_weight=”1″
android:text=”*”
android:textSize=”8pt”
android:id=”@+id/btnMult”>
</Button>
<Button
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:layout_weight=”1″
android:text=”/”
android:textSize=”8pt”
android:id=”@+id/btnDiv”>
</Button>
</LinearLayout>
<TextView
android:layout_height=”wrap_content”
android:layout_width=”match_parent”
android:layout_marginLeft=”5pt”
android:layout_marginRight=”5pt”
android:textSize=”12pt”
android:layout_marginTop=”3pt”
android:id=”@+id/tvResult”
android:gravity=”center_horizontal”>
</TextView>
</LinearLayout>

Hesap makinemizde iki tane giriş alanı, dört tane buton ve çıkış alanı olacaktır. Yukarıdaki kodda EditText için inputType (Giriş tipi)  numberDecimal olarak belirledim. Bunun amacı giriş alanlarında sadece rakam ve virgül kabul edilmesidir.

TextView için gravity (ağırlık) metninin pozisyonu belirlenecek. Layout_gravity ile karıştırmayın. Layout_gravity’nin amacı TextView’un pozisyonunu ViewGroup’ta belirlemek.

Sonraki adımlar giriş alanlarının okunması, hangi butona basıldığının algılanması ve sonucun görüntülenmesidir. MainActivity.java dosyasını açıyoruz ve kodu yazıyoruz.

public class MainActivity extends Activity implements OnClickListener {

EditText etNum1;
EditText etNum2;

Button btnAdd;
Button btnSub;
Button btnMult;
Button btnDiv;

TextView tvResult;

String oper = “”;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// bileşenleri buluyoruz
etNum1 = (EditText) findViewById(R.id.etNum1);
etNum2 = (EditText) findViewById(R.id.etNum2);

btnAdd = (Button) findViewById(R.id.btnAdd);
btnSub = (Button) findViewById(R.id.btnSub);
btnMult = (Button) findViewById(R.id.btnMult);
btnDiv = (Button) findViewById(R.id.btnDiv);

tvResult = (TextView) findViewById(R.id.tvResult);

// işleticiyi belirliyoruz
btnAdd.setOnClickListener(this);
btnSub.setOnClickListener(this);
btnMult.setOnClickListener(this);
btnDiv.setOnClickListener(this);

}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
float num1 = 0;
float num2 = 0;
float result = 0;

// giriş alanlarının boş olup olmadığını kontrol ediyoruz
if (TextUtils.isEmpty(etNum1.getText().toString())
|| TextUtils.isEmpty(etNum2.getText().toString())) {
return;
}

// EditText’i okuyoruz ve değişkenlere değerler veriyoruz
num1 = Float.parseFloat(etNum1.getText().toString());
num2 = Float.parseFloat(etNum2.getText().toString());

// basılmış butonu buluyoruz ve ona göre işlemi gerçekleştiriyoruz
// oper değişkene işlemi yazdırıyoruz, çıkış alanında kullanacağız
switch (v.getId()) {
case R.id.btnAdd:
oper = “+”;
result = num1 + num2;
break;
case R.id.btnSub:
oper = “-“;
result = num1 – num2;
break;
case R.id.btnMult:
oper = “*”;
result = num1 * num2;
break;
case R.id.btnDiv:
oper = “/”;
result = num1 / num2;
break;
default:
break;
}

// çıkış alanı oluşturuyoruz
tvResult.setText(num1 + ” ” + oper + ” ” + num2 + ” = ” + result);
}
}

 

Projeyi kaydettiğimiz zaman karşımıza böyle bir uyarı ekranı çıkacaktır.

uyari

 

Bunun sebebi Türkçe karakterleri kullandık. Burada “Save as UTF-8″ seçiyoruz.

Yukarıdaki kodlamalarda verilen açıklamaları dikkatle okuyun. İlk başta giren değerleri okutuyoruz, basılan butonu buluyoruz, işlemi gerçekleştiriyoruz ve çıkış alanını dolduruyoruz. Basılan butonların işleticisi olarak Activitiy’i (etkileşim) kullanıyoruz.

Kaydedelim ve çalıştıralım.

hesap makinesi

Uygulamayı daha kullanışlı bir hale getirmek için bir menü oluşturalım. Menünün seçenekleri giriş ve çıkış alanlarını temizleyecek ve uygulamayı kapatacak. Seçeneklerin ismi Reset ve Quit.

Menü seçenekleri için iki tane sabit ID ekleyelim.

public class MainActivity extends Activity implements OnClickListener {

final int MENU_RESET_ID = 1;
final int MENU_QUIT_ID = 2;

EditText etNum1;

(sadece işaretlenmiş kodu ekliyorsunuz)

Menüyü oluşturmak ve işletmek için aşağıdaki kodu yazalım:

// menünün oluşturulması
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, MENU_RESET_ID, 0, “Reset”);
menu.add(0, MENU_QUIT_ID, 0, “Quit”);
return super.onCreateOptionsMenu(menu);
}

// menü seçeneklerinin işletilmesi
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case MENU_RESET_ID:
// alanları temizliyoruz
etNum1.setText(“”);
etNum2.setText(“”);
tvResult.setText(“”);
break;
case MENU_QUIT_ID:
// uygulamayı kapatıyoruz
finish();
break;
}
return super.onOptionsItemSelected(item);
}

Kaydedelim ve çalıştıralım. İki tane menü seçeneği oluşturulmalı:
Reset – tüm alanları temizliyor
Quit – uygulamayı kapatıyor

hesap makinesi menu

 

Dersin tam kodu:

package tr.androidApp.simpleCalculator;

 

import android.app.Activity;

import android.os.Bundle;

import android.text.TextUtils;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

 

public class MainActivity extends Activity implements OnClickListener {

 

EditText etNum1;

EditText etNum2;

 

Button btnAdd;

Button btnSub;

Button btnMult;

Button btnDiv;

 

TextView tvResult;

 

String oper = “”;

final int MENU_RESET_ID = 1;

final int MENU_QUIT_ID = 2;

 

 

/** Called when the activity is first created. */

// menünün oluşturulması

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// TODO Auto-generated method stub

menu.add(0, MENU_RESET_ID, 0, “Reset”);

menu.add(0, MENU_QUIT_ID, 0, “Quit”);

return super.onCreateOptionsMenu(menu);

}

 

// menü seçeneklerinin işletilmesi

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// TODO Auto-generated method stub

switch (item.getItemId()) {

case MENU_RESET_ID:

// alanları temizliyoruz

etNum1.setText(“”);

etNum2.setText(“”);

tvResult.setText(“”);

break;

case MENU_QUIT_ID:

// uygulamayı kapatıyoruz

finish();

break;

}

return super.onOptionsItemSelected(item);

}

 

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

 

// bileşenleri buluyoruz

etNum1 = (EditText) findViewById(R.id.etNum1);

etNum2 = (EditText) findViewById(R.id.etNum2);

 

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

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

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

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

 

tvResult = (TextView) findViewById(R.id.tvResult);

 

// işleticiyi belirliyoruz

btnAdd.setOnClickListener(this);

btnSub.setOnClickListener(this);

btnMult.setOnClickListener(this);

btnDiv.setOnClickListener(this);

 

}

 

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

float num1 = 0;

float num2 = 0;

float result = 0;

 

// giriş alanlarının boş olup olmadığını kontrol ediyoruz

if (TextUtils.isEmpty(etNum1.getText().toString())

|| TextUtils.isEmpty(etNum2.getText().toString())) {

return;

}

 

// EditText’i okuyoruz ve değişkenlere değerler veriyoruz

num1 = Float.parseFloat(etNum1.getText().toString());

num2 = Float.parseFloat(etNum2.getText().toString());

 

// basılmış butonu buluyoruz ve ona göre işlemi gerçekleştiriyoruz

// oper değişkene işlemi yazdırıyoruz, çıkış alanında kullanacağız

switch (v.getId()) {

case R.id.btnAdd:

oper = “+”;

result = num1 + num2;

break;

case R.id.btnSub:

oper = “-“;

result = num1 – num2;

break;

case R.id.btnMult:

oper = “*”;

result = num1 * num2;

break;

case R.id.btnDiv:

oper = “/”;

result = num1 / num2;

break;

default:

break;

}

 

// çıkış alanı oluşturuyoruz

tvResult.setText(num1 + ” ” + oper + ” ” + num2 + ” = ” + result);

}

}

 

Gelecek dersimizde View nesnelerinin animasyonlarını nasıl oluşturacağımızı öğreneceğiz.

 

 

Etiketler: Android programlamaEclipseEditTextgravityinputTypeLayout_gravitynumberDecimalQuitresetSave as UTF-8
PaylaşPaylaşTweetYollaPaylaş
Victor Cuiumju

Victor Cuiumju

Yorumlar 2

  1. Mehmet Ali Can says:
    12 yıl önce

    Ben anlamıyorum siz Eclipse kullanıyorsunuz değil mi? Bende Project falan yok main.xml de yok :(

    Yanıtla
  2. Vitiok Cuiumjik says:
    12 yıl önce

    Eclipse kullaniyoruz.Ilk derslerde eclipse calisma ortami ayarliyoruz.

    Yanıtla

Yorum Yap Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

RSS Technopat Sosyal

  • Tarayıcı önerisi
  • iPhone 6s SIM kartsız PC'ye nasıl bağlanır?
  • PUBG için görev arkadaşı
  • Minguzzi katilinin yazdığı mektup ortaya çıktı
  • S25 Ultra vs iPhone 17 Pro Max vs Xiaomi 17 Pro Max vs Google Pixel 10 Pro XL
  • ZAU EA App CD Key 6 TL!
  • Virus programi onerisi
  • Ucuzgames, sağlamlisans ve fenixoyun güvenilir mi?
  • 5 bin TL'ye palm grip büyük mouse önerisi
  • Fenixoyun güvenilir mi?

Technopat Video

Şu an oynayan

Şarj etmeyi unutturuyor! vivo V60 Lite inceleme

vivo v60 lite

Şarj etmeyi unutturuyor! vivo V60 Lite inceleme

Haber
Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Akıllı Saat
Huawei Watch GT 6 Pro

Apple’ı 20’ye katlayan saat! Huawei Watch GT 6 Pro incelemesi

Akıllı Saat

Teknoloji tutkunu Technopatların ortak adresi: Technopat.net!

Güncel teknoloji, internet, donanım, yazılım, oyun ve daha fazlası haber, makale ve videolar ile Technopat’ta sizlerle.


01010100 01100101 01100011 01101000 01101110 01101111 01110000 01100001 01110100

Kategoriler

  • Yapay Zeka
  • Ev Teknolojileri
  • Makale
  • Video

Sosyal Medya

Bağlantılar

  • Hakkında
  • Haber
  • Video
  • Sosyal
  • Çerez Politikası
© 2011-2025 Technopat. Tüm Hakları Saklıdır.
Netse
Çerez Onayı
Web sitemizi ziyaret ettiğinizde, kullanıcı deneyiminizi daha iyi hale getirmek, hizmetlerimizi size daha etkin bir şekilde sunabilmek için çerezler (cookies) ve benzeri araçlar kullanıyoruz. Çerezler, internet sitesinin düzgün çalışmasını sağlamak, içeriği kişiselleştirmek, sosyal medya özellikleri sağlamak ve trafik analizi yapmak için kullanılan küçük metin dosyalarıdır. Çerezleri nasıl kullandığımız ve kişisel verilerinizi nasıl işlediğimiz hakkında daha fazla bilgi almak için çerez politikamızı ve kişisel veri politikamızı inceleyebilirsiniz.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, sadece kullanıcının açıkça talep ettiği belirli bir hizmetin kullanılmasını sağlama amacıyla veya iletişimin elektronik iletişim ağı üzerinden iletilmesinin tek amacıyla yasal olarak kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından istenmeyen tercihlerin depolanması yasal amacıyla gereklidir.
İstatistikler
Sadece istatistiksel amaçlarla kullanılan teknik depolama veya erişim. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Pazarlama
Teknik depolama veya erişim, reklam gönderimi için kullanıcı profilleri oluşturmak veya kullanıcıyı bir web sitesinde veya birden fazla web sitesinde benzer pazarlama amaçları için takip etmek amacıyla gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri yönet
{title} {title} {title}
Onayı Yönet
En iyi deneyimleri sunmak için, cihaz bilgilerini saklamak ve/veya bunlara erişmek amacıyla çerezler gibi teknolojiler kullanıyoruz. Bu teknolojilere izin vermek, bu sitedeki tarama davranışı veya benzersiz kimlikler gibi verileri işlememize izin verecektir. Onay vermemek veya onayı geri çekmek, belirli özellikleri ve işlevleri olumsuz etkileyebilir.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, abone veya kullanıcı tarafından açıkça talep edilen belirli bir hizmetin kullanılmasını sağlamak veya bir elektronik iletişim ağı üzerinden bir iletişimin iletimini gerçekleştirmek amacıyla meşru bir amaç için kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından talep edilmeyen tercihlerin saklanmasının meşru amacı için gereklidir.
İstatistik
Sadece istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Sadece anonim istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Mahkeme celbi, İnternet Hizmet Sağlayıcınızın gönüllü uyumu veya üçüncü bir taraftan ek kayıtlar olmadan, yalnızca bu amaçla depolanan veya alınan bilgiler genellikle kimliğinizi belirlemek için kullanılamaz.
Pazarlama
Teknik depolama veya erişim, reklam göndermek için kullanıcı profilleri oluşturmak veya benzer pazarlama amaçları için kullanıcıyı bir web sitesinde veya birkaç web sitesinde izlemek için gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri görüntüle
{title} {title} {title}
Sonuç bulunamadı
Bütün Sonuçları Göster
  • Giriş
  • Teknoloji Haberleri
  • Sosyal
  • Video
  • Tavsiyeler
  • İncelemeler
    • Video İncelemeler
  • Güvenlik
  • Oyun
  • Makale
    • Pratik
    • Yazar Köşeleri

© 2025 Technopat
Sorularınız için Technopat Sosyal