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.

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

14 Şubat 2015 Cumartesi

Intent Tabanlı Menü İtemleri Eklemek

23:14

    Bazı durumlarda seçilen menü itemi aracılığıyla Intent(Bu başlığı daha detaylı ele alacağız) kullanarak bir activity veya başka bir uygulama açmak isteyebilirsiniz. Belirli menü itemi için kullanmak istediğiniz intenti (niyet, maksat) biliyorsanız, uygun item seçildiğinde ilgili callback(geri dönüş) metoduyla startActivity() metoduyla intent başlatabilirsiniz.

    Eğer intent işlemini başlatacak olan uygulamayı kullanıcının cihazındaki içeriğe göre belirlemezseniz, bu intenti çağıracak menü itemi eklemek fonksiyonel olmayan bir menü işlemiyle sonuçlanır. Çünkü, Inten bir Activity'i çözümlemek olmayabilir. Bu sorunu çözmek için, Android Intent'in işleme alabileceği aktiviteler bulduğunda dinamik olarak menü itemlerini ekleme imkânı tanır.

    Menü itemi eklemek, kabul edilen bir intent için müsait olan aktiviteleri temel alır.

  1. Intent tanımını CATEGORY_ALTERNATIVE ve/veya CATEGORY_SELECTED_ALTERNATIVE şeklinde, diğer gereklilikleri de ekleyerek yapınız.
  2. Menu.addIntentOptions() metodunu çağırın. Android böylece uygulamaları tarayacak ve intenti işleyip menüye ekleyecektir.
     Intent ile uyumlu bir uygulama yüklü bulunmadıysa eğer, herhangi bir menü itemi eklenmeyecektir.


    ÖRNEK:

@Override
    public boolean onCreateOptionsMenu(Menu menu){
        super.onCreateOptionsMenu(menu);

        // Create an Intent that describes the requirements to fulfill, to be included
        // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
        Intent intent = new Intent(null, dataUri);
        intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

        // Search and populate the menu with acceptable offering applications.
        menu.addIntentOptions(
                R.id.menu_archive,  // Menu group to which new items will be added
                0,      // Unique item ID (none)
                0,      // Order for the items (none)
                this.getComponentName(),   // The current activity name
                null,   // Specific items to place first (none)
                intent, // Intent created above that describes our requirements
                0,      // Additional flags to control items (none)
                null);  // Array of MenuItems that correlate to specific items (none)

        return true;
    }


     Menü item başlığını ve menü item iconunu android:label değeri belirleyerek intent filtreleme yaptığımızda her tanımlı menü aktivitesi için tanımlı bir intent sağlanır. addIntentOptions() metodu, eklenmiş menü itemi sayısını döndürür.

NOT: addIntentOptions() metodunu çağırdığınızda, ilk argüman ile tanımlanmış gruplanmış tüm menü itemlerini Override eder.


Aktivitinizin diğer Menülere eklenmesine izin vermek


    Aktivitinizin servislerini diğer uygulamalara da teklif edebilirsiniz. Böylece uygulamanız diğer uygulamaların menülerinde de yer alabilir. Bu düzenlemeleri AndroidManifest.xml de yapmanız gerekiyor.

    Diğer uygulama menülerinde yer alabilmek için, bilindik şekilde bir intent filter yapmanız lazım ve bu tanımlamayı yaparken, CATEGORY_ALTERNATIVE ve/veya CATEGORY_SELECTED_ALTERNATIVE değerlerini intent filter kategorisi için tanımladığınızdan emin olmalısınız.

ÖRNEK:

<intent-filter label="@string/resize_image">
    ...
    <category android:name="android.intent.category.ALTERNATIVE" />
    <category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
    ...</intent-filter>

Intenler hakkında daha fazla bilgi için Buradan

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

8 Şubat 2015 Pazar

Android - Menu Kavramı Context Menu Oluşturmak - 4

22:56

Context Menü (İçeriğe has menü ) Oluşturmak

Orijinal Döküman

    Menü kavramına giriş yaptığımız yazımızda kısaca değindiğimiz Context Menu kavramını bu bölümde daha detaylı olarak ele alacağız. Ben de sizler gibi bu konuyu en iyi öğrenebileceğim kaynak olan Developer.android.com adresini gün içinde defalarca ziyaret ederek hem kendim, hem de sizlerin bu kaynağın Türkçeleştirilmiş hâline erişerek bu işi öğrenmemizi amaçladığımı da tekrardan buradan aktarmak isterim.

     Contextual Menü, UI içindeki Context Frame veya belirli itemleri etkileyecek menü işlemleri sağlar. Herhangi bir View için Contextual Menü tanımlaması yapabilirsiniz ama, bu özellik sıklıkla kullanıcının her bir item için doğrudan işlem yapabileceği ListView ve GridView ya da diğer view koleksiyonları için kullanılır. 


    Contextual işlemleri sağlamak için 2 yöntem vardır. Bunlar;

  • Floating Context Menü: Menü, kullanıcının uzun süreli dokunmaları sonucu diyaloglar ile benzer şekilde floating list menü şeklinde görünür. Kullanıcılar aynı anda sadece bir item için contextual işlem gerçekleştirebilir.
  • Contextual Action Mode: Bu mod, ekranın üst kısmında seçili itemlerin etkileneceği işlem listesini görüntüleyen contextual action bar bir ActionMode uygulamasıdır. Bu mod aktif olduğunda (uygulamanız izin veriyorsa) aynı anda birden fazla seçili olan menü itemi için işlem yapılmasını sağlar.
