JavaveAndroidHakkında

Android Yazılım geliştirme konusunda sürekli bilgi akışı sağlayan, soru-cevaplar ile öğrenme gerçekleştirmeyi amaçlayan bir eğitim süreci planlıyoruz.

android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Ekim 2015 Perşembe

20:00

ANDROID VE JAVA'DA TEMEL KAVRAMLAR-1



       Uzun bir aradan sonra tekrar sizlerle birlikteyiz. developer.android.com adresindeki kaynakların tercümesini hazırlarken aynı anda android ve java dünyasına ait temel kavramlar hakkında bilgilendirme yapmamız gerekiyor. Lafı çok fazla uzatmadan konumuza giriş yapalım..

       Java Hakkında 

       Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen (yorumlanan-interpreted) bir dildir.
Java, Sun Microsystems'den James Gosling tarafından geliştirilen bir programlama dilidir (Sun Microsystem'in şu anda Oracle Corporation ile bağlı ortaklığı bulunmaktadır) ve 1995 yılında Sun Microsystems'in çekirdek bileşeni olarak piyasaya sürülmüştür. Bu dil C ve C++'dan birçok sözdizim türetmesine rağmen bu türevler daha basit nesne modeli ve daha az düşük seviye olanaklar içerir. Java uygulamaları bilgisayar mimarisine bağlı olmadan herhangi bir Java Virtual Machine (JVM)'de çalışabilen tipik bytecode'dur (sınıf dosyası).
Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir düzlem dili olarak düşünülmüştü. Ancak düzlem bağımsızlığı özelliği ve tekbiçim kütüphane desteği C ve C++'tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunduğundan, hemen her yerde kullanılmaya başlanmıştır. 

Bir Java yazılımı şu şekilde geliştirilir;
  • Yazılımcı ve bilgisayar mühendisleri Java kodunu yazar.
  • Bu kod bir Java derleyicisi ile derlenir. Sonuçta "bytecode" adı verilen bir tür sanal makine kodu ortaya çıkar. Düzlem bağımsızlığını sağlayan bytecode'dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde çalışabilmektedir.
  • Bu bytecode Java Sanal Makinesi (İng., Java Virtual Machine) tarafından işletilir. Bu aşama, her bir bytecode komutunun teker teker yorumlanması ile icra edilebileceği gibi, anında derleme kullanılarak da gerçekleştirilebilir.

         Java Sözdizimi

// MerhabaDünya.java
 public class MerhabaDünya{
     public static void main(String[] args) {
         System.out.println("Merhaba Dünya!");
     }
 }

       Android Hakkında   

        AndroidGoogleOpen Handset Alliance ve özgür yazılım topluluğu tarafından geliştirilmiş olan, Linux tabanlı, mobil cihaz ve cep telefonları için geliştirilmekte olan, açık kaynak kodlu bir mobil ücretsiz bir işletim sistemidir. Sistem açık kaynak kodlu olsa da, ufak ama çok önemli kısmın google tarafından kodları kapalıdır, google bu kısmın kendisi dışında ulaşılmasını istememektedir. Desteklenen uygulama uzantısı ".apk"dir. Google tarafından ücretsiz olmasının sebebi, sistemin daha hızlı ve çabuk gelişmesi, birçok popüler marka tarafından kullanılması ve bu sayede reklamlarını daha fazla kişiye ulaşmasını sağlamaktır. Google bir reklam firmasıdır, reklam alarak para kazanır, android sistemi üzerinde çalışan Google Play marketteki oyun ve uygulamalar üzerinde aldığı reklamları yayınlamaktadır, bu şekilde daha fazlasını kazanmaktadır.
       Android, aygıtların fonksiyonelliğini genişleten uygulamalar yazan geniş bir geliştirici grubuna sahiptir. Android için halihazırda 1 milyondan fazla uygulama bulunmaktadır. Google Play Store ise, Android işletim sistemi uygulamalarının çeşitli sitelerden indirilebilmesinin yanı sıra, Google tarafından işletilen kurumsal uygulama mağazasıdır. Geliştiriciler, ilk olarak aygıtı, Google'ın Java kütüphanesi aracılığıyla kontrol ederek Java dilinde yazmışlardır.
       Android, Linux çekirdeği üzerine inşa edilmiş bir mobil işletim sistemidir. Bu sistem ara katman yazılımı, kütüphaneler ve API C diliyle yazılmıştır. Uygulama yazılımları ise, Apache harmony üzerine kurulu Java-uyumlu kütüphaneleri içine alan uygulama iskeleti üzerinden çalışmaktadır. Android, derlenmiş Java kodunu çalıştırmak için dinamik çevirmeli (JIT) Dalvik sanal makinesini kullanır ve cihazların fonksiyonelliğini artıran uygulamaların geliştirilmesi için çalışan geniş bir programcı-geliştirici çevresine sahiptir. Google aynı zamanda işletim sistemindeki hataları bulan kullanıcıları para ödülü ile ödüllendirmektedir.

Soru ve Görüşleriniz için: AndroidVeJava

13 Şubat 2015 Cuma

Android - Menu Kavramı ListView veya GridView'de Yığın Contextual Actions Aktif Etmek - 6

00:44

ListView veya GirdView'de Yığın Contextual Actions Aktif Etmek


    Eğer ListView veya GridView içinde item setiniz var ise ve kullanıcının yığın işlemleri (batch actions) gerçekleştirmesini istiyorsanız şunları yapmalısınız;

  • AbsListView.MultiChoiceModeListener() metodunu arayüze uygulamalı ve bunu setMultiChoiceModeListener() metodu ile view gruba ayarlamalısınız. Listener's dönüş metodunda, contextual action bar için, action itemlere yapılan tıklamalara verilecek cevap işlemleri belirleyebilir ve diğer ActionMode.Callback arayüzünden miras alınan(inherited)dönüş metotlarını işleme alabilirsiniz.
  • setChoiceMode() metodunu CHOICE_MODE_MULTIPLE_MODAL parametresi ile çağırın.

Örnek Kod:



ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {

    @Override
    public void onItemCheckedStateChanged(ActionMode mode, int position,
                                          long id, boolean checked) {
        // Here you can do something when items are selected/de-selected,
        // such as update the title in the CAB
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        // Respond to clicks on the actions in the CAB
        switch (item.getItemId()) {
            case R.id.menu_delete:
                deleteSelectedItems();
                mode.finish(); // Action picked, so close the CAB
                return true;
            default:
                return false;
        }
    }

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Inflate the menu for the CAB
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.context, menu);
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        // Here you can make any necessary updates to the activity when
        // the CAB is removed. By default, selected items are deselected/unchecked.
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        // Here you can perform updates to the CAB due to
        // an invalidate() request
        return false;
    }
});

    Hepsi bu kadar. Şimdi kullanıcı ne zaman uzun tıklama ile listeden bir item seçer ise, sistem onCreateActionMode() metodun çağıracak ve tanımlanmış olan işlemler ile birlikte contextual aciton bar görüntülenecektir. Contextual action bar görünür durumda iken kullanıcı diğer itemleri de seçebilecektir.

   Contextual işlemler(actions) sık kullanılan action itemlerini sağladığı bazı durumlarda, kullanıcının itemleri seçmesi için checkbox eklemek veya benzer UI elemanları eklemek isteyebilirsiniz. Çünkü, sık kullanılan bu itemler uzun tıklama sonucu çoğu zaman görünmeyebilir. Kullanıcı checkbox'ı seçtiği zaman, setItemChecked() metodu ile işaretlenmiş durumlarını sıralı list itemlere göre ayarlayarak contextual action modu çağırabilirsiniz.

Soru ve Görüşleriniz için: AndroidVeJava

9 Şubat 2015 Pazartesi

Android - Menu Kavramı Kişisel View'ler için Contextual Action Modu Aktif Etmek - 5

23:49

Kişisel View'ler İçin Contextual Action Mode

   
Orijinal Döküman

Sadece kullanıcının seçtiği özel view'ler için contextual action mod çağırmak için aşağıdaki işlemleri yapmalısınız;

  • ActionMode.Callback metodunu uygularsınız. Bu dönüş metodunda contextual action bar için, actions itemlere tıklandığında verilecek cevap işlemlerini belirleyebilir ve action mod için diğer lifecycle eventleri işleme alabilirsiniz.
  • Action bar'ı görüntülemek isterseniz startActionMode() metodunu çağırmalısınız.(örneğin kullanıcı uzun süreli tıklama olayını gerçekleştirirse)

Örneğin:

1. ActionMode.Callback metodunu arayüze uyguluyoruz.


private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

    // Called when the action mode is created; startActionMode() was called
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Inflate a menu resource providing context menu items
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
        return true;
    }

    // Called each time the action mode is shown. Always called after onCreateActionMode, but
    // may be called multiple times if the mode is invalidated.
    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false; // Return false if nothing is done
    }

    // Called when the user selects a contextual menu item
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_share:
                shareCurrentItem();
                mode.finish(); // Action picked, so close the CAB
                return true;
            default:
                return false;
        }
    }

    // Called when the user exits the action mode
    @Override
    public void onDestroyActionMode(ActionMode mode) {
        mActionMode = null;
    }
};

    Bu eylem geri dönüş metotların her biri olay ile ilişkili ActionMode nesnesine parametre geçirmesi dışında neredeyse OptionsMenu geri dönüş metotları ile benzerdirler. ActionMode API kullanarak CAB'da, setTitle() ve setSubtitle() metotları yardımıyla başlık ve alt başlıkları gibi çeşitli değişiklikleri gerçekleştirebilirsiniz.( ne kadar item seçildiğini göstermek için kullanışlı bir araçtır)


2. startActionMode() metodunu çağırarak contextual action modu uygun olduğu anda, örneğin View'e uzun süreli tıklanma gerçekleşmesi gibi durumlarda aktif edebilirsiniz.


