Merhaba’lar, Yazılımı ilk öğrenirken kabaca kodlar yazmışızdır. Sonra başkalarının yönlendirmeleri ile algoritmalarımızı, kodumuzu yontmaya çalışmışızdır. Bir süre sonra ise şu tasarım deseni, şu yazılım prensibine göre kodumuzu yazmamız gerekiyor deriz. İşte bu yazımızda bizde artık yazılım prensiblerine gireceğiz. DRY – Don’t Repeat Yourself Bu prensibimizin ana düşüncesi kodun asla tekrar etmemelidir. Geliştirdiğimiz yazılımlarda, -hatta biraz daha […]
Kategori: Genel
Android ‘te Package Yapınız Nasıl olmalı ?
Dizin yapısı, kaynak kodunuza göz atarken bir geliştiricinin karşılaştığı en önemli şeydir. Kodlama kısmında her şey onunla başlıyor. Her şey ondan geçiyor. Her şey ona bağlı. Açıkçası kaynak kodun en önemli yönlerinden biridir. PBF (Package By Feature), aynı modül içindeki birleşimi arttırıyor, paketler arasındaki düşük bağlantı, yapıyı düzgün bir şekilde muhafaza etmemizi sağlar ve […]
Android Programlama – Firebase Remote Config
Merhabalar, Bugün ki dersimizde Firebase Remote Config ‘i inceleyeceğiz. Firebase Remote Config, uygulama için yeni bir güncellemeye gerek duymadan uygulamanın davranışını değiştiren yapıdır. Peki nasıl bir davranış ? Örneğin uygulamanızda arka plan rengini bir süre sonra değiştirmek istiyorsunuz, ya da günün anlam ve önemine göre bir ekran yapmak istiyorsunuz. Her seferinde güncelleme atmaya gerek olmadığını, […]
Tedx 1 – Hayırlı Pazarlar
Merhabalar, Hayırlı Pazarlar Tedx – 1. video yorumlamasına hoş geldiniz. Artık her hafta cumartesi veya pazar günü bir tane tedx videosu izleyerek size anlatmaya ve hatta izlemeye teşvik edeceğim. Bu haftaki videomuz aslında oldukça komik ve bir o kadar da yapmak isteyip hiç yapmadığımız bir konu üzerine. James Veitch ‘in yaptığı konuşmada (link ‘e […]
44 – Android Programlama PDFViewer Kullanımı
Merhabalar, Bu haftaki dersimizde android studio ‘da pdf viewer ile bir pdf ‘i görüntüleyeceğiz. Öncelikle kullanacağımız kütüphaneye aşağıdaki adresten inceleyebilirsiniz. https://github.com/barteksc/AndroidPdfViewer Gradle ‘a aşağıdaki kütüphaneyi import ediniz.
|
1 |
compile 'com.github.barteksc:android-pdf-viewer:3.0.0-beta.5' |
activity_layout kısmına pdf’i görüntülemek için aşağıdaki kodu kopyalayın.
|
1 2 3 4 |
<com.github.barteksc.pdfviewer.PDFView android:id="@+id/pdfView" android:layout_width="match_parent" android:layout_height="match_parent"/> |
pdf ile ilgili görüntüleme ve özelleştirme işlemleri aşağıdaki kod’ta verilmiştir.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
pdfView.fromUri(Uri) or pdfView.fromFile(File) or pdfView.fromBytes(byte[]) or pdfView.fromStream(InputStream) // stream is written to bytearray - native code cannot use Java Streams or pdfView.fromSource(DocumentSource) or pdfView.fromAsset(String) .pages(0, 2, 1, 3, 3, 3) // all pages are displayed by default .enableSwipe(true) // allows to block changing pages using swipe .swipeHorizontal(false) .enableDoubletap(true) .defaultPage(0) // allows to draw something on the current page, usually visible in the middle of the screen .onDraw(onDrawListener) // allows to draw something on all pages, separately for every page. Called only for visible pages .onDrawAll(onDrawListener) .onLoad(onLoadCompleteListener) // called after document is loaded and starts to be rendered .onPageChange(onPageChangeListener) .onPageScroll(onPageScrollListener) .onError(onErrorListener) .onPageError(onPageErrorListener) .onRender(onRenderListener) // called after document is rendered for the first time // called on single tap, return true if handled, false to toggle scroll handle visibility .onTap(onTapListener) .enableAnnotationRendering(false) // render annotations (such as comments, colors or forms) .password(null) .scrollHandle(null) .enableAntialiasing(true) // improve rendering a little bit on low-res screens // spacing between pages in dp. To define spacing color, set view background .spacing(0) .linkHandler(DefaultLinkHandler) .pageFitPolicy(FitPolicy.WIDTH) .load(); |
MainActivity’de eğer işinize yaraması için […]
Android Resource Klasörü Dosya İsimlendirilmesi
Merhabalar, Bir proje yaparken zorunlu olmasada sizi ve ekibinizi kurtaracak bir yapı oluşturmanız ve uymanız hem projenin takibi hemde yönetilmesi açısından sizlere kolaylık sağlayacaktır. Sizde eğer bir android projesine başladığınızda class isimleri gelişigüzel tanımlayıp, layout dosyalarındaki itemleri rastgele bir id’ye tabi tutuyorsanız bu yazı sizler için yazıldı. Aslında takip etmeniz için güzel bir kaynak […]
2017’ye Elveda Ederken..
Herkese Merhaba Arkadaşlar, Yılın Son yazısı ile karşınızdayım. Herkes gibi bende şuan yeni yılın bitişini ve yaptıklarımı düşünüyorum. Belki de sadece ben düşünüyorumdur 🙂 Diğer yıllarıma kıyasla daha sakin bir yıl bitişi oldu. Aslında bu durum şuan ki yoğunluğumdan da olabilir. Bu yılda yaşadığım güzel anılarımı paylaşacağım 2017 yılıma hoş geldiniz. İyi Okumalar. Senenin en […]
43-Android GeriSayım Tarih Uygulaması
Merhabalar Android’te belirli bir tarih için geri sayım uygulamasında kullanacağınız kod bloğu aşağıdadır. Bir tane text view ile kolayca geri sayım uygulaması yapabilirsiniz.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
public void countDownStart() { handler = new Handler(); runnable = new Runnable() { @Override public void run() { handler.postDelayed(this, 1000); try { SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd hh:mm"); futureDate = dateFormat.parse("2018-03-11 10:00"); currentDate = new Date(); if (!currentDate.after(futureDate)) { diff = futureDate.getTime() - currentDate.getTime(); days = diff / (24 * 60 * 60 * 1000); diff -= days * (24 * 60 * 60 * 1000); hours = diff / (60 * 60 * 1000); diff -= hours * (60 * 60 * 1000); minutes = diff / (60 * 1000); diff -= minutes * (60 * 1000); seconds = diff / 1000; txtTimerDay.setText("" + String.format("%02d", days)); txtTimerHour.setText("" + String.format("%02d", hours)); txtTimerMinute.setText("" + String.format("%02d", minutes)); txtTimerSecond.setText("" + String.format("%02d", seconds)); /* NotificationCompat.Builder builder = new NotificationCompat.Builder(c) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("Notifications Example") .setContentText(Long.toString(days) + " - "+ Long.toString(hours) +" - "+ Long.toString(minutes) + " - " + Long.toString(seconds)); Intent notificationIntent = new Intent(c, MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(c, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(contentIntent); // Add as notification NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); manager.notify(0, builder.build()); */ } else { tvEvent.setVisibility(View.VISIBLE); tvEvent.setText("The event started!"); textViewGone(); } } catch (Exception e) { e.printStackTrace(); } } }; handler.postDelayed(runnable, 1 * 1000); } |
String vs StringBuilder
Merhaba, Bu dersimizde String ve StringBuilder’ın farkını göreceğiz. Java’da String ve StringBuffer/StringBuilder arasındaki en önemli fark : String objesi değiştirilemezken StringBuffer/StringBuilder objelerinin değiştirilebilir olmasıdır. Herşeye String kullanan birimisinizdir ? Cevabı evet ise burada düzeltmeniz gereken şeyler vardır. Mesela
|
1 2 3 4 5 6 7 |
String test="umiitkose"; String siteAdresi=test.concat(".com"); System.out.println(siteAdresi); String test1="umiitkose"; String test1= test1 + ".com"; System.out.println(test1); |
Yukarda örnek 2 tane String objesi yaptık. Bir değişkene eklemeler için kullandık. Performansı konusunda bir düşünceniz […]
Git 101 – 4 – Git İle Çalışmaya Başlamak ve Konfigürasyon
GİT İle Çalışmaya Başlamak Git’i 2 şekilde kullanabilirsiniz. Biri komut satırı arayüzünden (Git Command Line Interface) veya görsel arayüzü olan 3. Parti bir uygulama ile (SourceTree, Tortoise Git, Tower veya Github) kullanabilirsiniz. Tavsiyem ise öncelikle komut satırından detaylı öğrenmeniz ve sonrasında ise uygulama ile kendinizi geliştirmenizdir. Git Yardım Kısmı Git komutlarının seçenekleri ve parametreleri ile […]