NOT: Contextual Action Mod Android 3.0 ve daha yeni sürümler için sağlanır ve contextual actions gösterimi için tercih edilen bir tekniktir. Android 3.0'dan daha eski sürümler için bir uygulama geliştiriyorsanız, floating contextual menü özelliğini tercih etmeniz gerekir.


Floating Contextual Menü Oluşturmak

    Floating Context Menü oluşturmak için, 

  1. registerForContextMenu() metodu aracılığıyla ilişkilendirilmiş Context Menü View'ini Register edip ardından bunun View'e geçirmelisiniz. Aktivitiniz ListView veya GridView seçeneklerinden birini kullanıyorsanız ve her itemin aynı context menüyü sağlamasını istiyorsanız, Context Menü için tüm itemleri register edip ListView veya GridView'leri  registerForContextMenu() 'ye parametre olarak geçmelisiniz.
  2. onCreateContextMenu() metodunu Aktivitinize veya Fragment'inize uygulayın. Register edilen view'ler uzun-tıklama olayını aldıklarında, sistem onCreateContextMenu() metodu sistem tarafından çağrılır. Bu metot her zaman menu resource'nin inflate edildiği ve menü itemlerinin tanımlandığı yerdir.

Örnek Kod:

 @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }
    

    MenuInflater size, menu resource'de tanımlı olan context menüyü ekranda gösterme imkânı sağlar. Geri dönüş metodu parametreleri Context Menü'de yer alan ve kullanıcını seçtiği View'leri içerir. ContextMenuInfo nesnesi, seçili menü itemleri hakkında ek bilgiler sağlar. Eğer aktivitiniz'de yer alan viewlerın her biri farklı context menü sağlıyorsa, hangi context menü'nün gösterileceğine (inflate) karar verebilmek için bu parametreleri kullanmalısınız.

    3. onContextItemSelected() metodunu uygulayın ( implemente edin). Kullanıcı menü itemini seçtiğinde, belirlemiş olduğunuz uygun işlemi gerçekleştirmek için sistem bu metodu çağıracaktır.


Örnek Kod:

   @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        switch (item.getItemId()) {
            case R.id.edit:
                editNote(info.id);
                return true;
            case R.id.delete:
                deleteNote(info.id);
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }

     getItemId() metodu, XML menü resource'de "android:id" niteliği ile belirlemiş olduğunuz ve seçilmiş olan menü itemi için benzersiz olan ID'yi sorgular. Menü itemi başarı ile ele aldığınızda, dönüş değeri true olur. Menü itemi ele alamadığımızda ise menü itemleri superclass implementetion'a geçirmelisiniz. Aktivitiniz fragment içeriyorsa, bu geri dönüşü ilk olarak aktiviti alır. Ele alınmadığı durumda superclass çağırdığımızda, herhangi bir anda true ya da false değeri dönene kadar sistem olayları her fragment için tek tek geçirir.

     android.app.fragment ve Aktiviti için varsayılan dönüş değeri false'dir, bu nedenle Menü itemi başarılı bir şekilde ele alamadığınızda her zaman superclass metodunu çağırmalısınız.


Contextual Action Mode Aktif Etmek

    Contextual Action Mode, contextual işlemler uygulayan kullanıcı işlemlerine odaklandığı ActionMode'un sistem uygulamasıdır. Kullanıcı, item seçerek bu modu aktif ettiğinde, contextual action bar ekranın üst kısmında görünür ve seçili item için kullanıcının gerçekleştirebileceği işlemleri sunar. Eğer geliştirici olarak izin sağlarsanız bu mod aktif olduğunda, kullanıcı birden fazla item seçmek, bırakmak ve aktiviti ile bunları taşımak (yine sizin müsade ettiğiniz kadarıyla) gibi işlemleri yapabilir. Action mode pasif olduğunda ve contextual action bar, kullanıcı seçmiş olduğu itmeleri bıraktığında veya BACK butona tıkladığında veya bar'ın sol tarafında yer alan Done işlemini seçtiğinde yukarıda kaybolur. 

     NOT: Contextual Action Bar, action bar ile ilişkilendirilmiş olmak zorunda değildir. Bu iki birim, contextual action bar, action barın üzerine gelse de birbirinden bağımsız çalışmaktadır.


     Eğer Android 3.0 ve daha yeni sürümler için geliştirme yapıyorsanız, floating contextual menü yerine her zaman contextual işlemler için contextual action mod'u kullanmalısınız. 

     Contextual Actions sağlayan view'ler için, contextual action mod'u aşağıdaki durumlardan biri veya her ikisi için çağırmalısınız.
  • Kullanıcı View'e uzun süre tıklama işlemini gerçekleştirirse.
  • Kullanıcı View içerisinde check box'a veya benzer bir UI bileşenin işaretlerse.

    Uygulamanızın contextual action mod'u nasıl çağıracağı ve her bir işlem için nasıl davranacağı sizin tasarımınıza bağlıdır. Temel olarak iki tasarım vardır:

  • Kişisel, isteğe bağlı viewlerin contextual işlemleri için,
  • ListView veya GridView içinde yer alan item gruplarında contextual işlemler yığını için.           (kullanıcının birden fazla item seçmesine izin verip, tamamı için tek bir işlem yapmasını sağlamak için)

    Bir sonraki Yazımızda ise her bir senaryo için gerekli düzenlemeleri tanımlamaktadır.

Görüşmek üzere..

Soru Ve Görüşlerinizi için: JavaVeAndroid




Android- Menu Kavramı - 1

13:35

Android - Menu Kavramı -1  