someView.setOnLongClickListener(new View.OnLongClickListener() {
// Called when the user long-clicks on someView
public boolean onLongClick(View view) {
        if (mActionMode != null) {
        return false;
        }

        // Start the CAB using the ActionMode.Callback defined above
        mActionMode = getActivity().startActionMode(mActionModeCallback);
        view.setSelected(true);
        return true;
        }
        });



    startActionMode() metodunu çağırdığınızda, sistem oluşturulmuş olan ActionMode'a döner. Bu dönüşü üye değişkene aktarırken, diğer olaylara (eventlere) cevap verildiğinde contextual action bar'da değişiklik yapabilirsiniz. Yukarıdaki ActionMode örneğinde, AcitonMode örneği hali hazırda oluşturulmuş ise üyenin null değere sahip olup olmadığını kontrol ederek yeniden oluşturulmadığından emin olmak için kullanılmıştır.

5 Şubat 2015 Perşembe

Android-Basit Bir Kullanıcı Arayüzü Oluşturmak

18:36

Basit Kullanıcı Arayüzü Oluşturmak

     Bu bölümde text alanı ve buton içeren basit bir XML arayüz tasarımını nasıl gerçekleştireceğimizi göreceğiz. Bu bölümün devamında text alanların içeriklerini başka bir activity'e nasıl göndereceğimizi de irdeleyeceğiz. 
     Android uygulamalar için grafik kullanıcı arayüzleri, View ve View Group nesnelerine ait hiyerarşi içerisinde oluşturulur. View nesneleri genel olarak button, text fields gibi. Kullanıcı arayüzü (User Interface) widgetlerinden oluşur. ViewGroup nesneleri ise genel olarak, LinearLayout veya grid, vertical list gibi görünmeyen arayüz elemanlarıdır.

    Android aracılığı ile XML yapısına karşılık gelen bu View ve ViewGroup alt sınıflarını kullanarak XML hiyerarşisinde kullanıcı arayüzleri tasarlayabilirsiniz.


     Layoutların, ViewGroupların alt sınıfları olduğundan bahsetmiştik. Bu bölümde LinearLayout özelliği ile çalışacağız.



ViewGroup nesnelerinin Layout'lara dallanması ve diğer View nesnelerini kapsadığı hiyerarşi

LinearLayout Oluşturmak

    Android Stüdyo'da sol kısımda yer alan kaynaklar explorer'de layout dizini altında yer alan xml dosyasını açıp aşağıdaki kodu yazarak LinearLayout oluşturuyoruz.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"></LinearLayout>



     Bu tür tanımlamalarda, android:layout_width ve android:layout_height niteliklerini tanımlamak zorundayız. Bu nitelikler üç özellik alırlar. Bunlar;

-match_parent - API Level 8'den sonra fill_parent yerinde gelmiştir. İçinde bulunduğu container'in                               sınırlarına kadar geniş bir alanı kapsar
-fill_parent      - match_parent ile aynı özelliğe sahiptir. API Level 8 e kadar olan kısımda kullanılır.
-wrap_content - bu özellik ile nesne sahip olduğu içerik kadar alanı kaplayacaktır.


TextField Eklemek

Az önce oluşturduğumuz LinearLayout içerisine aşağıdaki XML kodu yardımıyla text alanı ekliyoruz.

<EditText
            android:id="@+id/edit_message"           
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/edit_message/>

android:layout_width ve android:layout_height özelliklerinden bahsettik. 

- android.id - nesnemiz için benzersiz bir ad tanımlaması yaptığımız niteliktir. Bu ismin benzersiz                             olması gerekir. Çünkü program kodlarını yazarken bu alanlara erişimi bu isim                                       üzerinden yapacağız. @ simgesi XML dosyasından herhangi bir resource erişirken                               kullanmamız gereken bir işarettir. + işareti ise ilk defa bir resourceID tanımlaması                               yaparken kullanılır.
-android:hint - text alanının boş olduğu durumlarda bu kısımda görünmesini istediğimiz değeri                                yazdıran niteliktir. Referans olarak @string/edit_message tanımlaması yaparak,                                    values/string.xml dizininde yer alan bu referansı yazdırır.


String Kaynakları Eklemek

values/strings.xml dosyasına kaynaklarımızı tanımlayıp XML üzerinden istenen yerden erişim sağlayabiliriz. Bu çalışmamızda kullandığımız kaynak tanımları aşağıdaki gibidir.

<resources>
<string name="app_name">My First App</string>
<string name="edit_message">Enter a message</string>
<string name="button_send">Send</string>
<string name="action_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
</resources>

Button Eklemek

     Az önce EditText ile eklemiş olduğumuz text alanının devamında, yine LinearLayout içerisine aşağıdaki kod yardımıyla bir button eklemesi yapıyoruz.


<Button

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_send"/>

Burada  butona id ataması yapmadık çünkü activity kodunda şimdilik referans alınmıyor.

XML dosyamız aşağıdaki hâli almış olmalı

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText android:id="@+id/edit_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send" />
</LinearLayout>
Cihaz veya Emülatör ekranında oluşacak olan görüntü.

Performans İpucu: Eğer EditText alanında layout_weight="1" ve layout_width="0dp" tanımlarsanız aşağıdaki görüntüyü elde edersiniz. weight tanımlaması yaptığınızda width özelliğini 0dp yapmalısınız.



Bu düzenleme layout performansını arttırır çünkü genişlik olarak"wrap_content" kullanılırsa, sistem size tamamen alakasız bir genişlik hesaplamak için efor sarfeder. Weight değeri kalan alanı doldurmak için başka bir hesaplama yapar. Burada alınan 1 değeri, wrap_content ile hesaplanan işleme göre sistemi daha hızlı kılar.

Bu düzenlemeden sonra kodumuz;

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText android:id="@+id/edit_message"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send" />
</LinearLayout>

Örnek Uygulama -Ekrana Toast Message Yazdırma

17:30

Örnek Uygulama - Toast Message 

      Herkese yeniden merhaba, Android'e giriş yaptığımız önceki yazılarda oluşan kasvetli havayı dağıtmak adına çok basit bir araç olan Toast Message Kavramını aktarmayı ve örnek bir uygulama ile ilk  basit uygulama örneğimize geçelim istedim.

     Bu araç sayesinde ekrana uyarı, bilgilendirme vb. bildirimleri kullanıcıya aktarıp kodunuzun akışı sırasında meydana gelen etkileşimlerden, bu süreçten haberdar olmasını sağlayabileceksiniz.


Toast Message Örneği

     İlk olarak bir Android projesi başlatıyoruz.Projemizin programlama arayüzü MainActivity kalsın. (Bunu daha evvelki yazılarımızdan destek alarak gerçekleştirebilirsiniz.) Toast nesnesini hazırlayan metotlardan bir taneside makeText() dir. Bu metot üç parametre alır. Bunlar:
- Context
- Text Mesaj
- Toast'ın görünme süresi

    Bu parametreler yardımıyla Toast nesnesi uygun bir şekilde hazırlanır ve döndürülür. Toast uyarı pop-up penceresini show() metodu ile ekranda gösterebilirsiniz. 

Örnek Kod:

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Toast.makeText(context, text, duration).show();
...

Button kaydet = (Button) findViewById (R.id.buttonKaydet);
EditText isimEditText = (EditText) findViewById (R.id.Ad);
EditText soyisimEditText = (EditText) findViewById (R.id.Soyad);

kaydet.setOnClickListener(new View OnClickListener() {
@Override 
public void onClick(View v) {
String isim= isimEditText.getText().toString();
String soyisim= soyisimEditText.getText().toString();
String mesaj = " Toast Message, Hoşgeldin " + isim + " "+soyisim + "!";
Toast.makeText(MainActivity.this, mesaj, Toast.LENGTH_LONG).show();
}
});
...
Yukarıdaki kodu onCreate() metoduna yapıştırın.

Bu uygulamaya ait XML dosyasının olması gereken yapısı ise aşağıdaki gibidir.Burada yer alan 


<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">


    <LinearLayout
        android:id="@+id/linear1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/AdAlanı"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Ad"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linear2">
        <TextView
            android:id="@+id/SoyadAlanı"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/surname"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Soyad"/>
    </LinearLayout>

    <Button
        android:id="@+id/save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="kaydet"/>

</LinearLayout>

Yukarıda yer alan kodlamalar ile basit olarak ekrana Toast nesnesi ile türetilen bildirim pop-up getirmeyi öğrenmiş bulunuyoruz. 

Bir başka yazımızda görüşmek üzere ; 
Soru Ve Görüşleriniz için: FB/AndroidveJava

25 Ocak 2015 Pazar

Android-Kaynak Dosyalarına Göz Atalım

23:31

Uygulamamızın Kaynak Dosyalarını Tanıyalım


Ekranın sol kısmında yer alan bu pencere uygulamamızın kaynaklarına hızlı bir erişim imkanı veren bir tarayıcıdır. Şimdi burada yer alan dosyaları tanıyalım...

layout/ uygulamamızın için tanımladığımız aktivitilerde kullanıcı ile etkileşime giren arayüzlerin                    dizaynları bu klasörde yer alır.
values/ uygulamamızın ihtiyaç duyacağı bir çok değişken ve renk tanımlarının saklandığı xml                          dosyaları burada yer alır. Örneğin ekrana yazdırılan "Hello World" ifadesi burada tanımlı                    değişkenlerde belirlenir. Daha sonraki anlatımlarda bu kısmı kullandıkça daha iyi                                anlaşılacaktır. 
drawable/ bu klasörde uygulamamız içinde kullanacağımız görseller saklanmaktadır. 4 farklı görsel                    ölçeği tanımlanmaktadır. Bunlar ldpi(low density 36x36) mdpi (medium density 48x48)                      hdpi (high density 72x72) xhdpi (extra high density 96x96) ve xxhdpi (extra extra high                        density 144x144) 


Ayrıca burada ;

-AndroidManifest.XML : uygulmanıza ait temel karakteristikleri içeren,
-../com.mycompany.myfirstapp/MyActivity.java: uygulamanıza ait kaynak kodlamalarınızı                                                        yapacağınız kaynak dosyasını
-app/build.gradle: Android Stüdyo Gradle Script kullanarak uygulamanız Build eder. Bunun ile                                         alakalı kaynak kodları bu kısımda yer alır.


