7 Nisan 2017 Cuma

Android Material Design Icon Generator Plugin

Merhabalar,

Projeleriniz için rahatça Material Ikon ekleyebilmeniz için bir eklenti keşfettim.
Bu eklenti sayesinde istediğiniz boyutlarda, renkte ve tipte ikonu hızlıca ekleyebiliyoruz.
Aşağıdaki gifte göreceğiniz işlemleri yapmanız yeterlidir.

Not: En aşağıda verdiğin kaynak linkini incelerseniz Linux ve macOS için anlatımı mevcuttur.




Kurulum
1- Eklentinin son veriyonu BURAYA TIKLAYARAK indirilir.
2- Android Studio açınız.
3- Toolbardan File|Settings | Plugins yerine kadar açınız.
4- Ekranın aşağısındaki 3 butonun en sağındaki "Install from disk" e basıp indirdiğimiz .zip dosyasını seçiyoruz.
5- Android Studioyu kapatıp tekrar açıyoruz.

Kaynakhttps://github.com/konifar/android-material-design-icon-generator-plugin

3 Nisan 2017 Pazartesi

Android Swipe Layout

Merhabalar,

Aşağıda gördüğünüz gifdeki kaydırma olayı(Swipe Layout) IOS da çok sıklıkla kullanılan bir olaydır. Benzerini bir projemde harici kütüphane olarak kullandığım olmuştu.Birçok açıdan buton tasarrufu sağlayan bir yapı olduğu için paylaşmak istedim.

GitHub: https://github.com/barisatalay/SwipeLayout

IOS Örneği



Android Örneği


Kurulum:
Gradle Eklenecek:
      compile "com.daimajia.swipelayout:library:1.2.0@aar"

Bu Swipe Layout için RecyclerView kullandığı adapterimizin "RecyclerSwipeAdapter" sınıfından türemesi gerek ve aşağıdaki methodu adapterimize tanımlamalıyız.

@Override
public int getSwipeLayoutResourceId(int position) {
  //Buradaki sample_swipe Satır layoutunda görebilirsiniz.
  return R.id.sample_swipe;
}

Sıradaki işlemimiz adapterin ViewHolder constructor bölümünde xml tarafındaki SwipeLayout elemanının özelliklerini atamak.


swipeLayout.addDrag(SwipeLayout.DragEdge.Right, swipeLayout.findViewWithTag("Bottom2"));

setShowMode(SwipeLayout.ShowMode.LayDown);


Yukarıda findViewWithTag içerisindeki Bottom2 satır layoutumuzdaki SwipeLayout elemanının alt viewi olan ve kaydırınca gözükecek bölümün tagıdır.

Okurken biraz karışık gelebilir fakat örnek kodu Github'dan incelediğinizde çok basit bir kullanımın olduğunu göreceksiniz.

Aşağıda kaynağı paylaşıyorum benim anlattıgımdandan farklı Swipe örnekleri mevcuttur.

Kaynakhttps://github.com/daimajia/AndroidSwipeLayout

30 Mart 2017 Perşembe

Android Studio İpuçları

Merhabalar,

Android Studio'nun IDE üzerindeki ayarlarınızı İçe Aktarma / Dışa Aktarma gibi özelliği mevcuttur.
Yeni bir Android Studio sürümü yüklediğinizde fark etmişsinizdir size içe aktarmak ister misiniz diye sormakta.

Önemli Tavsiye: Ayarlarınızı her zaman Google ile login olarak bulut üzerinde saklamanız.

Satır Numaralarını Gösterme
Android Studio'yu ilk kurduğumda ve kullanmaya başladığımda hata loglarında bana gösterilen satır numaralarını rahatça görebilmekti. Bunun varsayılan olarak neden gösterilmediğini hiç merak ettiniz mi ?

Satır numaraları gözümezken

Satır numaraları ile

Kurulum
1- Toolbardan File|Settings|Editor|General|Appearance  yerine kadar açınız.
2- Aşağıdaki resimde gösterildiği gibi "Show line numbers" seçeneğini işaretleyiniz.