Orijinal Döküman
    Menuler bir çok uygulama türü içerisinde sıklıklar karşılaştığımız bir UI (User Interface) bileşenidir. Aktivitinizde alışılmış ve tutarlı bir kullanıcı deneyimi sağlamak için, MENU API kullanarak uygulamanız için seçenekler ve diğer kullanıcı işlemleri sunabilirsiniz.

    Android 3.0 ile başlayarak, Android yüklü cihazlarda özel konumlandırılmış Menu buttonuna daha fazla ihtiyaç kalmamaktadır. Bu değişim ile, geleneksel 6- item içeren menu panele sahip cihazlara bağlı olmaktan kurtularak tüm platformlardan erişilebilir uygulamalar geliştirmenin yanı sıra, ortak kullanıcı işlemleri için Action Bar seçeneği sunar.

     Bazı menu itemler için kullanıcı deneyimleri ve tasarımlar değişse de, işlem seti ve seçenekler ile ilgili söz dizimler hala Menu API ile tanımlanmaktadır. Bu içerik ile üç temel menü türünü ya da tüm Android sürümleri için işlem tanımlamasının nasıl yapıldığını anlatmaktadır.


Options Menu ve Action Bar

    Options Menu bir aktiviti için birincil menu ürünleri koleksiyonudur. Uygulamanız için genel olarak tanımlayacağınız menü işlemleri ( "Arama-Search","Mail Oluştur-Compose Mail","Ayarlar-Settings") konumlayacağınız yerdir.

    Android 2.3 ve daha eski sürümler için geliştirme yapıyorsanız, options menü kullanıcı tarafından Menu düğmesine basıldığı anda görülecektir. 
    Android 3.0 ve üzeri platformlar için ise options menü son-screen işlemler ve overflow işlemlerin kombinasyonu olarak action bar şeklinde sağlanmaktadır. Android 3.0 ile başlayarak Menu button kullanılmasına gerek kalmıyor. Böylece action bar kullanarak işlemlere ve diğer seçeneklere erişim sağlayıp bu yetenekleri diğer tüm platformlara rahatlıkla taşıyabiliriz.

On-Screen : Action Bar kısmında gösterilen menü itemlerini ifade eder.
Overflow   : 3 nokta ile tanımlanan ve tıklandığında diğer menü itemlerin görüntülendiği kısımdır.                         Overflow kelime anlamı ile taşmayı ifade ettiğinden bu kısım için uygun bir ifadedir.


Context Menu ve Contextual Action 

    Context Menu (İçeriksel Menü) kullanıcının herhangi bir iteme uzun sürekli tıklayıp kalması ile ortaya çıkan floating menüdür. Bu menü ile, seçilmiş olan item ile ilgili veya Context Frama ile alakalı işlemler penceresi açar.

    Android 3.0 ve üzeri için geliştirme yaptığımızda, floating menu yerine contextual action mode özelliğini aktif etmeniz gerekir. Bu mod ile item seçildiğinde yapılmasını istediğim seçeneklerin ekranın üst kısmında (action bar kısmı) belirmesi sağlanır ve kullanıcıya birden fazla item seçme imkanı verir.



Floating Context Menu (Solda) Contextual Action Mode ( Sağda)

Pop-Up Menu

    Bir Pop-up menü, menüde View ile ilişkilendirilmiş dikey bir liste halinde items listesi görüntüler. Bu yöntem, tanımlı içerik ile ilgili taşan (overflow) işlemleri göstermek için veya komutun ikinci kısmı için seçenek sunmak için iyi bir araçtır. Pop-up menüdeki işlemler, ilişkilendirilmiş içerikleri doğrudan etkilememelidir.(Bu Contextual Actions ne için var olduğunu açıklar). Aslında pop-up menü activitinizdeki içerik bölgeleri ile ilgili genişletilmiş işlemleri görüntüler. Contextual Actions dan ayrıldığı nokta budur.

Bir sonraki bölümde XML ile Menu tanımlaması yapacağız..

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







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

14 Şubat 2015 Cumartesi

Intent Tabanlı Menü İtemleri Eklemek


    Bazı durumlarda seçilen menü itemi aracılığıyla Intent(Bu başlığı daha detaylı ele alacağız) kullanarak bir activity veya başka bir uygulama açmak isteyebilirsiniz. Belirli menü itemi için kullanmak istediğiniz intenti (niyet, maksat) biliyorsanız, uygun item seçildiğinde ilgili callback(geri dönüş) metoduyla startActivity() metoduyla intent başlatabilirsiniz.

    Eğer intent işlemini başlatacak olan uygulamayı kullanıcının cihazındaki içeriğe göre belirlemezseniz, bu intenti çağıracak menü itemi eklemek fonksiyonel olmayan bir menü işlemiyle sonuçlanır. Çünkü, Inten bir Activity'i çözümlemek olmayabilir. Bu sorunu çözmek için, Android Intent'in işleme alabileceği aktiviteler bulduğunda dinamik olarak menü itemlerini ekleme imkânı tanır.

    Menü itemi eklemek, kabul edilen bir intent için müsait olan aktiviteleri temel alır.

  1. Intent tanımını CATEGORY_ALTERNATIVE ve/veya CATEGORY_SELECTED_ALTERNATIVE şeklinde, diğer gereklilikleri de ekleyerek yapınız.
  2. Menu.addIntentOptions() metodunu çağırın. Android böylece uygulamaları tarayacak ve intenti işleyip menüye ekleyecektir.
     Intent ile uyumlu bir uygulama yüklü bulunmadıysa eğer, herhangi bir menü itemi eklenmeyecektir.


    ÖRNEK:

@Override
    public boolean onCreateOptionsMenu(Menu menu){
        super.onCreateOptionsMenu(menu);

        // Create an Intent that describes the requirements to fulfill, to be included
        // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
        Intent intent = new Intent(null, dataUri);
        intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

        // Search and populate the menu with acceptable offering applications.
        menu.addIntentOptions(
                R.id.menu_archive,  // Menu group to which new items will be added
                0,      // Unique item ID (none)
                0,      // Order for the items (none)
                this.getComponentName(),   // The current activity name
                null,   // Specific items to place first (none)
                intent, // Intent created above that describes our requirements
                0,      // Additional flags to control items (none)
                null);  // Array of MenuItems that correlate to specific items (none)

        return true;
    }


     Menü item başlığını ve menü item iconunu android:label değeri belirleyerek intent filtreleme yaptığımızda her tanımlı menü aktivitesi için tanımlı bir intent sağlanır. addIntentOptions() metodu, eklenmiş menü itemi sayısını döndürür.

NOT: addIntentOptions() metodunu çağırdığınızda, ilk argüman ile tanımlanmış gruplanmış tüm menü itemlerini Override eder.


Aktivitinizin diğer Menülere eklenmesine izin vermek


    Aktivitinizin servislerini diğer uygulamalara da teklif edebilirsiniz. Böylece uygulamanız diğer uygulamaların menülerinde de yer alabilir. Bu düzenlemeleri AndroidManifest.xml de yapmanız gerekiyor.

    Diğer uygulama menülerinde yer alabilmek için, bilindik şekilde bir intent filter yapmanız lazım ve bu tanımlamayı yaparken, CATEGORY_ALTERNATIVE ve/veya CATEGORY_SELECTED_ALTERNATIVE değerlerini intent filter kategorisi için tanımladığınızdan emin olmalısınız.

ÖRNEK:

<intent-filter label="@string/resize_image">
    ...
    <category android:name="android.intent.category.ALTERNATIVE" />
    <category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
    ...</intent-filter>

Intenler hakkında daha fazla bilgi için Buradan

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

8 Şubat 2015 Pazar

Android - Menu Kavramı Context Menu Oluşturmak - 4

Context Menü (İçeriğe has menü ) Oluşturmak

Orijinal Döküman

    Menü kavramına giriş yaptığımız yazımızda kısaca değindiğimiz Context Menu kavramını bu bölümde daha detaylı olarak ele alacağız. Ben de sizler gibi bu konuyu en iyi öğrenebileceğim kaynak olan Developer.android.com adresini gün içinde defalarca ziyaret ederek hem kendim, hem de sizlerin bu kaynağın Türkçeleştirilmiş hâline erişerek bu işi öğrenmemizi amaçladığımı da tekrardan buradan aktarmak isterim.

     Contextual Menü, UI içindeki Context Frame veya belirli itemleri etkileyecek menü işlemleri sağlar. Herhangi bir View için Contextual Menü tanımlaması yapabilirsiniz ama, bu özellik sıklıkla kullanıcının her bir item için doğrudan işlem yapabileceği ListView ve GridView ya da diğer view koleksiyonları için kullanılır. 


    Contextual işlemleri sağlamak için 2 yöntem vardır. Bunlar;

  • Floating Context Menü: Menü, kullanıcının uzun süreli dokunmaları sonucu diyaloglar ile benzer şekilde floating list menü şeklinde görünür. Kullanıcılar aynı anda sadece bir item için contextual işlem gerçekleştirebilir.
  • Contextual Action Mode: Bu mod, ekranın üst kısmında seçili itemlerin etkileneceği işlem listesini görüntüleyen contextual action bar bir ActionMode uygulamasıdır. Bu mod aktif olduğunda (uygulamanız izin veriyorsa) aynı anda birden fazla seçili olan menü itemi için işlem yapılmasını sağlar.
NOT: Contextual Action Mod Android 3.0 ve daha yeni sürümler için sağlanır ve contextual actions gösterimi için tercih edilen bir tekniktir. Android 3.0'dan daha eski sürümler için bir uygulama geliştiriyorsanız, floating contextual menü özelliğini tercih etmeniz gerekir.


Floating Contextual Menü Oluşturmak

    Floating Context Menü oluşturmak için, 

  1. registerForContextMenu() metodu aracılığıyla ilişkilendirilmiş Context Menü View'ini Register edip ardından bunun View'e geçirmelisiniz. Aktivitiniz ListView veya GridView seçeneklerinden birini kullanıyorsanız ve her itemin aynı context menüyü sağlamasını istiyorsanız, Context Menü için tüm itemleri register edip ListView veya GridView'leri  registerForContextMenu() 'ye parametre olarak geçmelisiniz.
  2. onCreateContextMenu() metodunu Aktivitinize veya Fragment'inize uygulayın. Register edilen view'ler uzun-tıklama olayını aldıklarında, sistem onCreateContextMenu() metodu sistem tarafından çağrılır. Bu metot her zaman menu resource'nin inflate edildiği ve menü itemlerinin tanımlandığı yerdir.

Örnek Kod:

 @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }
    

    MenuInflater size, menu resource'de tanımlı olan context menüyü ekranda gösterme imkânı sağlar. Geri dönüş metodu parametreleri Context Menü'de yer alan ve kullanıcını seçtiği View'leri içerir. ContextMenuInfo nesnesi, seçili menü itemleri hakkında ek bilgiler sağlar. Eğer aktivitiniz'de yer alan viewlerın her biri farklı context menü sağlıyorsa, hangi context menü'nün gösterileceğine (inflate) karar verebilmek için bu parametreleri kullanmalısınız.

    3. onContextItemSelected() metodunu uygulayın ( implemente edin). Kullanıcı menü itemini seçtiğinde, belirlemiş olduğunuz uygun işlemi gerçekleştirmek için sistem bu metodu çağıracaktır.