Bu günkü yazımızda uygulamamızın temelleri hakkında fikir sahibi olduk . Bir sonraki yazıda görüşmek üzere Selametle....


Android-Bir Android Projesi Oluşturmak

23:10


Bu yazımızda;

1- Android Stüdyo'da proje oluşturmayı öğreneceğiz.


* Android Stüdyo'yu ilk defa açıyorsanız Wellcome ekranında New Project bağlantısına tıklayın.
* Eğer bir proje açık ise File>New Project tıklamanız gerekiyor.

Bir Proje Oluşturmak

 Yukarıdaki işlemleri yaptıktan sonra aşağıdaki ekran karşınıza gelecektir.

Application Name: Uygulamanızın telefon üzerinde görünecek ismidir.
Company Domain: Uygulamanız için benzersiz bir paket ismi için gereklidir. Siz güncelleyene                                          kadar her yeni proje açtığınızda Android Stüdyo sizin yerinize bunu                                                       hatırlayacaktır.
Package Name      : Android sistemi üzerinde uygulamanız çalışırken benzer şekilde çalışacak olan                                     diğer uygulamalarında paketleri olacaktır. Bu noktada karışıklık çıkmaması için
                                 benzersiz bir yapıda bir paket ismi kullanmanız gerekir. Android Stüdyo                                                domaininizi sizin yerinize paket adı yapar. www.google.com ile iki farklı web                                      sayfasına bağlanamayız değil mi ?
Project Location    : Kaynak dosyalarınızın saklanacağı yeri tanımlamanızı sağlar.

Bir sonraki ekranda,

- Select the form factor your app will run on - Uygulamanızın çalıştırılacağı platform seçini ekranında  Phone And Tablet seçeneğini seçiyoruz. Next tıklıyoruz.

- Minimum SDK ekranında API 8: Android 2.2 Froyo seçiyoruz. Bu ekranda yapacağınız seçimler ile uygulamanızın destekleyeceği maksimum platform hakkında bilgi alabilirsiniz. Android 2.2 seçimi ile piyasadaki tüm cihazları destekleyen bir uygulama hazırlamış olursunuz. Next tıklıyoruz.

- Bu adımı değiştirmeden Next tıklıyoruz.

- Add an activity to your project - Projenize bir aktivite ekleyin. ekranında Blank Activity - Boş Aktiviti seçip Next tıklıyoruz.

- Describe the new activity for your project - projeniz için yeni bir aktiviti tanımlayın. Bu ekranı olduğu gibi bırakıyor ve Next tıklıyoruz.

Bu aşamada temel olarak ekrana "Hello World" yazan bir uygulama hazırlamış oluyorsunuz.

Soru ve Görüşleriniz için : JavaVeAndroid

Android-Başlarken

22:45
Herkese Merhabalar,

Android ile ilgili çok sayıda Türkçe kaynaklara ulaşmak günden güne daha da kolay bir hâl alıyor. Fakat, her kaynak kendi anlatım tarzıyla ayrışıyor ve, öğrenim sürecinde karşılaştığınız sorunları veya merak uyandıran noktaları ise Google'de aramak ile uğraşıyoruz. Bahsettiğim bu sorunu yaşayanlardan biri de tabii ki benim! Bu sorunun üstesinde gelmek için ise hiç bir şeye değil direk olayın kaynağına yöneldim. Developer.Android.Com  burada Android ile en baştan tanışmaya; neyi, nasıl kullanmanız gerektiğini, hangi durumlarda nasıl bir tutum sergilemeniz gerektiğini Android OS'un mimarlarından öğrenmeye ne dersiniz!!!

    Elimden geldiği, dilimin döndüğü kadar burada yer alan İngilizce anlatımları, Türkçe'ye çevirdim, çevirmeye de devam ediyorum. Elinde sözlük ile gelen azimkâr arkadaşların da işini kolaylaştırmak adına tekrar edilen noktaları atlayıp, mümkün mertebe aktarılmaya çalışılan ana fikri dağıtmadan yaptığım bu çeviriler, gayretli çalışmalarınızda bir mum kadar yolunuzu aydınlatırsa bile bana yetecektir.

   Lafı çok gezdirmeden işimize başlayalım, ilk iş olarak Android Stüdyo IDE(Integrated Development Environment-Tümleşik Yazılım Geliştirme Ortamı) bilgisayarımıza kuruyoruz. Bunun yerine Eclipse IDE de tercih edilebilir ama kaynağımızda kullanılan ortam Android Stüdyo olduğundan bunu kurmakta fayda vardır. Aşağıda gördüğünüz resim karşınıza çıktığında Download demeniz ve ardından çıkan Lisans Andlaşmasını onaylamanız ile birlikte indirme başlayacaktır.

     Yükleme işlemi tamamlandıktan sonra IDE için gerekli olan SDK'ları (Software Development Kit- Yazılım Geliştirme Kiti) indirmek için Android Stüdyo'yu açıyoruz. Aşağıda görülen menüden SDK Manager(SDK Yöneticisi) açıyoruz.

devamında, aşağıda yer alan listeden ihtiyaç duyduğumuz veya tüm platformlara ait 
API ( Application Programming Interface-Uygulama Geliştirme Arayüzü) indirebiliriz. İlk İndirmede Tüm API'ler yaklaşık 22 GB'lik bir disk alanı gerektiriyor. 


ihtiyaç duyduğumuz API'leri indirmeye başladıktan sonra Android Virtual Device - Android Sanal Cihaz oluşturmaya sıra geldi.

AVD-Android Virtual Device 


Android Device Monitor- Android Cihaz Monitor ekranın açıyoruz ve karşımıza aşağıdaki ekran geliyor. Buradan AVD Manager seçiyoruz.



AVD Manager seçtikten sonra,




Bu ekranda "Create-Oluştur" dedikten sonra aşağıdaki ekranda yer alanlar doldurulur ve Sanal bir cihaz oluşturulmuş olur.

AVD Name: Sanal Cihazınıza vermek istediğiniz isim
Device: Sanal cihazınızın ekran özelliklerini belirlediğiniz alan
Target: Uygulamanız Derleneceği asıl hedef cihaz sürümü 
CPU/ABI: İşlemci tipi (ARM)

başlangıç olarak bu alanları bilmemiz yeterlidir. 
Not: Eğer yavaş bir sistem kullanıyorsanız Snapshot özelliği ile AVD nizin daha hızlı yüklenmesini sağlayabilirsiniz.

Bu işlemleri tamamladıktan sonra artık uygulama oluşturup gerek gerçek bir Android Cihaz'da gerekse Sanal bir cihazda uygulama geliştirme imkanına kavuşmuş oluyorsunuz. 

İlk yazımı burada sonlandırırken umarım Android sevdalılarını biraz faydam olur. Herhangi bir sorunuz olur ise FB: Android ve Java Yazılım Geliştirme bağlantısında ulaşabilirsiniz.Herkese iyi çalışmalar.


android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Ekim 2015 Perşembe

ANDROID VE JAVA'DA TEMEL KAVRAMLAR-1



       Uzun bir aradan sonra tekrar sizlerle birlikteyiz. developer.android.com adresindeki kaynakların tercümesini hazırlarken aynı anda android ve java dünyasına ait temel kavramlar hakkında bilgilendirme yapmamız gerekiyor. Lafı çok fazla uzatmadan konumuza giriş yapalım..

       Java Hakkında 

       Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen (yorumlanan-interpreted) bir dildir.
Java, Sun Microsystems'den James Gosling tarafından geliştirilen bir programlama dilidir (Sun Microsystem'in şu anda Oracle Corporation ile bağlı ortaklığı bulunmaktadır) ve 1995 yılında Sun Microsystems'in çekirdek bileşeni olarak piyasaya sürülmüştür. Bu dil C ve C++'dan birçok sözdizim türetmesine rağmen bu türevler daha basit nesne modeli ve daha az düşük seviye olanaklar içerir. Java uygulamaları bilgisayar mimarisine bağlı olmadan herhangi bir Java Virtual Machine (JVM)'de çalışabilen tipik bytecode'dur (sınıf dosyası).
Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir düzlem dili olarak düşünülmüştü. Ancak düzlem bağımsızlığı özelliği ve tekbiçim kütüphane desteği C ve C++'tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunduğundan, hemen her yerde kullanılmaya başlanmıştır. 

Bir Java yazılımı şu şekilde geliştirilir;
  • Yazılımcı ve bilgisayar mühendisleri Java kodunu yazar.
  • Bu kod bir Java derleyicisi ile derlenir. Sonuçta "bytecode" adı verilen bir tür sanal makine kodu ortaya çıkar. Düzlem bağımsızlığını sağlayan bytecode'dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde çalışabilmektedir.
  • Bu bytecode Java Sanal Makinesi (İng., Java Virtual Machine) tarafından işletilir. Bu aşama, her bir bytecode komutunun teker teker yorumlanması ile icra edilebileceği gibi, anında derleme kullanılarak da gerçekleştirilebilir.

         Java Sözdizimi