Camel humps
Ctrl + Sol/Sağ ok tuşlarıyla kodunuz arasında dolaşırken Android Studio 'Camel Humps' sözlerine saymaz.



Kurulum
1- Toolbardan File|Settings|Editor|General|Smart Keys  yerine kadar açınız.
2- Aşağıdaki resimde gösterildiği gibi "Camel Humps" seçeneğini işaretleyiniz.


Not: Bu işlemi yaptıktan sonra artık kelime kelime seçebilme şansınız oluyor. Denediğinizde göreceksiniz biraz sinir bozucu bir durum. Eğer mouse ile seçerken bütün hepsini seçmesini istiyorsanız aşağıdaki adımları uygulamanız gerekmektedir.

Kurulum
1- Toolbardan File|Settings|Editor|General  yerine kadar açınız.
2- Açılan yerde 'Honor "CamelHumps" words settings when selecting on double click' seçeneğinin işaretini kaldırınız.


Anında Kütüphane Ekleme

Android Studio'da kullanılmayan içe aktarmaları otomatik olarak içe aktarmak veya temizlemek için kısayollar vardır. Sene olmuş 2017 bizi uğraştırmak yerine otomatik olarak sınıfın kütüphanesini kendisi eklese hoş olmaz mı?

Anında Kütüphane Ekleme olmadan


Anında Kütüphane Ekleme ile



Kurulum
1- Toolbardan File|Settings|Editor|General|Auto Import yerine kadar açınız.
2- Aşağıdaki resimdeki gibi "Optimize imports on the fly" ve "Add unambiguous imports on the fly" seçeneklerini işaretleyiniz.
















29 Mart 2017 Çarşamba

Android Studio Inner Builder

InnerBuilder

Bu eklenti sayesinde onlarca saniyenizi alan bir işlem olan builder constructor oluşturma işlemini saniyelere indirebilirsiniz. 

Eklenti dosyasını BURADAN indirebilirsiniz.


28 Mart 2017 Salı

Android File Grouping Plugin v1.1

Merhabalar,

Aşağıda bahsettiğim eklenti sayesinde proje görünümünüz "Project" ise resource klasörlerinizi gruplamanıza olanak sağlar.



Önemli Not:

  • Klasörleri taşımaz.
  • Yeni bir klasör oluşturmaz.
  • İngilizcem çok iyi değildir. Anladığım kadarı ile aktarmaya çalıştım.



Kurulum
1- Eklentinin son veriyonu BURAYA TIKLAYARAK indirilir.
2- Android Studio açınız.
3- Toolbardan File|Settings | Plugins yerine kadar açınız.
4- Ekranın aşağısındaki 3 butonun en sağındaki "Install from disk" e basıp indirdiğimiz .zip dosyasını seçiyoruz.
5- Android Studioyu kapatıp tekrar açıyoruz.

Kullanımı

Örnek olarak "layout" klasöründekileri gruplayalım.

1- "layout" klasörüne sağ tıklayınız.
2- En üste göreceğiniz üzere "Group/Ungroup" seçeneğine tıklayınız.

Hide Folding Prefix

Bu özellik sayesinde dosya adlarını grupladığınız öneksiz görebilirsiniz.


Ön ekleri gizlenmemiş

Ön ekleri gizlenmiş



Kullanımı
1- Toolbardan File|Settings yerine kadar açınız.
2- Sol menüden en aşağıdaki "Other Settings" bölümünü açın.
3- "Hide Folding Prefix" seçeneğini tıklayın.
4- Görünümü yenilemek için klasörleri "daraltın/genişletin"



Custom Prefix Pattern


Custom prefix pattern olmadan

Custom prefix pattern ile

Bu özellik, filtreleme için alt çizginin hangi konumunun alınacağını belirleme olanağı verir.

Kullanımı
1- Toolbardan File|Settings yerine kadar açınız.
2- Sol menüden en aşağıdaki "Other Settings" bölümünü açın.
3- "Use Custom Pattern" işaretlenir ve kendi özel deseniniz tanımlanır.
4- Görünümü yenilemek için klasörleri "daraltın/genişletin"
5- Not: varsayılan desen klasörler oluşturmak için dosya adının ilk iki alt çizgisini alır.