Örnek Kod:

   @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        switch (item.getItemId()) {
            case R.id.edit:
                editNote(info.id);
                return true;
            case R.id.delete:
                deleteNote(info.id);
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }

     getItemId() metodu, XML menü resource'de "android:id" niteliği ile belirlemiş olduğunuz ve seçilmiş olan menü itemi için benzersiz olan ID'yi sorgular. Menü itemi başarı ile ele aldığınızda, dönüş değeri true olur. Menü itemi ele alamadığımızda ise menü itemleri superclass implementetion'a geçirmelisiniz. Aktivitiniz fragment içeriyorsa, bu geri dönüşü ilk olarak aktiviti alır. Ele alınmadığı durumda superclass çağırdığımızda, herhangi bir anda true ya da false değeri dönene kadar sistem olayları her fragment için tek tek geçirir.

     android.app.fragment ve Aktiviti için varsayılan dönüş değeri false'dir, bu nedenle Menü itemi başarılı bir şekilde ele alamadığınızda her zaman superclass metodunu çağırmalısınız.


Contextual Action Mode Aktif Etmek

    Contextual Action Mode, contextual işlemler uygulayan kullanıcı işlemlerine odaklandığı ActionMode'un sistem uygulamasıdır. Kullanıcı, item seçerek bu modu aktif ettiğinde, contextual action bar ekranın üst kısmında görünür ve seçili item için kullanıcının gerçekleştirebileceği işlemleri sunar. Eğer geliştirici olarak izin sağlarsanız bu mod aktif olduğunda, kullanıcı birden fazla item seçmek, bırakmak ve aktiviti ile bunları taşımak (yine sizin müsade ettiğiniz kadarıyla) gibi işlemleri yapabilir. Action mode pasif olduğunda ve contextual action bar, kullanıcı seçmiş olduğu itmeleri bıraktığında veya BACK butona tıkladığında veya bar'ın sol tarafında yer alan Done işlemini seçtiğinde yukarıda kaybolur. 

     NOT: Contextual Action Bar, action bar ile ilişkilendirilmiş olmak zorunda değildir. Bu iki birim, contextual action bar, action barın üzerine gelse de birbirinden bağımsız çalışmaktadır.


     Eğer Android 3.0 ve daha yeni sürümler için geliştirme yapıyorsanız, floating contextual menü yerine her zaman contextual işlemler için contextual action mod'u kullanmalısınız. 

     Contextual Actions sağlayan view'ler için, contextual action mod'u aşağıdaki durumlardan biri veya her ikisi için çağırmalısınız.
  • Kullanıcı View'e uzun süre tıklama işlemini gerçekleştirirse.
  • Kullanıcı View içerisinde check box'a veya benzer bir UI bileşenin işaretlerse.

    Uygulamanızın contextual action mod'u nasıl çağıracağı ve her bir işlem için nasıl davranacağı sizin tasarımınıza bağlıdır. Temel olarak iki tasarım vardır:

  • Kişisel, isteğe bağlı viewlerin contextual işlemleri için,
  • ListView veya GridView içinde yer alan item gruplarında contextual işlemler yığını için.           (kullanıcının birden fazla item seçmesine izin verip, tamamı için tek bir işlem yapmasını sağlamak için)

    Bir sonraki Yazımızda ise her bir senaryo için gerekli düzenlemeleri tanımlamaktadır.

Görüşmek üzere..

Soru Ve Görüşlerinizi için: JavaVeAndroid




Android- Menu Kavramı - 1


Android - Menu Kavramı -1  

Orijinal Döküman
    Menuler bir çok uygulama türü içerisinde sıklıklar karşılaştığımız bir UI (User Interface) bileşenidir. Aktivitinizde alışılmış ve tutarlı bir kullanıcı deneyimi sağlamak için, MENU API kullanarak uygulamanız için seçenekler ve diğer kullanıcı işlemleri sunabilirsiniz.

    Android 3.0 ile başlayarak, Android yüklü cihazlarda özel konumlandırılmış Menu buttonuna daha fazla ihtiyaç kalmamaktadır. Bu değişim ile, geleneksel 6- item içeren menu panele sahip cihazlara bağlı olmaktan kurtularak tüm platformlardan erişilebilir uygulamalar geliştirmenin yanı sıra, ortak kullanıcı işlemleri için Action Bar seçeneği sunar.

     Bazı menu itemler için kullanıcı deneyimleri ve tasarımlar değişse de, işlem seti ve seçenekler ile ilgili söz dizimler hala Menu API ile tanımlanmaktadır. Bu içerik ile üç temel menü türünü ya da tüm Android sürümleri için işlem tanımlamasının nasıl yapıldığını anlatmaktadır.


Options Menu ve Action Bar

    Options Menu bir aktiviti için birincil menu ürünleri koleksiyonudur. Uygulamanız için genel olarak tanımlayacağınız menü işlemleri ( "Arama-Search","Mail Oluştur-Compose Mail","Ayarlar-Settings") konumlayacağınız yerdir.

    Android 2.3 ve daha eski sürümler için geliştirme yapıyorsanız, options menü kullanıcı tarafından Menu düğmesine basıldığı anda görülecektir. 
    Android 3.0 ve üzeri platformlar için ise options menü son-screen işlemler ve overflow işlemlerin kombinasyonu olarak action bar şeklinde sağlanmaktadır. Android 3.0 ile başlayarak Menu button kullanılmasına gerek kalmıyor. Böylece action bar kullanarak işlemlere ve diğer seçeneklere erişim sağlayıp bu yetenekleri diğer tüm platformlara rahatlıkla taşıyabiliriz.