// MerhabaDünya.java
 public class MerhabaDünya{
     public static void main(String[] args) {
         System.out.println("Merhaba Dünya!");
     }
 }

       Android Hakkında   

        AndroidGoogleOpen Handset Alliance ve özgür yazılım topluluğu tarafından geliştirilmiş olan, Linux tabanlı, mobil cihaz ve cep telefonları için geliştirilmekte olan, açık kaynak kodlu bir mobil ücretsiz bir işletim sistemidir. Sistem açık kaynak kodlu olsa da, ufak ama çok önemli kısmın google tarafından kodları kapalıdır, google bu kısmın kendisi dışında ulaşılmasını istememektedir. Desteklenen uygulama uzantısı ".apk"dir. Google tarafından ücretsiz olmasının sebebi, sistemin daha hızlı ve çabuk gelişmesi, birçok popüler marka tarafından kullanılması ve bu sayede reklamlarını daha fazla kişiye ulaşmasını sağlamaktır. Google bir reklam firmasıdır, reklam alarak para kazanır, android sistemi üzerinde çalışan Google Play marketteki oyun ve uygulamalar üzerinde aldığı reklamları yayınlamaktadır, bu şekilde daha fazlasını kazanmaktadır.
       Android, aygıtların fonksiyonelliğini genişleten uygulamalar yazan geniş bir geliştirici grubuna sahiptir. Android için halihazırda 1 milyondan fazla uygulama bulunmaktadır. Google Play Store ise, Android işletim sistemi uygulamalarının çeşitli sitelerden indirilebilmesinin yanı sıra, Google tarafından işletilen kurumsal uygulama mağazasıdır. Geliştiriciler, ilk olarak aygıtı, Google'ın Java kütüphanesi aracılığıyla kontrol ederek Java dilinde yazmışlardır.
       Android, Linux çekirdeği üzerine inşa edilmiş bir mobil işletim sistemidir. Bu sistem ara katman yazılımı, kütüphaneler ve API C diliyle yazılmıştır. Uygulama yazılımları ise, Apache harmony üzerine kurulu Java-uyumlu kütüphaneleri içine alan uygulama iskeleti üzerinden çalışmaktadır. Android, derlenmiş Java kodunu çalıştırmak için dinamik çevirmeli (JIT) Dalvik sanal makinesini kullanır ve cihazların fonksiyonelliğini artıran uygulamaların geliştirilmesi için çalışan geniş bir programcı-geliştirici çevresine sahiptir. Google aynı zamanda işletim sistemindeki hataları bulan kullanıcıları para ödülü ile ödüllendirmektedir.

Soru ve Görüşleriniz için: AndroidVeJava

13 Şubat 2015 Cuma

Android - Menu Kavramı ListView veya GridView'de Yığın Contextual Actions Aktif Etmek - 6

ListView veya GirdView'de Yığın Contextual Actions Aktif Etmek


    Eğer ListView veya GridView içinde item setiniz var ise ve kullanıcının yığın işlemleri (batch actions) gerçekleştirmesini istiyorsanız şunları yapmalısınız;

  • AbsListView.MultiChoiceModeListener() metodunu arayüze uygulamalı ve bunu setMultiChoiceModeListener() metodu ile view gruba ayarlamalısınız. Listener's dönüş metodunda, contextual action bar için, action itemlere yapılan tıklamalara verilecek cevap işlemleri belirleyebilir ve diğer ActionMode.Callback arayüzünden miras alınan(inherited)dönüş metotlarını işleme alabilirsiniz.
  • setChoiceMode() metodunu CHOICE_MODE_MULTIPLE_MODAL parametresi ile çağırın.

Örnek Kod:



ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {

    @Override
    public void onItemCheckedStateChanged(ActionMode mode, int position,
                                          long id, boolean checked) {
        // Here you can do something when items are selected/de-selected,
        // such as update the title in the CAB
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        // Respond to clicks on the actions in the CAB
        switch (item.getItemId()) {
            case R.id.menu_delete:
                deleteSelectedItems();
                mode.finish(); // Action picked, so close the CAB
                return true;
            default:
                return false;
        }
    }

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Inflate the menu for the CAB
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.context, menu);
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        // Here you can make any necessary updates to the activity when
        // the CAB is removed. By default, selected items are deselected/unchecked.
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        // Here you can perform updates to the CAB due to
        // an invalidate() request
        return false;
    }
});

    Hepsi bu kadar. Şimdi kullanıcı ne zaman uzun tıklama ile listeden bir item seçer ise, sistem onCreateActionMode() metodun çağıracak ve tanımlanmış olan işlemler ile birlikte contextual aciton bar görüntülenecektir. Contextual action bar görünür durumda iken kullanıcı diğer itemleri de seçebilecektir.

   Contextual işlemler(actions) sık kullanılan action itemlerini sağladığı bazı durumlarda, kullanıcının itemleri seçmesi için checkbox eklemek veya benzer UI elemanları eklemek isteyebilirsiniz. Çünkü, sık kullanılan bu itemler uzun tıklama sonucu çoğu zaman görünmeyebilir. Kullanıcı checkbox'ı seçtiği zaman, setItemChecked() metodu ile işaretlenmiş durumlarını sıralı list itemlere göre ayarlayarak contextual action modu çağırabilirsiniz.

Soru ve Görüşleriniz için: AndroidVeJava

9 Şubat 2015 Pazartesi

Android - Menu Kavramı Kişisel View'ler için Contextual Action Modu Aktif Etmek - 5

Kişisel View'ler İçin Contextual Action Mode

   
Orijinal Döküman

Sadece kullanıcının seçtiği özel view'ler için contextual action mod çağırmak için aşağıdaki işlemleri yapmalısınız;

  • ActionMode.Callback metodunu uygularsınız. Bu dönüş metodunda contextual action bar için, actions itemlere tıklandığında verilecek cevap işlemlerini belirleyebilir ve action mod için diğer lifecycle eventleri işleme alabilirsiniz.
  • Action bar'ı görüntülemek isterseniz startActionMode() metodunu çağırmalısınız.(örneğin kullanıcı uzun süreli tıklama olayını gerçekleştirirse)

Örneğin:

1. ActionMode.Callback metodunu arayüze uyguluyoruz.


private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

    // Called when the action mode is created; startActionMode() was called
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Inflate a menu resource providing context menu items
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
        return true;
    }

    // Called each time the action mode is shown. Always called after onCreateActionMode, but
    // may be called multiple times if the mode is invalidated.
    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false; // Return false if nothing is done
    }

    // Called when the user selects a contextual menu item
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_share:
                shareCurrentItem();
                mode.finish(); // Action picked, so close the CAB
                return true;
            default:
                return false;
        }
    }

    // Called when the user exits the action mode
    @Override
    public void onDestroyActionMode(ActionMode mode) {
        mActionMode = null;
    }
};

    Bu eylem geri dönüş metotların her biri olay ile ilişkili ActionMode nesnesine parametre geçirmesi dışında neredeyse OptionsMenu geri dönüş metotları ile benzerdirler. ActionMode API kullanarak CAB'da, setTitle() ve setSubtitle() metotları yardımıyla başlık ve alt başlıkları gibi çeşitli değişiklikleri gerçekleştirebilirsiniz.( ne kadar item seçildiğini göstermek için kullanışlı bir araçtır)


2. startActionMode() metodunu çağırarak contextual action modu uygun olduğu anda, örneğin View'e uzun süreli tıklanma gerçekleşmesi gibi durumlarda aktif edebilirsiniz.


someView.setOnLongClickListener(new View.OnLongClickListener() {
// Called when the user long-clicks on someView
public boolean onLongClick(View view) {
        if (mActionMode != null) {
        return false;
        }

        // Start the CAB using the ActionMode.Callback defined above
        mActionMode = getActivity().startActionMode(mActionModeCallback);
        view.setSelected(true);
        return true;
        }
        });



    startActionMode() metodunu çağırdığınızda, sistem oluşturulmuş olan ActionMode'a döner. Bu dönüşü üye değişkene aktarırken, diğer olaylara (eventlere) cevap verildiğinde contextual action bar'da değişiklik yapabilirsiniz. Yukarıdaki ActionMode örneğinde, AcitonMode örneği hali hazırda oluşturulmuş ise üyenin null değere sahip olup olmadığını kontrol ederek yeniden oluşturulmadığından emin olmak için kullanılmıştır.

5 Şubat 2015 Perşembe

Android-Basit Bir Kullanıcı Arayüzü Oluşturmak


Basit Kullanıcı Arayüzü Oluşturmak

     Bu bölümde text alanı ve buton içeren basit bir XML arayüz tasarımını nasıl gerçekleştireceğimizi göreceğiz. Bu bölümün devamında text alanların içeriklerini başka bir activity'e nasıl göndereceğimizi de irdeleyeceğiz. 
     Android uygulamalar için grafik kullanıcı arayüzleri, View ve View Group nesnelerine ait hiyerarşi içerisinde oluşturulur. View nesneleri genel olarak button, text fields gibi. Kullanıcı arayüzü (User Interface) widgetlerinden oluşur. ViewGroup nesneleri ise genel olarak, LinearLayout veya grid, vertical list gibi görünmeyen arayüz elemanlarıdır.

    Android aracılığı ile XML yapısına karşılık gelen bu View ve ViewGroup alt sınıflarını kullanarak XML hiyerarşisinde kullanıcı arayüzleri tasarlayabilirsiniz.


     Layoutların, ViewGroupların alt sınıfları olduğundan bahsetmiştik. Bu bölümde LinearLayout özelliği ile çalışacağız.



ViewGroup nesnelerinin Layout'lara dallanması ve diğer View nesnelerini kapsadığı hiyerarşi

LinearLayout Oluşturmak

    Android Stüdyo'da sol kısımda yer alan kaynaklar explorer'de layout dizini altında yer alan xml dosyasını açıp aşağıdaki kodu yazarak LinearLayout oluşturuyoruz.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"></LinearLayout>



     Bu tür tanımlamalarda, android:layout_width ve android:layout_height niteliklerini tanımlamak zorundayız. Bu nitelikler üç özellik alırlar. Bunlar;

-match_parent - API Level 8'den sonra fill_parent yerinde gelmiştir. İçinde bulunduğu container'in                               sınırlarına kadar geniş bir alanı kapsar
-fill_parent      - match_parent ile aynı özelliğe sahiptir. API Level 8 e kadar olan kısımda kullanılır.
-wrap_content - bu özellik ile nesne sahip olduğu içerik kadar alanı kaplayacaktır.


TextField Eklemek

Az önce oluşturduğumuz LinearLayout içerisine aşağıdaki XML kodu yardımıyla text alanı ekliyoruz.

<EditText
            android:id="@+id/edit_message"           
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/edit_message/>

android:layout_width ve android:layout_height özelliklerinden bahsettik. 