11 Mart 2017 Cumartesi

Android Thermal Bluetooth Printer Helper

Android Thermal Bluetooth Printer Helper



Piyasada birçok farklı termal bluetooth yazıcı olduğu aşikar ve bunların birçoğuna aynı şekil text gönderip yazdırma işlemini yapabiliyoruz. İşte kütüphanemizde bu işe yarıyor.

Ek olarak kütüphanemiz kendi içerisinde;
  İzinleri kontrol ediyor,
  Kendi Yazıcı seçim ekranı mevcut,
  İsteğe göre yazıcı seçim ekranı açtırmadan direk deviceAddress tanımlayarak çıktı alabilinir,
  Test sayfası yazdırma.

Gibi özellikleri mevcuttur. Kütüphaneyi kullandıkça ve yeni özellik gerektikçe eklemelerde bulunacağım.

Kütüphanenin kullanımı oldukça basit. 1 örneği burada yazıyorum devamı github projesi içerisinde.

Github: https://github.com/barisatalay/thermalprinterhelper
Demo: https://play.google.com/store/apps/details?id=com.atalay.bluetoothexample


  
  //Parameter 1: Activity,
  //Paremeter 2: BluetoothCallback interface
  BluetoothProvider bluetoothProvider = new BluetoothProvider(this, this);

  //Control of required permissions.
  //Check terminal device pair / unpair control.
  //Connect to BluetoothSocket
  //If don't have any pair devices, if it have permission open devices activity 
  bluetoothProvider.connect()

  //This value default false
  bluetoothProvider.printText("This is PRINT TEST!!!")

Ekran görüntüleri







8 Mart 2017 Çarşamba

Android LoadingIndicatorView Library

Android LoadingIndicatorView Library

Merhabalar,

Sizlere hali hazırda bulunan bir view kütüphanesi olan "AVLoadingIndicatorView" in farklı bir kullanımı için kütüphane hazırladım. 

Mevcut olan "AVLoadingIndicatorView" sadece xml tarafına eklenen bir componenttir. Ben bunu full ekran loading olarak kullanılabilecek bir kütüphane haline getirdim.

Demo proje içerisinde kütüphanenin desteklediği 27 çeşit loading örneğini görebilirsiniz.



Kullanımı
allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

build.gradle eklenecek olan:
 dependencies {
       compile 'com.github.barisatalay:loadingindicatorview:-SNAPSHOT'
    }

Kullanımı oldukça basit:

   //Parameter 1: Activity,
   //Paremeter 2: Message String or String resource Id
   //Parameter 3: Indicator Type   
   LoadingIndicatorView.show(mActivity, "Please Wait", LoadingType.BallPulseIndicator);

   //For hide Indicator View
   LoadingIndicatorView.hide();

   //For change text Indicator View
   //Paremeter: Message String / String resource Id
   LoadingIndicatorView.changeText("Downloading..");

Aşağıda ekran görüntüleri bulunmakta




7 Mart 2017 Salı

Android Localization Activity

Merhabalar,



Çoğumuz projelerimizde birden fazla dil desteği sağlıyoruz. Bunun için herkes kendisine göre bir yöntem geliştirmiş bulunmakta. Ben genelde Amerikayı yeniden keşfetme taraftarı değilim eğer kütüphane gerçekten istendiği gibi iş yapıyorsa :)

Sizelere bahsedeceğim kütüphane "Android-LocalizationActivity" projenizde istediğiniz kadar dil desteği vermenizi sağlamaktadır.

Ben kendimde nasıl kullanmışsam size öyle bir BaseActivity hazırladım ve aşağıdaki koddan BaseActivitye erişebilirsiniz.

Fakat öncelikle main/res içerisinde hangi dili kullanmak istiyorsanız ona uygun klasörü oluşturmanız gerekmektedir.

Klasör oluştururken kullandığımız isimleri aşağıdaki linkten seçebilirsiniz. Ben bu listedekileri kullanmaktayım.
https://github.com/barisatalay/AndroidLocalizationExample/blob/master/tools/LanguageSource.json