On-Screen : Action Bar kısmında gösterilen menü itemlerini ifade eder.
Overflow   : 3 nokta ile tanımlanan ve tıklandığında diğer menü itemlerin görüntülendiği kısımdır.                         Overflow kelime anlamı ile taşmayı ifade ettiğinden bu kısım için uygun bir ifadedir.


Context Menu ve Contextual Action 

    Context Menu (İçeriksel Menü) kullanıcının herhangi bir iteme uzun sürekli tıklayıp kalması ile ortaya çıkan floating menüdür. Bu menü ile, seçilmiş olan item ile ilgili veya Context Frama ile alakalı işlemler penceresi açar.

    Android 3.0 ve üzeri için geliştirme yaptığımızda, floating menu yerine contextual action mode özelliğini aktif etmeniz gerekir. Bu mod ile item seçildiğinde yapılmasını istediğim seçeneklerin ekranın üst kısmında (action bar kısmı) belirmesi sağlanır ve kullanıcıya birden fazla item seçme imkanı verir.



Floating Context Menu (Solda) Contextual Action Mode ( Sağda)

Pop-Up Menu

    Bir Pop-up menü, menüde View ile ilişkilendirilmiş dikey bir liste halinde items listesi görüntüler. Bu yöntem, tanımlı içerik ile ilgili taşan (overflow) işlemleri göstermek için veya komutun ikinci kısmı için seçenek sunmak için iyi bir araçtır. Pop-up menüdeki işlemler, ilişkilendirilmiş içerikleri doğrudan etkilememelidir.(Bu Contextual Actions ne için var olduğunu açıklar). Aslında pop-up menü activitinizdeki içerik bölgeleri ile ilgili genişletilmiş işlemleri görüntüler. Contextual Actions dan ayrıldığı nokta budur.

Bir sonraki bölümde XML ile Menu tanımlaması yapacağız..

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







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

14 Şubat 2015 Cumartesi

Intent Tabanlı Menü İtemleri Eklemek


    Bazı durumlarda seçilen menü itemi aracılığıyla Intent(Bu başlığı daha detaylı ele alacağız) kullanarak bir activity veya başka bir uygulama açmak isteyebilirsiniz. Belirli menü itemi için kullanmak istediğiniz intenti (niyet, maksat) biliyorsanız, uygun item seçildiğinde ilgili callback(geri dönüş) metoduyla startActivity() metoduyla intent başlatabilirsiniz.

    Eğer intent işlemini başlatacak olan uygulamayı kullanıcının cihazındaki içeriğe göre belirlemezseniz, bu intenti çağıracak menü itemi eklemek fonksiyonel olmayan bir menü işlemiyle sonuçlanır. Çünkü, Inten bir Activity'i çözümlemek olmayabilir. Bu sorunu çözmek için, Android Intent'in işleme alabileceği aktiviteler bulduğunda dinamik olarak menü itemlerini ekleme imkânı tanır.

    Menü itemi eklemek, kabul edilen bir intent için müsait olan aktiviteleri temel alır.

  1. Intent tanımını CATEGORY_ALTERNATIVE ve/veya CATEGORY_SELECTED_ALTERNATIVE şeklinde, diğer gereklilikleri de ekleyerek yapınız.
  2. Menu.addIntentOptions() metodunu çağırın. Android böylece uygulamaları tarayacak ve intenti işleyip menüye ekleyecektir.
     Intent ile uyumlu bir uygulama yüklü bulunmadıysa eğer, herhangi bir menü itemi eklenmeyecektir.


    ÖRNEK:

@Override
    public boolean onCreateOptionsMenu(Menu menu){
        super.onCreateOptionsMenu(menu);

        // Create an Intent that describes the requirements to fulfill, to be included
        // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
        Intent intent = new Intent(null, dataUri);
        intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

        // Search and populate the menu with acceptable offering applications.
        menu.addIntentOptions(
                R.id.menu_archive,  // Menu group to which new items will be added
                0,      // Unique item ID (none)
                0,      // Order for the items (none)
                this.getComponentName(),   // The current activity name
                null,   // Specific items to place first (none)
                intent, // Intent created above that describes our requirements
                0,      // Additional flags to control items (none)
                null);  // Array of MenuItems that correlate to specific items (none)

        return true;
    }


     Menü item başlığını ve menü item iconunu android:label değeri belirleyerek intent filtreleme yaptığımızda her tanımlı menü aktivitesi için tanımlı bir intent sağlanır. addIntentOptions() metodu, eklenmiş menü itemi sayısını döndürür.

NOT: addIntentOptions() metodunu çağırdığınızda, ilk argüman ile tanımlanmış gruplanmış tüm menü itemlerini Override eder.


Aktivitinizin diğer Menülere eklenmesine izin vermek


    Aktivitinizin servislerini diğer uygulamalara da teklif edebilirsiniz. Böylece uygulamanız diğer uygulamaların menülerinde de yer alabilir. Bu düzenlemeleri AndroidManifest.xml de yapmanız gerekiyor.

    Diğer uygulama menülerinde yer alabilmek için, bilindik şekilde bir intent filter yapmanız lazım ve bu tanımlamayı yaparken, CATEGORY_ALTERNATIVE ve/veya CATEGORY_SELECTED_ALTERNATIVE değerlerini intent filter kategorisi için tanımladığınızdan emin olmalısınız.

ÖRNEK:

<intent-filter label="@string/resize_image">
    ...
    <category android:name="android.intent.category.ALTERNATIVE" />
    <category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
    ...</intent-filter>

Intenler hakkında daha fazla bilgi için Buradan

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