- android.id - nesnemiz için benzersiz bir ad tanımlaması yaptığımız niteliktir. Bu ismin benzersiz                             olması gerekir. Çünkü program kodlarını yazarken bu alanlara erişimi bu isim                                       üzerinden yapacağız. @ simgesi XML dosyasından herhangi bir resource erişirken                               kullanmamız gereken bir işarettir. + işareti ise ilk defa bir resourceID tanımlaması                               yaparken kullanılır.
-android:hint - text alanının boş olduğu durumlarda bu kısımda görünmesini istediğimiz değeri                                yazdıran niteliktir. Referans olarak @string/edit_message tanımlaması yaparak,                                    values/string.xml dizininde yer alan bu referansı yazdırır.


String Kaynakları Eklemek

values/strings.xml dosyasına kaynaklarımızı tanımlayıp XML üzerinden istenen yerden erişim sağlayabiliriz. Bu çalışmamızda kullandığımız kaynak tanımları aşağıdaki gibidir.

<resources>
<string name="app_name">My First App</string>
<string name="edit_message">Enter a message</string>
<string name="button_send">Send</string>
<string name="action_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
</resources>

Button Eklemek

     Az önce EditText ile eklemiş olduğumuz text alanının devamında, yine LinearLayout içerisine aşağıdaki kod yardımıyla bir button eklemesi yapıyoruz.


<Button

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_send"/>

Burada  butona id ataması yapmadık çünkü activity kodunda şimdilik referans alınmıyor.

XML dosyamız aşağıdaki hâli almış olmalı

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText android:id="@+id/edit_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send" />
</LinearLayout>
Cihaz veya Emülatör ekranında oluşacak olan görüntü.

Performans İpucu: Eğer EditText alanında layout_weight="1" ve layout_width="0dp" tanımlarsanız aşağıdaki görüntüyü elde edersiniz. weight tanımlaması yaptığınızda width özelliğini 0dp yapmalısınız.



Bu düzenleme layout performansını arttırır çünkü genişlik olarak"wrap_content" kullanılırsa, sistem size tamamen alakasız bir genişlik hesaplamak için efor sarfeder. Weight değeri kalan alanı doldurmak için başka bir hesaplama yapar. Burada alınan 1 değeri, wrap_content ile hesaplanan işleme göre sistemi daha hızlı kılar.

Bu düzenlemeden sonra kodumuz;

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText android:id="@+id/edit_message"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send" />
</LinearLayout>

Örnek Uygulama -Ekrana Toast Message Yazdırma


Örnek Uygulama - Toast Message 

      Herkese yeniden merhaba, Android'e giriş yaptığımız önceki yazılarda oluşan kasvetli havayı dağıtmak adına çok basit bir araç olan Toast Message Kavramını aktarmayı ve örnek bir uygulama ile ilk  basit uygulama örneğimize geçelim istedim.

     Bu araç sayesinde ekrana uyarı, bilgilendirme vb. bildirimleri kullanıcıya aktarıp kodunuzun akışı sırasında meydana gelen etkileşimlerden, bu süreçten haberdar olmasını sağlayabileceksiniz.


Toast Message Örneği

     İlk olarak bir Android projesi başlatıyoruz.Projemizin programlama arayüzü MainActivity kalsın. (Bunu daha evvelki yazılarımızdan destek alarak gerçekleştirebilirsiniz.) Toast nesnesini hazırlayan metotlardan bir taneside makeText() dir. Bu metot üç parametre alır. Bunlar:
- Context
- Text Mesaj
- Toast'ın görünme süresi

    Bu parametreler yardımıyla Toast nesnesi uygun bir şekilde hazırlanır ve döndürülür. Toast uyarı pop-up penceresini show() metodu ile ekranda gösterebilirsiniz. 

Örnek Kod:

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Toast.makeText(context, text, duration).show();
...

Button kaydet = (Button) findViewById (R.id.buttonKaydet);
EditText isimEditText = (EditText) findViewById (R.id.Ad);
EditText soyisimEditText = (EditText) findViewById (R.id.Soyad);

kaydet.setOnClickListener(new View OnClickListener() {
@Override 
public void onClick(View v) {
String isim= isimEditText.getText().toString();
String soyisim= soyisimEditText.getText().toString();
String mesaj = " Toast Message, Hoşgeldin " + isim + " "+soyisim + "!";
Toast.makeText(MainActivity.this, mesaj, Toast.LENGTH_LONG).show();
}
});
...
Yukarıdaki kodu onCreate() metoduna yapıştırın.

Bu uygulamaya ait XML dosyasının olması gereken yapısı ise aşağıdaki gibidir.Burada yer alan 


<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">


    <LinearLayout
        android:id="@+id/linear1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/AdAlanı"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Ad"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linear2">
        <TextView
            android:id="@+id/SoyadAlanı"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/surname"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Soyad"/>
    </LinearLayout>

    <Button
        android:id="@+id/save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="kaydet"/>

</LinearLayout>

Yukarıda yer alan kodlamalar ile basit olarak ekrana Toast nesnesi ile türetilen bildirim pop-up getirmeyi öğrenmiş bulunuyoruz. 

Bir başka yazımızda görüşmek üzere ; 
Soru Ve Görüşleriniz için: FB/AndroidveJava

25 Ocak 2015 Pazar

Android-Kaynak Dosyalarına Göz Atalım

Uygulamamızın Kaynak Dosyalarını Tanıyalım


Ekranın sol kısmında yer alan bu pencere uygulamamızın kaynaklarına hızlı bir erişim imkanı veren bir tarayıcıdır. Şimdi burada yer alan dosyaları tanıyalım...

layout/ uygulamamızın için tanımladığımız aktivitilerde kullanıcı ile etkileşime giren arayüzlerin                    dizaynları bu klasörde yer alır.
values/ uygulamamızın ihtiyaç duyacağı bir çok değişken ve renk tanımlarının saklandığı xml                          dosyaları burada yer alır. Örneğin ekrana yazdırılan "Hello World" ifadesi burada tanımlı                    değişkenlerde belirlenir. Daha sonraki anlatımlarda bu kısmı kullandıkça daha iyi                                anlaşılacaktır. 
drawable/ bu klasörde uygulamamız içinde kullanacağımız görseller saklanmaktadır. 4 farklı görsel                    ölçeği tanımlanmaktadır. Bunlar ldpi(low density 36x36) mdpi (medium density 48x48)                      hdpi (high density 72x72) xhdpi (extra high density 96x96) ve xxhdpi (extra extra high                        density 144x144) 


Ayrıca burada ;

-AndroidManifest.XML : uygulmanıza ait temel karakteristikleri içeren,
-../com.mycompany.myfirstapp/MyActivity.java: uygulamanıza ait kaynak kodlamalarınızı                                                        yapacağınız kaynak dosyasını
-app/build.gradle: Android Stüdyo Gradle Script kullanarak uygulamanız Build eder. Bunun ile                                         alakalı kaynak kodları bu kısımda yer alır.


Bu günkü yazımızda uygulamamızın temelleri hakkında fikir sahibi olduk . Bir sonraki yazıda görüşmek üzere Selametle....


Android-Bir Android Projesi Oluşturmak



Bu yazımızda;

1- Android Stüdyo'da proje oluşturmayı öğreneceğiz.


* Android Stüdyo'yu ilk defa açıyorsanız Wellcome ekranında New Project bağlantısına tıklayın.
* Eğer bir proje açık ise File>New Project tıklamanız gerekiyor.

Bir Proje Oluşturmak

 Yukarıdaki işlemleri yaptıktan sonra aşağıdaki ekran karşınıza gelecektir.

Application Name: Uygulamanızın telefon üzerinde görünecek ismidir.
Company Domain: Uygulamanız için benzersiz bir paket ismi için gereklidir. Siz güncelleyene                                          kadar her yeni proje açtığınızda Android Stüdyo sizin yerinize bunu                                                       hatırlayacaktır.
Package Name      : Android sistemi üzerinde uygulamanız çalışırken benzer şekilde çalışacak olan                                     diğer uygulamalarında paketleri olacaktır. Bu noktada karışıklık çıkmaması için
                                 benzersiz bir yapıda bir paket ismi kullanmanız gerekir. Android Stüdyo                                                domaininizi sizin yerinize paket adı yapar. www.google.com ile iki farklı web                                      sayfasına bağlanamayız değil mi ?
Project Location    : Kaynak dosyalarınızın saklanacağı yeri tanımlamanızı sağlar.

Bir sonraki ekranda,

- Select the form factor your app will run on - Uygulamanızın çalıştırılacağı platform seçini ekranında  Phone And Tablet seçeneğini seçiyoruz. Next tıklıyoruz.

- Minimum SDK ekranında API 8: Android 2.2 Froyo seçiyoruz. Bu ekranda yapacağınız seçimler ile uygulamanızın destekleyeceği maksimum platform hakkında bilgi alabilirsiniz. Android 2.2 seçimi ile piyasadaki tüm cihazları destekleyen bir uygulama hazırlamış olursunuz. Next tıklıyoruz.

- Bu adımı değiştirmeden Next tıklıyoruz.

- Add an activity to your project - Projenize bir aktivite ekleyin. ekranında Blank Activity - Boş Aktiviti seçip Next tıklıyoruz.

- Describe the new activity for your project - projeniz için yeni bir aktiviti tanımlayın. Bu ekranı olduğu gibi bırakıyor ve Next tıklıyoruz.

Bu aşamada temel olarak ekrana "Hello World" yazan bir uygulama hazırlamış oluyorsunuz.

Soru ve Görüşleriniz için : JavaVeAndroid

Android-Başlarken

Herkese Merhabalar,