Örneğin almanca için bir dil klasörü oluşturacaksak adı "values-de" olmalıdır ve klasörün içerisinde "strings.xml" dosyası olmalıdır.

Projeyi Github içerisinede yüklüyorum isteyenler Google Play üzerinden uygulamanın demosuna bakabilirler ve githubdan örnek projeyi inceleyebilirler.

Demo: https://play.google.com/store/apps/details?id=com.atalay.androidlocalizationexample
Github: https://github.com/barisatalay/AndroidLocalizationExample

İyi çalışmalar dilerim.


Gradle eklenmesi gereken: compile 'com.akexorcist:localizationactivity:1.1.2'


public class BaseActivity extends AppCompatActivity {
    private LocalizationDelegate localizationDelegate = new LocalizationDelegate(this);
    private String activeLangCode = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        localizationDelegate.onCreate(savedInstanceState);
        super.onCreate(savedInstanceState);

        //Aktif olan dil kodunu alıyoruz.
        activeLangCode = (PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext())).getString(getString(R.string.pref_general_language),"en");

        setLanguage(activeLangCode);
    }

    @Override
    public void onResume() {
        super.onResume();
        localizationDelegate.onResume();
    }

    /*
    * Kütüphaneye aktif olan dil kodunu gönderiyoruz ve
    * kütüphane uygulamamızın aktif olan Activitysini yeniden oluşturuyor
    * bu sayede string resourceler gerekli dilden çekiliyor.
    */
    public final void setLanguage(String language) {
        localizationDelegate.setLanguage(language);
    }

    public final void setLanguage(Locale locale) {
        localizationDelegate.setLanguage(locale);
    }

    public final void setDefaultLanguage(String language) {
        localizationDelegate.setDefaultLanguage(language);
    }

    public final void setDefaultLanguage(Locale locale) {
        localizationDelegate.setDefaultLanguage(locale);
    }

    public final String getLanguage() {
        return localizationDelegate.getLanguage();
    }

    public final Locale getLocale() {
        return localizationDelegate.getLocale();
    }

}

20 Şubat 2017 Pazartesi

Android Recyclerview Disable Scrolling

Bu işlem için RecyclerView nesnesinin LayoutManager özelliğinden yardım alacağız.



Öncelikle CustomLayoutManager adında yeni bir sınıf oluşturuyoruz ve aşağıdaki gibi tasarlıyoruz.

public class CustomGridLayoutManager extends LinearLayoutManager {
    private boolean isScrollEnabled = true;

    public CustomGridLayoutManager(Context context) {
        super(context);
    }

    public void setScrollEnabled(boolean value) {
        this.isScrollEnabled = value;
    }

    @Override
    public boolean canScrollVertically() {
        return super.canScrollVertically() && isScrollEnabled;
    }
}


RecyclerView için LayoutManager oluştururken yeni hazırladığımız sınftan extend ediyoruz.

RecyclerView main_dashboard;
CustomGridLayoutManager layoutManager = new CustomGridLayoutManager(this.getApplicationContext());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
layoutManager.scrollToPosition(0);

main_dashboard.setLayoutManager(layoutManager);
main_dashboard.setHasFixedSize(true);


layoutManage.setScrollEnabled(true/false) şeklinde istediğinizde scroll olayının erişilebilirliğini değiştirebilirsiniz.

11 Şubat 2017 Cumartesi

Android Bluetooth Cihaz Listeleme Sorunu

Merhabalar,

Başıma gelen bir olay sonrası fark ettiğim bir durumdur. Açıklayayım.

Android Marshmallow versiyonundan önce AndroidManifest.xml içerisinde bluetooth izinlerini tanımlamak yeterliydi.

Fakat Marshmallow ile beraber uygulama çalışırken izin isteme istemi geldi bunun için bluetooth izilerini lazım olduğunda istememiz gerekmektedir ve bunun yanı sıra bluetooth cihazlarını tarayabilmek için ek olarak "android.permission.ACCESS_FINE_LOCATION" izinide gerekmektedir. Eğer bu izni sağlamassanız bluetooth cihazları listeleyemiyorsunuz.

İyi çalışmalar.