8 Şubat 2015 Pazar

Android - Menu Kavramı Context Menu Oluşturmak - 4

Context Menü (İçeriğe has menü ) Oluşturmak

Orijinal Döküman

    Menü kavramına giriş yaptığımız yazımızda kısaca değindiğimiz Context Menu kavramını bu bölümde daha detaylı olarak ele alacağız. Ben de sizler gibi bu konuyu en iyi öğrenebileceğim kaynak olan Developer.android.com adresini gün içinde defalarca ziyaret ederek hem kendim, hem de sizlerin bu kaynağın Türkçeleştirilmiş hâline erişerek bu işi öğrenmemizi amaçladığımı da tekrardan buradan aktarmak isterim.

     Contextual Menü, UI içindeki Context Frame veya belirli itemleri etkileyecek menü işlemleri sağlar. Herhangi bir View için Contextual Menü tanımlaması yapabilirsiniz ama, bu özellik sıklıkla kullanıcının her bir item için doğrudan işlem yapabileceği ListView ve GridView ya da diğer view koleksiyonları için kullanılır. 


    Contextual işlemleri sağlamak için 2 yöntem vardır. Bunlar;

  • Floating Context Menü: Menü, kullanıcının uzun süreli dokunmaları sonucu diyaloglar ile benzer şekilde floating list menü şeklinde görünür. Kullanıcılar aynı anda sadece bir item için contextual işlem gerçekleştirebilir.
  • Contextual Action Mode: Bu mod, ekranın üst kısmında seçili itemlerin etkileneceği işlem listesini görüntüleyen contextual action bar bir ActionMode uygulamasıdır. Bu mod aktif olduğunda (uygulamanız izin veriyorsa) aynı anda birden fazla seçili olan menü itemi için işlem yapılmasını sağlar.
NOT: Contextual Action Mod Android 3.0 ve daha yeni sürümler için sağlanır ve contextual actions gösterimi için tercih edilen bir tekniktir. Android 3.0'dan daha eski sürümler için bir uygulama geliştiriyorsanız, floating contextual menü özelliğini tercih etmeniz gerekir.


Floating Contextual Menü Oluşturmak

    Floating Context Menü oluşturmak için, 

  1. registerForContextMenu() metodu aracılığıyla ilişkilendirilmiş Context Menü View'ini Register edip ardından bunun View'e geçirmelisiniz. Aktivitiniz ListView veya GridView seçeneklerinden birini kullanıyorsanız ve her itemin aynı context menüyü sağlamasını istiyorsanız, Context Menü için tüm itemleri register edip ListView veya GridView'leri  registerForContextMenu() 'ye parametre olarak geçmelisiniz.
  2. onCreateContextMenu() metodunu Aktivitinize veya Fragment'inize uygulayın. Register edilen view'ler uzun-tıklama olayını aldıklarında, sistem onCreateContextMenu() metodu sistem tarafından çağrılır. Bu metot her zaman menu resource'nin inflate edildiği ve menü itemlerinin tanımlandığı yerdir.

Örnek Kod:

 @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }
    

    MenuInflater size, menu resource'de tanımlı olan context menüyü ekranda gösterme imkânı sağlar. Geri dönüş metodu parametreleri Context Menü'de yer alan ve kullanıcını seçtiği View'leri içerir. ContextMenuInfo nesnesi, seçili menü itemleri hakkında ek bilgiler sağlar. Eğer aktivitiniz'de yer alan viewlerın her biri farklı context menü sağlıyorsa, hangi context menü'nün gösterileceğine (inflate) karar verebilmek için bu parametreleri kullanmalısınız.

    3. onContextItemSelected() metodunu uygulayın ( implemente edin). Kullanıcı menü itemini seçtiğinde, belirlemiş olduğunuz uygun işlemi gerçekleştirmek için sistem bu metodu çağıracaktır.


Örnek Kod:

   @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        switch (item.getItemId()) {
            case R.id.edit:
                editNote(info.id);
                return true;
            case R.id.delete:
                deleteNote(info.id);
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }

     getItemId() metodu, XML menü resource'de "android:id" niteliği ile belirlemiş olduğunuz ve seçilmiş olan menü itemi için benzersiz olan ID'yi sorgular. Menü itemi başarı ile ele aldığınızda, dönüş değeri true olur. Menü itemi ele alamadığımızda ise menü itemleri superclass implementetion'a geçirmelisiniz. Aktivitiniz fragment içeriyorsa, bu geri dönüşü ilk olarak aktiviti alır. Ele alınmadığı durumda superclass çağırdığımızda, herhangi bir anda true ya da false değeri dönene kadar sistem olayları her fragment için tek tek geçirir.

     android.app.fragment ve Aktiviti için varsayılan dönüş değeri false'dir, bu nedenle Menü itemi başarılı bir şekilde ele alamadığınızda her zaman superclass metodunu çağırmalısınız.