Android ile ilgili çok sayıda Türkçe kaynaklara ulaşmak günden güne daha da kolay bir hâl alıyor. Fakat, her kaynak kendi anlatım tarzıyla ayrışıyor ve, öğrenim sürecinde karşılaştığınız sorunları veya merak uyandıran noktaları ise Google'de aramak ile uğraşıyoruz. Bahsettiğim bu sorunu yaşayanlardan biri de tabii ki benim! Bu sorunun üstesinde gelmek için ise hiç bir şeye değil direk olayın kaynağına yöneldim. Developer.Android.Com  burada Android ile en baştan tanışmaya; neyi, nasıl kullanmanız gerektiğini, hangi durumlarda nasıl bir tutum sergilemeniz gerektiğini Android OS'un mimarlarından öğrenmeye ne dersiniz!!!

    Elimden geldiği, dilimin döndüğü kadar burada yer alan İngilizce anlatımları, Türkçe'ye çevirdim, çevirmeye de devam ediyorum. Elinde sözlük ile gelen azimkâr arkadaşların da işini kolaylaştırmak adına tekrar edilen noktaları atlayıp, mümkün mertebe aktarılmaya çalışılan ana fikri dağıtmadan yaptığım bu çeviriler, gayretli çalışmalarınızda bir mum kadar yolunuzu aydınlatırsa bile bana yetecektir.

   Lafı çok gezdirmeden işimize başlayalım, ilk iş olarak Android Stüdyo IDE(Integrated Development Environment-Tümleşik Yazılım Geliştirme Ortamı) bilgisayarımıza kuruyoruz. Bunun yerine Eclipse IDE de tercih edilebilir ama kaynağımızda kullanılan ortam Android Stüdyo olduğundan bunu kurmakta fayda vardır. Aşağıda gördüğünüz resim karşınıza çıktığında Download demeniz ve ardından çıkan Lisans Andlaşmasını onaylamanız ile birlikte indirme başlayacaktır.

     Yükleme işlemi tamamlandıktan sonra IDE için gerekli olan SDK'ları (Software Development Kit- Yazılım Geliştirme Kiti) indirmek için Android Stüdyo'yu açıyoruz. Aşağıda görülen menüden SDK Manager(SDK Yöneticisi) açıyoruz.

devamında, aşağıda yer alan listeden ihtiyaç duyduğumuz veya tüm platformlara ait 
API ( Application Programming Interface-Uygulama Geliştirme Arayüzü) indirebiliriz. İlk İndirmede Tüm API'ler yaklaşık 22 GB'lik bir disk alanı gerektiriyor. 


ihtiyaç duyduğumuz API'leri indirmeye başladıktan sonra Android Virtual Device - Android Sanal Cihaz oluşturmaya sıra geldi.

AVD-Android Virtual Device 


Android Device Monitor- Android Cihaz Monitor ekranın açıyoruz ve karşımıza aşağıdaki ekran geliyor. Buradan AVD Manager seçiyoruz.



AVD Manager seçtikten sonra,




Bu ekranda "Create-Oluştur" dedikten sonra aşağıdaki ekranda yer alanlar doldurulur ve Sanal bir cihaz oluşturulmuş olur.

AVD Name: Sanal Cihazınıza vermek istediğiniz isim
Device: Sanal cihazınızın ekran özelliklerini belirlediğiniz alan
Target: Uygulamanız Derleneceği asıl hedef cihaz sürümü 
CPU/ABI: İşlemci tipi (ARM)

başlangıç olarak bu alanları bilmemiz yeterlidir. 
Not: Eğer yavaş bir sistem kullanıyorsanız Snapshot özelliği ile AVD nizin daha hızlı yüklenmesini sağlayabilirsiniz.

Bu işlemleri tamamladıktan sonra artık uygulama oluşturup gerek gerçek bir Android Cihaz'da gerekse Sanal bir cihazda uygulama geliştirme imkanına kavuşmuş oluyorsunuz. 

İlk yazımı burada sonlandırırken umarım Android sevdalılarını biraz faydam olur. Herhangi bir sorunuz olur ise FB: Android ve Java Yazılım Geliştirme bağlantısında ulaşabilirsiniz.Herkese iyi çalışmalar.


android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Ekim 2015 Perşembe

ANDROID VE JAVA'DA TEMEL KAVRAMLAR-1



       Uzun bir aradan sonra tekrar sizlerle birlikteyiz. developer.android.com adresindeki kaynakların tercümesini hazırlarken aynı anda android ve java dünyasına ait temel kavramlar hakkında bilgilendirme yapmamız gerekiyor. Lafı çok fazla uzatmadan konumuza giriş yapalım..

       Java Hakkında 

       Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen (yorumlanan-interpreted) bir dildir.
Java, Sun Microsystems'den James Gosling tarafından geliştirilen bir programlama dilidir (Sun Microsystem'in şu anda Oracle Corporation ile bağlı ortaklığı bulunmaktadır) ve 1995 yılında Sun Microsystems'in çekirdek bileşeni olarak piyasaya sürülmüştür. Bu dil C ve C++'dan birçok sözdizim türetmesine rağmen bu türevler daha basit nesne modeli ve daha az düşük seviye olanaklar içerir. Java uygulamaları bilgisayar mimarisine bağlı olmadan herhangi bir Java Virtual Machine (JVM)'de çalışabilen tipik bytecode'dur (sınıf dosyası).
Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir düzlem dili olarak düşünülmüştü. Ancak düzlem bağımsızlığı özelliği ve tekbiçim kütüphane desteği C ve C++'tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunduğundan, hemen her yerde kullanılmaya başlanmıştır. 

Bir Java yazılımı şu şekilde geliştirilir;
  • Yazılımcı ve bilgisayar mühendisleri Java kodunu yazar.
  • Bu kod bir Java derleyicisi ile derlenir. Sonuçta "bytecode" adı verilen bir tür sanal makine kodu ortaya çıkar. Düzlem bağımsızlığını sağlayan bytecode'dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde çalışabilmektedir.
  • Bu bytecode Java Sanal Makinesi (İng., Java Virtual Machine) tarafından işletilir. Bu aşama, her bir bytecode komutunun teker teker yorumlanması ile icra edilebileceği gibi, anında derleme kullanılarak da gerçekleştirilebilir.

         Java Sözdizimi

// MerhabaDünya.java
 public class MerhabaDünya{
     public static void main(String[] args) {
         System.out.println("Merhaba Dünya!");
     }
 }

       Android Hakkında   

        AndroidGoogleOpen Handset Alliance ve özgür yazılım topluluğu tarafından geliştirilmiş olan, Linux tabanlı, mobil cihaz ve cep telefonları için geliştirilmekte olan, açık kaynak kodlu bir mobil ücretsiz bir işletim sistemidir. Sistem açık kaynak kodlu olsa da, ufak ama çok önemli kısmın google tarafından kodları kapalıdır, google bu kısmın kendisi dışında ulaşılmasını istememektedir. Desteklenen uygulama uzantısı ".apk"dir. Google tarafından ücretsiz olmasının sebebi, sistemin daha hızlı ve çabuk gelişmesi, birçok popüler marka tarafından kullanılması ve bu sayede reklamlarını daha fazla kişiye ulaşmasını sağlamaktır. Google bir reklam firmasıdır, reklam alarak para kazanır, android sistemi üzerinde çalışan Google Play marketteki oyun ve uygulamalar üzerinde aldığı reklamları yayınlamaktadır, bu şekilde daha fazlasını kazanmaktadır.
       Android, aygıtların fonksiyonelliğini genişleten uygulamalar yazan geniş bir geliştirici grubuna sahiptir. Android için halihazırda 1 milyondan fazla uygulama bulunmaktadır. Google Play Store ise, Android işletim sistemi uygulamalarının çeşitli sitelerden indirilebilmesinin yanı sıra, Google tarafından işletilen kurumsal uygulama mağazasıdır. Geliştiriciler, ilk olarak aygıtı, Google'ın Java kütüphanesi aracılığıyla kontrol ederek Java dilinde yazmışlardır.
       Android, Linux çekirdeği üzerine inşa edilmiş bir mobil işletim sistemidir. Bu sistem ara katman yazılımı, kütüphaneler ve API C diliyle yazılmıştır. Uygulama yazılımları ise, Apache harmony üzerine kurulu Java-uyumlu kütüphaneleri içine alan uygulama iskeleti üzerinden çalışmaktadır. Android, derlenmiş Java kodunu çalıştırmak için dinamik çevirmeli (JIT) Dalvik sanal makinesini kullanır ve cihazların fonksiyonelliğini artıran uygulamaların geliştirilmesi için çalışan geniş bir programcı-geliştirici çevresine sahiptir. Google aynı zamanda işletim sistemindeki hataları bulan kullanıcıları para ödülü ile ödüllendirmektedir.

Soru ve Görüşleriniz için: AndroidVeJava

13 Şubat 2015 Cuma

Android - Menu Kavramı ListView veya GridView'de Yığın Contextual Actions Aktif Etmek - 6

ListView veya GirdView'de Yığın Contextual Actions Aktif Etmek


    Eğer ListView veya GridView içinde item setiniz var ise ve kullanıcının yığın işlemleri (batch actions) gerçekleştirmesini istiyorsanız şunları yapmalısınız;

  • AbsListView.MultiChoiceModeListener() metodunu arayüze uygulamalı ve bunu setMultiChoiceModeListener() metodu ile view gruba ayarlamalısınız. Listener's dönüş metodunda, contextual action bar için, action itemlere yapılan tıklamalara verilecek cevap işlemleri belirleyebilir ve diğer ActionMode.Callback arayüzünden miras alınan(inherited)dönüş metotlarını işleme alabilirsiniz.
  • setChoiceMode() metodunu CHOICE_MODE_MULTIPLE_MODAL parametresi ile çağırın.

Örnek Kod:



ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {

    @Override
    public void onItemCheckedStateChanged(ActionMode mode, int position,
                                          long id, boolean checked) {
        // Here you can do something when items are selected/de-selected,
        // such as update the title in the CAB
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        // Respond to clicks on the actions in the CAB
        switch (item.getItemId()) {
            case R.id.menu_delete:
                deleteSelectedItems();
                mode.finish(); // Action picked, so close the CAB
                return true;
            default:
                return false;
        }
    }

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Inflate the menu for the CAB
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.context, menu);
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        // Here you can make any necessary updates to the activity when
        // the CAB is removed. By default, selected items are deselected/unchecked.
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        // Here you can perform updates to the CAB due to
        // an invalidate() request
        return false;
    }
});

    Hepsi bu kadar. Şimdi kullanıcı ne zaman uzun tıklama ile listeden bir item seçer ise, sistem onCreateActionMode() metodun çağıracak ve tanımlanmış olan işlemler ile birlikte contextual aciton bar görüntülenecektir. Contextual action bar görünür durumda iken kullanıcı diğer itemleri de seçebilecektir.

   Contextual işlemler(actions) sık kullanılan action itemlerini sağladığı bazı durumlarda, kullanıcının itemleri seçmesi için checkbox eklemek veya benzer UI elemanları eklemek isteyebilirsiniz. Çünkü, sık kullanılan bu itemler uzun tıklama sonucu çoğu zaman görünmeyebilir. Kullanıcı checkbox'ı seçtiği zaman, setItemChecked() metodu ile işaretlenmiş durumlarını sıralı list itemlere göre ayarlayarak contextual action modu çağırabilirsiniz.