Contextual Action Mode Aktif Etmek

    Contextual Action Mode, contextual işlemler uygulayan kullanıcı işlemlerine odaklandığı ActionMode'un sistem uygulamasıdır. Kullanıcı, item seçerek bu modu aktif ettiğinde, contextual action bar ekranın üst kısmında görünür ve seçili item için kullanıcının gerçekleştirebileceği işlemleri sunar. Eğer geliştirici olarak izin sağlarsanız bu mod aktif olduğunda, kullanıcı birden fazla item seçmek, bırakmak ve aktiviti ile bunları taşımak (yine sizin müsade ettiğiniz kadarıyla) gibi işlemleri yapabilir. Action mode pasif olduğunda ve contextual action bar, kullanıcı seçmiş olduğu itmeleri bıraktığında veya BACK butona tıkladığında veya bar'ın sol tarafında yer alan Done işlemini seçtiğinde yukarıda kaybolur. 

     NOT: Contextual Action Bar, action bar ile ilişkilendirilmiş olmak zorunda değildir. Bu iki birim, contextual action bar, action barın üzerine gelse de birbirinden bağımsız çalışmaktadır.


     Eğer Android 3.0 ve daha yeni sürümler için geliştirme yapıyorsanız, floating contextual menü yerine her zaman contextual işlemler için contextual action mod'u kullanmalısınız. 

     Contextual Actions sağlayan view'ler için, contextual action mod'u aşağıdaki durumlardan biri veya her ikisi için çağırmalısınız.
  • Kullanıcı View'e uzun süre tıklama işlemini gerçekleştirirse.
  • Kullanıcı View içerisinde check box'a veya benzer bir UI bileşenin işaretlerse.

    Uygulamanızın contextual action mod'u nasıl çağıracağı ve her bir işlem için nasıl davranacağı sizin tasarımınıza bağlıdır. Temel olarak iki tasarım vardır:

  • Kişisel, isteğe bağlı viewlerin contextual işlemleri için,
  • ListView veya GridView içinde yer alan item gruplarında contextual işlemler yığını için.           (kullanıcının birden fazla item seçmesine izin verip, tamamı için tek bir işlem yapmasını sağlamak için)

    Bir sonraki Yazımızda ise her bir senaryo için gerekli düzenlemeleri tanımlamaktadır.

Görüşmek üzere..

Soru Ve Görüşlerinizi için: JavaVeAndroid




Android- Menu Kavramı - 1


Android - Menu Kavramı -1  

Orijinal Döküman
    Menuler bir çok uygulama türü içerisinde sıklıklar karşılaştığımız bir UI (User Interface) bileşenidir. Aktivitinizde alışılmış ve tutarlı bir kullanıcı deneyimi sağlamak için, MENU API kullanarak uygulamanız için seçenekler ve diğer kullanıcı işlemleri sunabilirsiniz.

    Android 3.0 ile başlayarak, Android yüklü cihazlarda özel konumlandırılmış Menu buttonuna daha fazla ihtiyaç kalmamaktadır. Bu değişim ile, geleneksel 6- item içeren menu panele sahip cihazlara bağlı olmaktan kurtularak tüm platformlardan erişilebilir uygulamalar geliştirmenin yanı sıra, ortak kullanıcı işlemleri için Action Bar seçeneği sunar.

     Bazı menu itemler için kullanıcı deneyimleri ve tasarımlar değişse de, işlem seti ve seçenekler ile ilgili söz dizimler hala Menu API ile tanımlanmaktadır. Bu içerik ile üç temel menü türünü ya da tüm Android sürümleri için işlem tanımlamasının nasıl yapıldığını anlatmaktadır.


Options Menu ve Action Bar

    Options Menu bir aktiviti için birincil menu ürünleri koleksiyonudur. Uygulamanız için genel olarak tanımlayacağınız menü işlemleri ( "Arama-Search","Mail Oluştur-Compose Mail","Ayarlar-Settings") konumlayacağınız yerdir.

    Android 2.3 ve daha eski sürümler için geliştirme yapıyorsanız, options menü kullanıcı tarafından Menu düğmesine basıldığı anda görülecektir. 
    Android 3.0 ve üzeri platformlar için ise options menü son-screen işlemler ve overflow işlemlerin kombinasyonu olarak action bar şeklinde sağlanmaktadır. Android 3.0 ile başlayarak Menu button kullanılmasına gerek kalmıyor. Böylece action bar kullanarak işlemlere ve diğer seçeneklere erişim sağlayıp bu yetenekleri diğer tüm platformlara rahatlıkla taşıyabiliriz.

On-Screen : Action Bar kısmında gösterilen menü itemlerini ifade eder.
Overflow   : 3 nokta ile tanımlanan ve tıklandığında diğer menü itemlerin görüntülendiği kısımdır.                         Overflow kelime anlamı ile taşmayı ifade ettiğinden bu kısım için uygun bir ifadedir.


Context Menu ve Contextual Action 

    Context Menu (İçeriksel Menü) kullanıcının herhangi bir iteme uzun sürekli tıklayıp kalması ile ortaya çıkan floating menüdür. Bu menü ile, seçilmiş olan item ile ilgili veya Context Frama ile alakalı işlemler penceresi açar.

    Android 3.0 ve üzeri için geliştirme yaptığımızda, floating menu yerine contextual action mode özelliğini aktif etmeniz gerekir. Bu mod ile item seçildiğinde yapılmasını istediğim seçeneklerin ekranın üst kısmında (action bar kısmı) belirmesi sağlanır ve kullanıcıya birden fazla item seçme imkanı verir.



Floating Context Menu (Solda) Contextual Action Mode ( Sağda)

Pop-Up Menu

    Bir Pop-up menü, menüde View ile ilişkilendirilmiş dikey bir liste halinde items listesi görüntüler. Bu yöntem, tanımlı içerik ile ilgili taşan (overflow) işlemleri göstermek için veya komutun ikinci kısmı için seçenek sunmak için iyi bir araçtır. Pop-up menüdeki işlemler, ilişkilendirilmiş içerikleri doğrudan etkilememelidir.(Bu Contextual Actions ne için var olduğunu açıklar). Aslında pop-up menü activitinizdeki içerik bölgeleri ile ilgili genişletilmiş işlemleri görüntüler. Contextual Actions dan ayrıldığı nokta budur.

Bir sonraki bölümde XML ile Menu tanımlaması yapacağız..

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