Soru ve Görüşleriniz için: AndroidVeJava

9 Şubat 2015 Pazartesi

Android - Menu Kavramı Kişisel View'ler için Contextual Action Modu Aktif Etmek - 5

Kişisel View'ler İçin Contextual Action Mode

   
Orijinal Döküman

Sadece kullanıcının seçtiği özel view'ler için contextual action mod çağırmak için aşağıdaki işlemleri yapmalısınız;

  • ActionMode.Callback metodunu uygularsınız. Bu dönüş metodunda contextual action bar için, actions itemlere tıklandığında verilecek cevap işlemlerini belirleyebilir ve action mod için diğer lifecycle eventleri işleme alabilirsiniz.
  • Action bar'ı görüntülemek isterseniz startActionMode() metodunu çağırmalısınız.(örneğin kullanıcı uzun süreli tıklama olayını gerçekleştirirse)

Örneğin:

1. ActionMode.Callback metodunu arayüze uyguluyoruz.


private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

    // Called when the action mode is created; startActionMode() was called
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Inflate a menu resource providing context menu items
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
        return true;
    }

    // Called each time the action mode is shown. Always called after onCreateActionMode, but
    // may be called multiple times if the mode is invalidated.
    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false; // Return false if nothing is done
    }

    // Called when the user selects a contextual menu item
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_share:
                shareCurrentItem();
                mode.finish(); // Action picked, so close the CAB
                return true;
            default:
                return false;
        }
    }

    // Called when the user exits the action mode
    @Override
    public void onDestroyActionMode(ActionMode mode) {
        mActionMode = null;
    }
};

    Bu eylem geri dönüş metotların her biri olay ile ilişkili ActionMode nesnesine parametre geçirmesi dışında neredeyse OptionsMenu geri dönüş metotları ile benzerdirler. ActionMode API kullanarak CAB'da, setTitle() ve setSubtitle() metotları yardımıyla başlık ve alt başlıkları gibi çeşitli değişiklikleri gerçekleştirebilirsiniz.( ne kadar item seçildiğini göstermek için kullanışlı bir araçtır)


2. startActionMode() metodunu çağırarak contextual action modu uygun olduğu anda, örneğin View'e uzun süreli tıklanma gerçekleşmesi gibi durumlarda aktif edebilirsiniz.


someView.setOnLongClickListener(new View.OnLongClickListener() {
// Called when the user long-clicks on someView
public boolean onLongClick(View view) {
        if (mActionMode != null) {
        return false;
        }

        // Start the CAB using the ActionMode.Callback defined above
        mActionMode = getActivity().startActionMode(mActionModeCallback);
        view.setSelected(true);
        return true;
        }
        });



    startActionMode() metodunu çağırdığınızda, sistem oluşturulmuş olan ActionMode'a döner. Bu dönüşü üye değişkene aktarırken, diğer olaylara (eventlere) cevap verildiğinde contextual action bar'da değişiklik yapabilirsiniz. Yukarıdaki ActionMode örneğinde, AcitonMode örneği hali hazırda oluşturulmuş ise üyenin null değere sahip olup olmadığını kontrol ederek yeniden oluşturulmadığından emin olmak için kullanılmıştır.

5 Şubat 2015 Perşembe

Android-Basit Bir Kullanıcı Arayüzü Oluşturmak


Basit Kullanıcı Arayüzü Oluşturmak

     Bu bölümde text alanı ve buton içeren basit bir XML arayüz tasarımını nasıl gerçekleştireceğimizi göreceğiz. Bu bölümün devamında text alanların içeriklerini başka bir activity'e nasıl göndereceğimizi de irdeleyeceğiz. 
     Android uygulamalar için grafik kullanıcı arayüzleri, View ve View Group nesnelerine ait hiyerarşi içerisinde oluşturulur. View nesneleri genel olarak button, text fields gibi. Kullanıcı arayüzü (User Interface) widgetlerinden oluşur. ViewGroup nesneleri ise genel olarak, LinearLayout veya grid, vertical list gibi görünmeyen arayüz elemanlarıdır.

    Android aracılığı ile XML yapısına karşılık gelen bu View ve ViewGroup alt sınıflarını kullanarak XML hiyerarşisinde kullanıcı arayüzleri tasarlayabilirsiniz.


     Layoutların, ViewGroupların alt sınıfları olduğundan bahsetmiştik. Bu bölümde LinearLayout özelliği ile çalışacağız.



ViewGroup nesnelerinin Layout'lara dallanması ve diğer View nesnelerini kapsadığı hiyerarşi

LinearLayout Oluşturmak

    Android Stüdyo'da sol kısımda yer alan kaynaklar explorer'de layout dizini altında yer alan xml dosyasını açıp aşağıdaki kodu yazarak LinearLayout oluşturuyoruz.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"></LinearLayout>



     Bu tür tanımlamalarda, android:layout_width ve android:layout_height niteliklerini tanımlamak zorundayız. Bu nitelikler üç özellik alırlar. Bunlar;

-match_parent - API Level 8'den sonra fill_parent yerinde gelmiştir. İçinde bulunduğu container'in                               sınırlarına kadar geniş bir alanı kapsar
-fill_parent      - match_parent ile aynı özelliğe sahiptir. API Level 8 e kadar olan kısımda kullanılır.
-wrap_content - bu özellik ile nesne sahip olduğu içerik kadar alanı kaplayacaktır.


TextField Eklemek

Az önce oluşturduğumuz LinearLayout içerisine aşağıdaki XML kodu yardımıyla text alanı ekliyoruz.

<EditText
            android:id="@+id/edit_message"           
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/edit_message/>

android:layout_width ve android:layout_height özelliklerinden bahsettik. 

- android.id - nesnemiz için benzersiz bir ad tanımlaması yaptığımız niteliktir. Bu ismin benzersiz                             olması gerekir. Çünkü program kodlarını yazarken bu alanlara erişimi bu isim                                       üzerinden yapacağız. @ simgesi XML dosyasından herhangi bir resource erişirken                               kullanmamız gereken bir işarettir. + işareti ise ilk defa bir resourceID tanımlaması                               yaparken kullanılır.
-android:hint - text alanının boş olduğu durumlarda bu kısımda görünmesini istediğimiz değeri                                yazdıran niteliktir. Referans olarak @string/edit_message tanımlaması yaparak,                                    values/string.xml dizininde yer alan bu referansı yazdırır.


String Kaynakları Eklemek

values/strings.xml dosyasına kaynaklarımızı tanımlayıp XML üzerinden istenen yerden erişim sağlayabiliriz. Bu çalışmamızda kullandığımız kaynak tanımları aşağıdaki gibidir.

<resources>
<string name="app_name">My First App</string>
<string name="edit_message">Enter a message</string>
<string name="button_send">Send</string>
<string name="action_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
</resources>

Button Eklemek

     Az önce EditText ile eklemiş olduğumuz text alanının devamında, yine LinearLayout içerisine aşağıdaki kod yardımıyla bir button eklemesi yapıyoruz.


<Button

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_send"/>

Burada  butona id ataması yapmadık çünkü activity kodunda şimdilik referans alınmıyor.

XML dosyamız aşağıdaki hâli almış olmalı

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText android:id="@+id/edit_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send" />
</LinearLayout>
Cihaz veya Emülatör ekranında oluşacak olan görüntü.

Performans İpucu: Eğer EditText alanında layout_weight="1" ve layout_width="0dp" tanımlarsanız aşağıdaki görüntüyü elde edersiniz. weight tanımlaması yaptığınızda width özelliğini 0dp yapmalısınız.



Bu düzenleme layout performansını arttırır çünkü genişlik olarak"wrap_content" kullanılırsa, sistem size tamamen alakasız bir genişlik hesaplamak için efor sarfeder. Weight değeri kalan alanı doldurmak için başka bir hesaplama yapar. Burada alınan 1 değeri, wrap_content ile hesaplanan işleme göre sistemi daha hızlı kılar.

Bu düzenlemeden sonra kodumuz;

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText android:id="@+id/edit_message"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send" />
</LinearLayout>

Örnek Uygulama -Ekrana Toast Message Yazdırma


Örnek Uygulama - Toast Message 

      Herkese yeniden merhaba, Android'e giriş yaptığımız önceki yazılarda oluşan kasvetli havayı dağıtmak adına çok basit bir araç olan Toast Message Kavramını aktarmayı ve örnek bir uygulama ile ilk  basit uygulama örneğimize geçelim istedim.

     Bu araç sayesinde ekrana uyarı, bilgilendirme vb. bildirimleri kullanıcıya aktarıp kodunuzun akışı sırasında meydana gelen etkileşimlerden, bu süreçten haberdar olmasını sağlayabileceksiniz.


Toast Message Örneği

     İlk olarak bir Android projesi başlatıyoruz.Projemizin programlama arayüzü MainActivity kalsın. (Bunu daha evvelki yazılarımızdan destek alarak gerçekleştirebilirsiniz.) Toast nesnesini hazırlayan metotlardan bir taneside makeText() dir. Bu metot üç parametre alır. Bunlar:
- Context
- Text Mesaj
- Toast'ın görünme süresi

    Bu parametreler yardımıyla Toast nesnesi uygun bir şekilde hazırlanır ve döndürülür. Toast uyarı pop-up penceresini show() metodu ile ekranda gösterebilirsiniz. 

Örnek Kod:

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Toast.makeText(context, text, duration).show();
...

Button kaydet = (Button) findViewById (R.id.buttonKaydet);
EditText isimEditText = (EditText) findViewById (R.id.Ad);
EditText soyisimEditText = (EditText) findViewById (R.id.Soyad);

kaydet.setOnClickListener(new View OnClickListener() {
@Override 
public void onClick(View v) {
String isim= isimEditText.getText().toString();
String soyisim= soyisimEditText.getText().toString();
String mesaj = " Toast Message, Hoşgeldin " + isim + " "+soyisim + "!";
Toast.makeText(MainActivity.this, mesaj, Toast.LENGTH_LONG).show();
}
});
...
Yukarıdaki kodu onCreate() metoduna yapıştırın.

Bu uygulamaya ait XML dosyasının olması gereken yapısı ise aşağıdaki gibidir.Burada yer alan 


<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">


    <LinearLayout
        android:id="@+id/linear1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/AdAlanı"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Ad"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linear2">
        <TextView
            android:id="@+id/SoyadAlanı"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/surname"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Soyad"/>
    </LinearLayout>

    <Button
        android:id="@+id/save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="kaydet"/>

</LinearLayout>

Yukarıda yer alan kodlamalar ile basit olarak ekrana Toast nesnesi ile türetilen bildirim pop-up getirmeyi öğrenmiş bulunuyoruz. 

Bir başka yazımızda görüşmek üzere ; 
Soru Ve Görüşleriniz için: FB/AndroidveJava

25 Ocak 2015 Pazar

Android-Kaynak Dosyalarına Göz Atalım

Uygulamamızın Kaynak Dosyalarını Tanıyalım


Ekranın sol kısmında yer alan bu pencere uygulamamızın kaynaklarına hızlı bir erişim imkanı veren bir tarayıcıdır. Şimdi burada yer alan dosyaları tanıyalım...

layout/ uygulamamızın için tanımladığımız aktivitilerde kullanıcı ile etkileşime giren arayüzlerin                    dizaynları bu klasörde yer alır.
values/ uygulamamızın ihtiyaç duyacağı bir çok değişken ve renk tanımlarının saklandığı xml                          dosyaları burada yer alır. Örneğin ekrana yazdırılan "Hello World" ifadesi burada tanımlı                    değişkenlerde belirlenir. Daha sonraki anlatımlarda bu kısmı kullandıkça daha iyi                                anlaşılacaktır. 
drawable/ bu klasörde uygulamamız içinde kullanacağımız görseller saklanmaktadır. 4 farklı görsel                    ölçeği tanımlanmaktadır. Bunlar ldpi(low density 36x36) mdpi (medium density 48x48)                      hdpi (high density 72x72) xhdpi (extra high density 96x96) ve xxhdpi (extra extra high                        density 144x144) 


Ayrıca burada ;

-AndroidManifest.XML : uygulmanıza ait temel karakteristikleri içeren,
-../com.mycompany.myfirstapp/MyActivity.java: uygulamanıza ait kaynak kodlamalarınızı                                                        yapacağınız kaynak dosyasını
-app/build.gradle: Android Stüdyo Gradle Script kullanarak uygulamanız Build eder. Bunun ile                                         alakalı kaynak kodları bu kısımda yer alır.


Bu günkü yazımızda uygulamamızın temelleri hakkında fikir sahibi olduk . Bir sonraki yazıda görüşmek üzere Selametle....


Android-Bir Android Projesi Oluşturmak



Bu yazımızda;

1- Android Stüdyo'da proje oluşturmayı öğreneceğiz.


* Android Stüdyo'yu ilk defa açıyorsanız Wellcome ekranında New Project bağlantısına tıklayın.
* Eğer bir proje açık ise File>New Project tıklamanız gerekiyor.

Bir Proje Oluşturmak

 Yukarıdaki işlemleri yaptıktan sonra aşağıdaki ekran karşınıza gelecektir.

Application Name: Uygulamanızın telefon üzerinde görünecek ismidir.
Company Domain: Uygulamanız için benzersiz bir paket ismi için gereklidir. Siz güncelleyene                                          kadar her yeni proje açtığınızda Android Stüdyo sizin yerinize bunu                                                       hatırlayacaktır.
Package Name      : Android sistemi üzerinde uygulamanız çalışırken benzer şekilde çalışacak olan                                     diğer uygulamalarında paketleri olacaktır. Bu noktada karışıklık çıkmaması için
                                 benzersiz bir yapıda bir paket ismi kullanmanız gerekir. Android Stüdyo                                                domaininizi sizin yerinize paket adı yapar. www.google.com ile iki farklı web                                      sayfasına bağlanamayız değil mi ?
Project Location    : Kaynak dosyalarınızın saklanacağı yeri tanımlamanızı sağlar.

Bir sonraki ekranda,

- Select the form factor your app will run on - Uygulamanızın çalıştırılacağı platform seçini ekranında  Phone And Tablet seçeneğini seçiyoruz. Next tıklıyoruz.

- Minimum SDK ekranında API 8: Android 2.2 Froyo seçiyoruz. Bu ekranda yapacağınız seçimler ile uygulamanızın destekleyeceği maksimum platform hakkında bilgi alabilirsiniz. Android 2.2 seçimi ile piyasadaki tüm cihazları destekleyen bir uygulama hazırlamış olursunuz. Next tıklıyoruz.

- Bu adımı değiştirmeden Next tıklıyoruz.

- Add an activity to your project - Projenize bir aktivite ekleyin. ekranında Blank Activity - Boş Aktiviti seçip Next tıklıyoruz.

- Describe the new activity for your project - projeniz için yeni bir aktiviti tanımlayın. Bu ekranı olduğu gibi bırakıyor ve Next tıklıyoruz.

Bu aşamada temel olarak ekrana "Hello World" yazan bir uygulama hazırlamış oluyorsunuz.

Soru ve Görüşleriniz için : JavaVeAndroid

Android-Başlarken

Herkese Merhabalar,

Android ile ilgili çok sayıda Türkçe kaynaklara ulaşmak günden güne daha da kolay bir hâl alıyor. Fakat, her kaynak kendi anlatım tarzıyla ayrışıyor ve, öğrenim sürecinde karşılaştığınız sorunları veya merak uyandıran noktaları ise Google'de aramak ile uğraşıyoruz. Bahsettiğim bu sorunu yaşayanlardan biri de tabii ki benim! Bu sorunun üstesinde gelmek için ise hiç bir şeye değil direk olayın kaynağına yöneldim. Developer.Android.Com  burada Android ile en baştan tanışmaya; neyi, nasıl kullanmanız gerektiğini, hangi durumlarda nasıl bir tutum sergilemeniz gerektiğini Android OS'un mimarlarından öğrenmeye ne dersiniz!!!

    Elimden geldiği, dilimin döndüğü kadar burada yer alan İngilizce anlatımları, Türkçe'ye çevirdim, çevirmeye de devam ediyorum. Elinde sözlük ile gelen azimkâr arkadaşların da işini kolaylaştırmak adına tekrar edilen noktaları atlayıp, mümkün mertebe aktarılmaya çalışılan ana fikri dağıtmadan yaptığım bu çeviriler, gayretli çalışmalarınızda bir mum kadar yolunuzu aydınlatırsa bile bana yetecektir.

   Lafı çok gezdirmeden işimize başlayalım, ilk iş olarak Android Stüdyo IDE(Integrated Development Environment-Tümleşik Yazılım Geliştirme Ortamı) bilgisayarımıza kuruyoruz. Bunun yerine Eclipse IDE de tercih edilebilir ama kaynağımızda kullanılan ortam Android Stüdyo olduğundan bunu kurmakta fayda vardır. Aşağıda gördüğünüz resim karşınıza çıktığında Download demeniz ve ardından çıkan Lisans Andlaşmasını onaylamanız ile birlikte indirme başlayacaktır.

     Yükleme işlemi tamamlandıktan sonra IDE için gerekli olan SDK'ları (Software Development Kit- Yazılım Geliştirme Kiti) indirmek için Android Stüdyo'yu açıyoruz. Aşağıda görülen menüden SDK Manager(SDK Yöneticisi) açıyoruz.

devamında, aşağıda yer alan listeden ihtiyaç duyduğumuz veya tüm platformlara ait 
API ( Application Programming Interface-Uygulama Geliştirme Arayüzü) indirebiliriz. İlk İndirmede Tüm API'ler yaklaşık 22 GB'lik bir disk alanı gerektiriyor. 


ihtiyaç duyduğumuz API'leri indirmeye başladıktan sonra Android Virtual Device - Android Sanal Cihaz oluşturmaya sıra geldi.

AVD-Android Virtual Device 


Android Device Monitor- Android Cihaz Monitor ekranın açıyoruz ve karşımıza aşağıdaki ekran geliyor. Buradan AVD Manager seçiyoruz.



AVD Manager seçtikten sonra,




Bu ekranda "Create-Oluştur" dedikten sonra aşağıdaki ekranda yer alanlar doldurulur ve Sanal bir cihaz oluşturulmuş olur.

AVD Name: Sanal Cihazınıza vermek istediğiniz isim
Device: Sanal cihazınızın ekran özelliklerini belirlediğiniz alan
Target: Uygulamanız Derleneceği asıl hedef cihaz sürümü 
CPU/ABI: İşlemci tipi (ARM)

başlangıç olarak bu alanları bilmemiz yeterlidir. 
Not: Eğer yavaş bir sistem kullanıyorsanız Snapshot özelliği ile AVD nizin daha hızlı yüklenmesini sağlayabilirsiniz.

Bu işlemleri tamamladıktan sonra artık uygulama oluşturup gerek gerçek bir Android Cihaz'da gerekse Sanal bir cihazda uygulama geliştirme imkanına kavuşmuş oluyorsunuz. 

İlk yazımı burada sonlandırırken umarım Android sevdalılarını biraz faydam olur. Herhangi bir sorunuz olur ise FB: Android ve Java Yazılım Geliştirme bağlantısında ulaşabilirsiniz.Herkese iyi çalışmalar.