diff --git a/.gitbook/assets/image (10).png b/.gitbook/assets/image (10).png
index 8218196..d47251e 100644
Binary files a/.gitbook/assets/image (10).png and b/.gitbook/assets/image (10).png differ
diff --git a/.gitbook/assets/image (11).png b/.gitbook/assets/image (11).png
index d38bc20..48c01ea 100644
Binary files a/.gitbook/assets/image (11).png and b/.gitbook/assets/image (11).png differ
diff --git a/.gitbook/assets/image (12).png b/.gitbook/assets/image (12).png
index b804ff7..8218196 100644
Binary files a/.gitbook/assets/image (12).png and b/.gitbook/assets/image (12).png differ
diff --git a/.gitbook/assets/image (13).png b/.gitbook/assets/image (13).png
index 29648e4..d38bc20 100644
Binary files a/.gitbook/assets/image (13).png and b/.gitbook/assets/image (13).png differ
diff --git a/.gitbook/assets/image (14).png b/.gitbook/assets/image (14).png
index 6f84476..b804ff7 100644
Binary files a/.gitbook/assets/image (14).png and b/.gitbook/assets/image (14).png differ
diff --git a/.gitbook/assets/image (15).png b/.gitbook/assets/image (15).png
index b58bca9..29648e4 100644
Binary files a/.gitbook/assets/image (15).png and b/.gitbook/assets/image (15).png differ
diff --git a/.gitbook/assets/image (16).png b/.gitbook/assets/image (16).png
index 78108ca..6f84476 100644
Binary files a/.gitbook/assets/image (16).png and b/.gitbook/assets/image (16).png differ
diff --git a/.gitbook/assets/image (17).png b/.gitbook/assets/image (17).png
index 4e08193..b58bca9 100644
Binary files a/.gitbook/assets/image (17).png and b/.gitbook/assets/image (17).png differ
diff --git a/.gitbook/assets/image (18).png b/.gitbook/assets/image (18).png
index 8493ed0..78108ca 100644
Binary files a/.gitbook/assets/image (18).png and b/.gitbook/assets/image (18).png differ
diff --git a/.gitbook/assets/image (19).png b/.gitbook/assets/image (19).png
index ccf8863..4e08193 100644
Binary files a/.gitbook/assets/image (19).png and b/.gitbook/assets/image (19).png differ
diff --git a/.gitbook/assets/image (20).png b/.gitbook/assets/image (20).png
index ac214fc..8493ed0 100644
Binary files a/.gitbook/assets/image (20).png and b/.gitbook/assets/image (20).png differ
diff --git a/.gitbook/assets/image (21).png b/.gitbook/assets/image (21).png
index f7d5a08..ccf8863 100644
Binary files a/.gitbook/assets/image (21).png and b/.gitbook/assets/image (21).png differ
diff --git a/.gitbook/assets/image (22).png b/.gitbook/assets/image (22).png
index d47251e..ac214fc 100644
Binary files a/.gitbook/assets/image (22).png and b/.gitbook/assets/image (22).png differ
diff --git a/.gitbook/assets/image (23).png b/.gitbook/assets/image (23).png
index ebf4ad8..f7d5a08 100644
Binary files a/.gitbook/assets/image (23).png and b/.gitbook/assets/image (23).png differ
diff --git a/.gitbook/assets/image (24).png b/.gitbook/assets/image (24).png
index 421e13d..d47251e 100644
Binary files a/.gitbook/assets/image (24).png and b/.gitbook/assets/image (24).png differ
diff --git a/.gitbook/assets/image (25).png b/.gitbook/assets/image (25).png
new file mode 100644
index 0000000..ebf4ad8
Binary files /dev/null and b/.gitbook/assets/image (25).png differ
diff --git a/.gitbook/assets/image (26).png b/.gitbook/assets/image (26).png
new file mode 100644
index 0000000..421e13d
Binary files /dev/null and b/.gitbook/assets/image (26).png differ
diff --git a/.gitbook/assets/image (27).png b/.gitbook/assets/image (27).png
new file mode 100644
index 0000000..421e13d
Binary files /dev/null and b/.gitbook/assets/image (27).png differ
diff --git a/.gitbook/assets/image (9).png b/.gitbook/assets/image (9).png
index 48c01ea..4e08193 100644
Binary files a/.gitbook/assets/image (9).png and b/.gitbook/assets/image (9).png differ
diff --git a/README.md b/README.md
index fb53f0a..725b433 100644
--- a/README.md
+++ b/README.md
@@ -45,7 +45,7 @@ Tam olarak hangi alanların değiştiğini merak ediyorsan, alttaki linkten GitH
## 🌍 Tüm [YEmreAk ](https://wiki.yemreak.com)İçerikleri
-![YEmreAk tüm içerikleri \(her sütun bir web sitesidir\)](.gitbook/assets/image%20%2819%29.png)
+![YEmreAk tüm içerikleri \(her sütun bir web sitesidir\)](.gitbook/assets/image%20%2821%29.png)
## 💖 Destek ve İletişim
diff --git a/SUMMARY.md b/SUMMARY.md
index e6fbcd6..ac5949c 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -3,33 +3,29 @@
* [📱 YAndroid](README.md)
* [💖 Katkıda Bulunma Rehberi](https://wiki.yemreak.com/contributing)
* [🌟 Faydalı Kaynaklar](https://learn.yemreak.com/icerikler/android)
+* [🧱 Temel Kavramlar](temel-kavramlar/README.md)
+ * [💫 Activity Yaşam Döngüsü](temel-kavramlar/activity-lifecycle-and-state.md)
+ * [🏹 Implicit intents](temel-kavramlar/implicit-intents.md)
+ * [⏩ Activity ve Intent'ler](temel-kavramlar/activity-ve-intentler.md)
+ * [🧐 Component İsimleri](temel-kavramlar/component-isimleri.md)
+* [💾 Veri Saklama Yöntemleri](veri-saklama-yoentemleri.md)
+* [🎪 Android'de Animasyonlar](androidde-animasyonlar.md)
* [🌄 Arkaplan'da Çalışma](arkaplanda-calisma/README.md)
* [💫 AsyncTask ve AsyncTaskLoader](arkaplanda-calisma/asynctask-ve-asynctaskloader.md)
* [✨ Faydalı Bilgiler](faydali-bilgiler/README.md)
+ * [⭐ Activity Örnekleri](faydali-bilgiler/activity-notlari.md)
* [✍ Kişisel Notlarım](faydali-bilgiler/kisisel-notlarim.md)
* [📲 Telefonu Bilgisayara Bağlama](faydali-bilgiler/telefonu-bilgisayara-baglama.md)
* [👜 Google Play Store](faydali-bilgiler/google-play-store.md)
* [🐛 Hata Notları](faydali-bilgiler/hata-notlari.md)
- * [🥴 Karışık Notlar](faydali-bilgiler/karisik-notlar.md)
-
-## Programlama Notları
-
-* [🔰 Giriş](programlama-notlari-1/giris.md)
-* [👶 İlk Etkileşimli UI](programlama-notlari-1/ilk-etkilesimli-ui.md)
-* [🔤 TextView](programlama-notlari-1/textview.md)
-* [⏬ Scrolling views](programlama-notlari-1/scrolling-views.md)
-* [📜 XML Örneği](programlama-notlari-1/xml-oernegi.md)
-* [⏩ Activity ve Intent'ler](programlama-notlari-1/activity-ve-intentler.md)
-* [💫 Activity lifecycle and state](programlama-notlari-1/activity-lifecycle-and-state.md)
-* [🏹 Implicit intents](programlama-notlari-1/implicit-intents.md)
-* [🚧 AsyncTask ve AsyncTaskLoader](programlama-notlari-1/asynctask-ve-asynctaskloader.md)
+ * [🚧 Proje İşlemleri](faydali-bilgiler/proje-islemleri.md)
+ * [🔗 Karışık Bağlantılar](faydali-bilgiler/karisik-notlar.md)
+* [🥴 Düzensiz Notlar](duezensiz-notlar/README.md)
+ * [📜 XML Örneği](duezensiz-notlar/xml-oernegi.md)
+ * [⏬ Scrolling views](duezensiz-notlar/scrolling-views.md)
+ * [🔤 TextView](duezensiz-notlar/textview.md)
+ * [👶 İlk Etkileşimli UI](duezensiz-notlar/ilk-etkilesimli-ui.md)
+ * [🔰 Giriş](duezensiz-notlar/giris.md)
## Eski Notlarım
-* [🧐 Component İsimleri](programlama-notlari/component-isimleri.md)
-* [🚧 Proje İşlemleri](programlama-notlari/proje-islemleri.md)
-* [📃 Activity Notları](programlama-notlari/activity-notlari.md)
-* [💾 Veri Saklama Yöntemleri](programlama-notlari/veri-saklama-yoentemleri.md)
-* [⏩ Kaydırmalı Uygulama \(ViewPager ve PageAdapter\)](programlama-notlari/kaydirmali-uygulama-viewpager-ve-pageadapter.md)
-* [🎪 Android'de Animasyonlar](programlama-notlari/androidde-animasyonlar.md)
-
diff --git a/programlama-notlari/androidde-animasyonlar.md b/androidde-animasyonlar.md
similarity index 57%
rename from programlama-notlari/androidde-animasyonlar.md
rename to androidde-animasyonlar.md
index ffb81b6..9e656b7 100644
--- a/programlama-notlari/androidde-animasyonlar.md
+++ b/androidde-animasyonlar.md
@@ -2,10 +2,17 @@
## ⏫ Aşağıdan Gelme Animasyonu
-![](../.gitbook/assets/image%20%2817%29.png)
+* Proje dizinine `anim` adlı klasör oluşturup içinde bir `resource file'`a bu kodları yazıyoruz.
+* `Main`'e alttakiler eklenmeli:
+ * `btn_start` = Get Started adlı view'ın ID'si
+ * `frombutton` = üstteki kodların yazıldığı dosyanın adı
-Proje dizinine `anim` adlı klasör oluşturup içinde bir `resource file'`a bu kodları yazıyoruz.
+{% tabs %}
+{% tab title="⭐ Görsel" %}
+![](.gitbook/assets/image%20%289%29.png)
+{% endtab %}
+{% tab title="📜 XML Kodları" %}
```markup
@@ -15,10 +22,10 @@ Proje dizinine `anim` adlı klasör oluşturup içinde bir `resource file'`a bu
android:fromYDelta="100%p"/>
```
+{% endtab %}
-`Main`'e alttakiler eklenmeli:
-
-```text
+{% tab title="👨💻 Main Kodları" %}
+```java
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -28,14 +35,17 @@ class MainActivity : AppCompatActivity() {
...
}
```
-
-* `btn_start` = Get Started adlı view'ın ID'si
-* `frombutton` = üstteki kodların yazıldığı dosyanın adı
+{% endtab %}
+{% endtabs %}
## 👁🗨 Soluk Belirme
-![](../.gitbook/assets/image%20%2822%29.png)
+{% tabs %}
+{% tab title="⭐ Görsel" %}
+![](.gitbook/assets/image%20%2810%29.png)
+{% endtab %}
+{% tab title="📜 XML Kodları" %}
```markup
```
+{% endtab %}
+{% endtabs %}
diff --git a/arkaplanda-calisma/asynctask-ve-asynctaskloader.md b/arkaplanda-calisma/asynctask-ve-asynctaskloader.md
index ab074e4..379673e 100644
--- a/arkaplanda-calisma/asynctask-ve-asynctaskloader.md
+++ b/arkaplanda-calisma/asynctask-ve-asynctaskloader.md
@@ -29,7 +29,7 @@ Android'teki tüm görüntü işlemlerinin yapıldı alandır.
* UI Thread sadece görsel işlemler için kullanılmalıdır
* Tüm işlemler 16ms'den kısa bir sürede tamamlanmalıdır
-![](../.gitbook/assets/image%20%2818%29.png)
+![](../.gitbook/assets/image%20%2820%29.png)
{% hint style="danger" %}
Yaklaşık olarak 5s'den uzun süren işlemler "[application not responding](http://developer.android.com/guide/practices/responsiveness.html)" \(ANR\) diyaloğunu oluşturur ve kullanıcı bunu görmesi durumunda uygulamayı kapatıp, siler 😥
@@ -50,9 +50,9 @@ Verilen işlemi arkaplanda, sistemi bloklamadan tamamlar.
{% tabs %}
{% tab title="🎈 Kullanım" %}
-![](../.gitbook/assets/image%20%2812%29.png)
+![](../.gitbook/assets/image%20%2814%29.png)
-![](../.gitbook/assets/image%20%289%29.png)
+![](../.gitbook/assets/image%20%2811%29.png)
| 💠 Metot | 📜 Açıklama |
| :--- | :--- |
@@ -126,5 +126,7 @@ private class DownloadFilesTask extends AsyncTask {
{% endtab %}
{% endtabs %}
+## 🔗 Harici Bağlantılar
+{% embed url="https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/unit-3-working-in-the-background/lesson-7-background-tasks/7-1-c-asynctask-and-asynctaskloader/7-1-c-asynctask-and-asynctaskloader.html" %}
diff --git a/duezensiz-notlar/README.md b/duezensiz-notlar/README.md
new file mode 100644
index 0000000..ca5b1a5
--- /dev/null
+++ b/duezensiz-notlar/README.md
@@ -0,0 +1,2 @@
+# 🥴 Düzensiz Notlar
+
diff --git a/programlama-notlari-1/giris.md b/duezensiz-notlar/giris.md
similarity index 100%
rename from programlama-notlari-1/giris.md
rename to duezensiz-notlar/giris.md
diff --git a/programlama-notlari-1/ilk-etkilesimli-ui.md b/duezensiz-notlar/ilk-etkilesimli-ui.md
similarity index 100%
rename from programlama-notlari-1/ilk-etkilesimli-ui.md
rename to duezensiz-notlar/ilk-etkilesimli-ui.md
diff --git a/programlama-notlari-1/scrolling-views.md b/duezensiz-notlar/scrolling-views.md
similarity index 100%
rename from programlama-notlari-1/scrolling-views.md
rename to duezensiz-notlar/scrolling-views.md
diff --git a/programlama-notlari-1/textview.md b/duezensiz-notlar/textview.md
similarity index 100%
rename from programlama-notlari-1/textview.md
rename to duezensiz-notlar/textview.md
diff --git a/programlama-notlari-1/xml-oernegi.md b/duezensiz-notlar/xml-oernegi.md
similarity index 100%
rename from programlama-notlari-1/xml-oernegi.md
rename to duezensiz-notlar/xml-oernegi.md
diff --git a/faydali-bilgiler/activity-notlari.md b/faydali-bilgiler/activity-notlari.md
new file mode 100644
index 0000000..bdb952d
--- /dev/null
+++ b/faydali-bilgiler/activity-notlari.md
@@ -0,0 +1,239 @@
+---
+description: Activity'ler için faydalı örnekler
+---
+
+# ⭐ Activity Örnekleri
+
+## 🚶♂️ Gecikmeli Activity Başlatma
+
+```java
+Handler().postDelayed({ startActivity(Intent(this, SnakeActivity1::class.java))
+}, 400)
+```
+
+## 🌃 Arka planda Çalıştırma
+
+```java
+override fun onCreate(savedInstanceState: Bundle?) {
+ // Arkaplanda çalıştırma
+ moveTaskToBack(true)
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_share)
+
+ ...
+}
+```
+
+## 🧹 Bütün Eski Activity'leri Sonlandırıp Yeni Activity Açma
+
+```java
+val intent = Intent(this, MainActivity::class.java)
+intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK // Tüm işlemleri bitirme
+finish() // İşlemi sonlandırma
+startActivity(intent)
+```
+
+## ⏩ Kaydırmalı Uygulama \(ViewPager ve PageAdapter\)
+
+{% tabs %}
+{% tab title="⭐ Örnek" %}
+![](../.gitbook/assets/image%20%2827%29.png)
+{% endtab %}
+
+{% tab title="Manifest" %}
+```markup
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+{% endtab %}
+
+{% tab title="Main" %}
+```java
+package com.yemreak.iuapp
+
+import android.support.v7.app.AppCompatActivity
+import android.os.Bundle
+import android.support.v4.view.ViewPager
+import kotlinx.android.synthetic.main.activity_main.*
+
+class MainActivity : AppCompatActivity() {
+
+ private lateinit var slideAdapter: SlideAdapter
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+
+ slideAdapter = SlideAdapter(applicationContext)
+ vp_main.adapter = slideAdapter
+ }}
+ ...
+}
+```
+{% endtab %}
+
+{% tab title="SlideAdapter" %}
+```java
+package com.yemreak.iuapp
+
+import android.content.Context
+import android.graphics.Color
+import android.support.v4.view.PagerAdapter
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+
+class SlideAdapter(context : Context) : PagerAdapter() {
+
+ lateinit var layoutInflater: LayoutInflater
+
+ private val context = context
+ private val arr_images = arrayListOf(
+ R.drawable.ic_launcher_foreground,
+ R.drawable.ic_launcher_foreground,
+ R.drawable.water,
+ R.drawable.text
+ )
+ private val arr_titles = arrayListOf("a", "b", "c", "d")
+ private val arr_descriptions = arrayListOf("aa", "bb", "cc", "dd")
+ private val arr_bgColors = arrayListOf(
+ Color.rgb(55, 55, 55),
+ Color.rgb(239, 85, 85),
+ Color.rgb(110, 49, 89),
+ Color.rgb(1, 118, 212)
+ )
+
+
+
+ override fun isViewFromObject(view: View, `object` : Any): Boolean {
+ return (view == `object` as LinearLayout)
+ }
+
+ override fun getCount(): Int {
+ return arr_images.size
+ }
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
+
+ val view = layoutInflater.inflate(R.layout.slide, container, false)
+ val layout = view.findViewById(R.id.ll_slide1)
+ val image = view.findViewById(R.id.iv_slide)
+ val title = view.findViewById(R.id.tv_slide_tittle)
+ val description = view.findViewById(R.id.tv_slide_description)
+
+ layout.setBackgroundColor(arr_bgColors[position])
+ image.setImageResource(arr_images[position])
+ title.text = arr_titles[position]
+ description.text = arr_descriptions[position]
+ container.addView(view)
+ return view
+ }
+ override fun destroyItem(container: ViewGroup, position: Int, `object` : Any) { container.removeView(`object` as LinearLayout) }
+}
+```
+{% endtab %}
+
+{% tab title="Styles.xml" %}
+```markup
+
+
+
+
+```
+{% endtab %}
+
+{% tab title="String.xml" %}
+```markup
+
+ IUApp
+ Bu uygulama da nedir?
+
+```
+{% endtab %}
+
+{% tab title="activity\_main" %}
+```markup
+
+
+
+
+
+
+```
+{% endtab %}
+
+{% tab title="Slide.xml" %}
+```markup
+
+
+
+
+
+
+
+
+```
+{% endtab %}
+{% endtabs %}
+
diff --git a/faydali-bilgiler/karisik-notlar.md b/faydali-bilgiler/karisik-notlar.md
index c5ce62c..bb17998 100644
--- a/faydali-bilgiler/karisik-notlar.md
+++ b/faydali-bilgiler/karisik-notlar.md
@@ -2,7 +2,7 @@
description: "Derlenmemiş, karışık notları barındırır \U0001F625"
---
-# 🥴 Karışık Notlar
+# 🔗 Karışık Bağlantılar
## 🌍 Faydalı Bağlantılar
diff --git a/programlama-notlari/proje-islemleri.md b/faydali-bilgiler/proje-islemleri.md
similarity index 87%
rename from programlama-notlari/proje-islemleri.md
rename to faydali-bilgiler/proje-islemleri.md
index 0aba0bd..343b10f 100644
--- a/programlama-notlari/proje-islemleri.md
+++ b/faydali-bilgiler/proje-islemleri.md
@@ -10,11 +10,11 @@
* Son olarak; Manifestimize girip "package name"i güncelliyoruz.
* Artık başarıyla "package name"i güncellemiş olduk. Emin olmak için projenizi Build etmeyi unutmayın :\)
-![](../.gitbook/assets/image%20%2815%29.png)
+![](../.gitbook/assets/image%20%2817%29.png)
-![](../.gitbook/assets/image%20%2816%29.png)
+![](../.gitbook/assets/image%20%2818%29.png)
-![](../.gitbook/assets/image%20%2811%29.png)
+![](../.gitbook/assets/image%20%2813%29.png)
-![](../.gitbook/assets/image%20%2814%29.png)
+![](../.gitbook/assets/image%20%2816%29.png)
diff --git a/programlama-notlari-1/implicit-intents.md b/programlama-notlari-1/implicit-intents.md
deleted file mode 100644
index ac32977..0000000
--- a/programlama-notlari-1/implicit-intents.md
+++ /dev/null
@@ -1,344 +0,0 @@
-# 🏹 Implicit intents
-
-## ❔ Nedir
-
-![](../.gitbook/assets/image%20%285%29.png)
-
-## Create implicit Intent objects
-
-* `Intent` oluşturmadan önce isteği karşılayabilecek `Activity` var mı kontrol edilmelidir.
-* İsteklerini sağlayacak `Activity` olmazsa uygulama kapanır
-
-```java
-// Implicit intent oluşturma
-Intent sendIntent= new Intent();
-sendIntent.setAction(Intent.ACTION_SEND);
-sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
-sendIntent.setType("text/plain");
-
-// Intent başlığını ayarlama
-String title = getResources().getString(R.string.chooser_title);
-
-// App Chooser oluşturma
-Intent chooser = Intent.createChooser(sendIntent, title);
-
-// İsteği sağlayacak Activity var mı kontrolü
-if (sendIntent.resolveActivity(getPackageManager()) != null) {
- startActivity(chooser);
-}
-```
-
-### App Chooser
-
-![](../.gitbook/assets/image%20%2810%29.png)
-
-## Receiving an implicit Intent
-
-* `AndroidManifest.xml`dosyasında `intent-filter` ile tanımlanan uygulamalardan biri seçilir
-* `intent-filter` 0 veya daha fazla `action`,`category`veya `data` içerir
-* `intent-filter` içermeyen `Activity`'ler sadece explicit intent ile çağrılabilir
-* Birden fazla `intent-filter` veya bir `intent-filter` için birden fazla `action`, `category` veya `data` tanımlanabilir
-
-```markup
-
-
-
-
-
-
-```
-
-```markup
-
-
-
-
-
-
-
-```
-
-### Actions
-
-* Action yapısı Intent üzerinde `ACTION_` ön eki ile kullanılır
-
-```markup
-
-
-
-
-
-```
-
-### Categories
-
-* Category yapısı Intent üzerinde `CATEGORY_` ön eki ile kullanılır
-* Tüm implicit intent objelerine varsayılan olarak `android.intent.category.DEFAULT` atanır
-
-```markup
-
-
-
-
-```
-
-### Data
-
-* Alttaki yapıları vardır
- * URI Scheme
- * URI Host
- * URI Path
- * Mime type
-
-```markup
-
-
-
-
-```
-
-## Sharing data using ShareCompat.IntentBuilder
-
-* Sosyal ağ uygulamalarında veri paylaşmak için kullanılan yöntemdir
-* Implicit intent yerine, Android sunduğu bu yapı daha faydalıdır
-
-```java
-ShareCompat.IntentBuilder
- .from(this) // information about the calling activity
- .setType(mimeType) // mime type for the data
- .setChooserTitle("Share this text with: ") //title for the app chooser
- .setText(txt) // intent data
- .startChooser(); // send the intent
-```
-
-## Managing tasks
-
-* Android'in çalışma yapısı gereği, `Activity`'ler eski açık olanı kullanmak yerine kendileri yeni `Activity` oluştururlar \(Şekil 1\)
-* Implicit intent ile açılan `Activity`'ler de, asıl çalışan `Activity`'den bağımsız olarak açılır \(Şekil 2\)
-
-{% hint style="info" %}
-Bu yapı **Android Launch Modes** ile değiştirilebilmektedir.
-{% endhint %}
-
-![](../.gitbook/assets/image%20%283%29.png)
-
-![](../.gitbook/assets/image.png)
-
-## Activity launch modes
-
-`AndroidManifest.xml` dosyası içerisindeki `` alanının değiştirilmesi ile yönetilir
-
-### Activity attributes
-
-* Belirtilen `launchMode`değerlerinden biri kullanılır
-* Varsayılan olarak `standart` değeri seçilir
-
-| Launch Mode | Anlamı |
-| :--- | :--- |
-| `standart` | Android'in varsayılan modu |
-| `singleTop` | Activity, stack'te en tepede ise yeni işlerde yeni activity oluşturulmaz |
-| `singleTask` | Activity için yeni bir işlem tanımlandığında, işlem yapan activity kullanılır, yeni oluşturulmaz |
-| `singleInstance` | Activity yalnızca bir kez oluşturulur |
-
-```markup
-
-
-
-```
-
-### Intent flags
-
-* Activity attributes gibidir, ama çakışma durumunda bayraklar ele alınır
-* `setFlag()` ve `getFlag()` ile kullanılır
-
-| Flag | Launch Mode karşılığı | Anlamı |
-| :--- | :--- | :--- |
-| [`FLAG_ACTIVITY_NEW_TASK`](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK) | `singleTask` | İşlem için var olan Activity'i kullanır |
-| [`FLAG_ACTIVITY_SINGLE_TOP`](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP) | `singleTop` | Activity, stack'te en tepede ise yeni işlerde yeni activity oluşturulmaz |
-| [`FLAG_ACTIVITY_CLEAR_TOP`](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP) | | Eğer activity stack'te varsa, onu tepeye alıp, üstündeki her activity'i `destroy` eder. FLAG\_ACTIVITY\_NEW\_TASK ile kullanılırsa activity işlemlerini ön plana taşır |
-
-### Handle a new Intent
-
-* Genellikle `onResume()`'den sonra çalışır
-* `getIntent()` metodu her zaman, `Activity`'nin kendi `intent`'ini döndürdüğünden bu yapı kullanılır
-* `setIntent()` ile Activity intent'i değiştirilir
-
-```java
-@Override
-public void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- // Use the new intent, not the original one
- setIntent(intent);
-}
-```
-
-## Create implicit Intent objects
-
-* `Intent` oluşturmadan önce isteği karşılayabilecek `Activity` var mı kontrol edilmelidir.
-* İsteklerini sağlayacak `Activity` olmazsa uygulama kapanır
-
-```java
-// Implicit intent oluşturma
-Intent sendIntent= new Intent();
-sendIntent.setAction(Intent.ACTION_SEND);
-sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
-sendIntent.setType("text/plain");
-
-// Intent başlığını ayarlama
-String title = getResources().getString(R.string.chooser_title);
-
-// App Chooser oluşturma
-Intent chooser = Intent.createChooser(sendIntent, title);
-
-// İsteği sağlayacak Activity var mı kontrolü
-if (sendIntent.resolveActivity(getPackageManager()) != null) {
- startActivity(chooser);
-}
-```
-
-### App Chooser
-
-## Receiving an implicit Intent
-
-* `AndroidManifest.xml`dosyasında `intent-filter` ile tanımlanan uygulamalardan biri seçilir
-* `intent-filter` 0 veya daha fazla `action`,`category`veya `data` içerir
-* `intent-filter` içermeyen `Activity`'ler sadece explicit intent ile çağrılabilir
-* Birden fazla `intent-filter` veya bir `intent-filter` için birden fazla `action`, `category` veya `data` tanımlanabilir
-
-```markup
-
-
-
-
-
-
-```
-
-```markup
-
-
-
-
-
-
-
-```
-
-### Actions
-
-* Action yapısı Intent üzerinde `ACTION_` ön eki ile kullanılır
-
-```markup
-
-
-
-
-
-```
-
-### Categories
-
-* Category yapısı Intent üzerinde `CATEGORY_` ön eki ile kullanılır
-* Tüm implicit intent objelerine varsayılan olarak `android.intent.category.DEFAULT` atanır
-
-```markup
-
-
-
-
-```
-
-### Data
-
-* Alttaki yapıları vardır
- * URI Scheme
- * URI Host
- * URI Path
- * Mime type
-
-```markup
-
-
-
-
-```
-
-## Sharing data using ShareCompat.IntentBuilder
-
-* Sosyal ağ uygulamalarında veri paylaşmak için kullanılan yöntemdir
-* Implicit intent yerine, Android sunduğu bu yapı daha faydalıdır
-
-```java
-ShareCompat.IntentBuilder
- .from(this) // information about the calling activity
- .setType(mimeType) // mime type for the data
- .setChooserTitle("Share this text with: ") //title for the app chooser
- .setText(txt) // intent data
- .startChooser(); // send the intent
-```
-
-## Managing tasks
-
-* Android'in çalışma yapısı gereği, `Activity`'ler eski açık olanı kullanmak yerine kendileri yeni `Activity` oluştururlar \(Şekil 1\)
-* Implicit intent ile açılan `Activity`'ler de, asıl çalışan `Activity`'den bağımsız olarak açılır \(Şekil 2\)
-
-{% hint style="info" %}
-Bu yapı **Android Launch Modes** ile değiştirilebilmektedir.
-{% endhint %}
-
-## Activity launch modes
-
-`AndroidManifest.xml` dosyası içerisindeki `` alanının değiştirilmesi ile yönetilir
-
-### Activity attributes
-
-* Belirtilen `launchMode`değerlerinden biri kullanılır
-* Varsayılan olarak `standart` değeri seçilir
-
-| Launch Mode | Anlamı |
-| :--- | :--- |
-| `standart` | Android'in varsayılan modu |
-| `singleTop` | Activity, stack'te en tepede ise yeni işlerde yeni activity oluşturulmaz |
-| `singleTask` | Activity için yeni bir işlem tanımlandığında, işlem yapan activity kullanılır, yeni oluşturulmaz |
-| `singleInstance` | Activity yalnızca bir kez oluşturulur |
-
-```markup
-
-
-
-```
-
-### Intent flags
-
-* Activity attributes gibidir, ama çakışma durumunda bayraklar ele alınır
-* `setFlag()` ve `getFlag()` ile kullanılır
-
-| Flag | Launch Mode karşılığı | Anlamı |
-| :--- | :--- | :--- |
-| [`FLAG_ACTIVITY_NEW_TASK`](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK) | `singleTask` | İşlem için var olan Activity'i kullanır |
-| [`FLAG_ACTIVITY_SINGLE_TOP`](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP) | `singleTop` | Activity, stack'te en tepede ise yeni işlerde yeni activity oluşturulmaz |
-| [`FLAG_ACTIVITY_CLEAR_TOP`](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP) | | Eğer activity stack'te varsa, onu tepeye alıp, üstündeki her activity'i `destroy` eder. FLAG\_ACTIVITY\_NEW\_TASK ile kullanılırsa activity işlemlerini ön plana taşır |
-
-### Handle a new Intent
-
-* Genellikle `onResume()`'den sonra çalışır
-* `getIntent()` metodu her zaman, `Activity`'nin kendi `intent`'ini döndürdüğünden bu yapı kullanılır
-* `setIntent()` ile Activity intent'i değiştirilir
-
-```java
-@Override
-public void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- // Use the new intent, not the original one
- setIntent(intent);
-}
-```
-
diff --git a/programlama-notlari/activity-notlari.md b/programlama-notlari/activity-notlari.md
deleted file mode 100644
index 806b3fb..0000000
--- a/programlama-notlari/activity-notlari.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-description: >-
- Android üzerinde her sayfa activity olarak adlandırılır, burada da onlar
- hakkında bilgilere yer verilecektir.
----
-
-# 📃 Activity Notları
-
-## 🚶♂️ Gecikmeli Activity Başlatma
-
-```text
-Handler().postDelayed({ startActivity(Intent(this, SnakeActivity1::class.java))
-}, 400)
-```
-
-## 🌃 Arka planda Çalıştırma
-
-```text
-override fun onCreate(savedInstanceState: Bundle?) {
- // Arkaplanda çalıştırma
- moveTaskToBack(true)
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_share)
-
- ...
-}
-```
-
-## 🧹 Bütün Eski Activity'leri Sonlandırıp Yeni Activity Açma
-
-```text
-val intent = Intent(this, MainActivity::class.java)
-intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK // Tüm işlemleri bitirme
-finish() // İşlemi sonlandırma
-startActivity(intent)
-```
-
diff --git a/temel-kavramlar/README.md b/temel-kavramlar/README.md
new file mode 100644
index 0000000..7968f8e
--- /dev/null
+++ b/temel-kavramlar/README.md
@@ -0,0 +1,2 @@
+# 🧱 Temel Kavramlar
+
diff --git a/programlama-notlari-1/activity-lifecycle-and-state.md b/temel-kavramlar/activity-lifecycle-and-state.md
similarity index 84%
rename from programlama-notlari-1/activity-lifecycle-and-state.md
rename to temel-kavramlar/activity-lifecycle-and-state.md
index a1954dd..45226ca 100644
--- a/programlama-notlari-1/activity-lifecycle-and-state.md
+++ b/temel-kavramlar/activity-lifecycle-and-state.md
@@ -1,10 +1,10 @@
-# 💫 Activity lifecycle and state
+# 💫 Activity Yaşam Döngüsü
-## Activity states and lifecycle callback methods
+## 🔄 Activity Yaşam Döngüsü
-![](../.gitbook/assets/image%20%2823%29.png)
+![](../.gitbook/assets/image%20%2825%29.png)
-### Temel Kullanım
+## 🧱 Metot Prototipi
```java
@Override
@@ -14,7 +14,9 @@ public void onCreate(Bundle savedInstanceState) {
}
```
-## Saving Activity instance state
+## 💾 Uygulama Verilerini Koruma
+
+`Activity`'deki `InstanceState` yapısı ile veriler geçici olarak saklanır
* Lifecycle metodlarından değildir
* Kullanıcı `Activity`'den ayrılıken çağırılır.
@@ -31,7 +33,7 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
}
```
-### Restoring Activity instance state
+## 🔙 Verileri Geri Alma
* Kaydedilen `Bundle` verileri `onCreate()` callback metodunda kullanılmakta
* `Activity` oluşturulduktan sonra çalışan `onStart()` metodunun ardından çalışan `onRestoreInstanceState()`callback metodunda da kullanılabilir
diff --git a/programlama-notlari-1/activity-ve-intentler.md b/temel-kavramlar/activity-ve-intentler.md
similarity index 71%
rename from programlama-notlari-1/activity-ve-intentler.md
rename to temel-kavramlar/activity-ve-intentler.md
index 4aebc7d..3208760 100644
--- a/programlama-notlari-1/activity-ve-intentler.md
+++ b/temel-kavramlar/activity-ve-intentler.md
@@ -1,10 +1,9 @@
# ⏩ Activity ve Intent'ler
-## Create the Activity
+## ✨ Activity Oluşturma
-When you create a new project in Android Studio and choose the **Backwards Compatibility \(AppCompat\)** option, the `MainActivity` is, by default, a subclass of the [`AppCompatActivity`](https://developer.android.com/reference/android/support/v7/app/AppCompatActivity.html) class. The `AppCompatActivity` class lets you use up-to-date Android app features such as the app bar and Material Design, while still enabling your app to be compatible with devices running older versions of Android.
-
-Here is a skeleton subclass of `AppCompatActivity`:
+* Normal olarak **Activity** class'ı extend edilir
+* Eski sürümleri desteklemek için **AppCompat** class'ı extend edilir
```java
public class MainActivity extends AppCompatActivity {
@@ -16,7 +15,9 @@ public class MainActivity extends AppCompatActivity {
}
```
-### 📑 Declare the Activity in AndroidManifest.xml
+## 📑 Activity Tanımlama
+
+Activity `AndroidManifest.xml` dosyasına aşağıdaki gibi tanıtılmalıdır
```java
@@ -27,17 +28,24 @@ public class MainActivity extends AppCompatActivity {
```
-## ⏫ Starting an Activity with an explicit Intent
+## ⏫ Explicit Intent ile Activity Başlatma
-Yeni aktivity oluşturulduğunda eskisi **Paused** olur
+Yeni `Activity` oluşturulduğunda eskisi **paused** olur
```java
Intent messageIntent = new Intent(this, ShowMessageActivity.class);
startActivity(messageIntent);
```
-## 💾 Add data to the Intent
+{% tabs %}
+{% tab title="🎈 Basit Kullanım" %}
+```java
+Intent messageIntent = new Intent(this, ShowMessageActivity.class);
+startActivity(messageIntent);
+```
+{% endtab %}
+{% tab title="Data Ekleme" %}
```java
Intent messageIntent = new Intent(this, ShowMessageActivity.class);
// A web page URL
@@ -51,9 +59,9 @@ messageIntent.setData(Uri.parse("custom:" + dataID + buttonId));
startActivity(messageIntent);
```
+{% endtab %}
-### Add extras to the Intent
-
+{% tab title="Extras Ekleme" %}
```java
Intent messageIntent = new Intent(this, ShowMessageActivity.class);
@@ -72,8 +80,28 @@ messageIntent.putExtras(extras);
startActivity(messageIntent);
```
+{% endtab %}
+
+{% tab title="👨💻 " %}
+```java
+Intent intent = getIntent();
+
+// Data alma
+Uri locationUri = intent.getData();
+
+// Extra alma
+String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
+int positionX = intent.getIntExtra(MainActivity.EXTRA_POSITION_X);
+int positionY = intent.getIntExtra(MainActivity.EXTRA_POSITION_Y);
+
+// Bundle alma
+Bundle extras = intent.getExtras();
+String message = extras.getString(MainActivity.EXTRA_MESSAGE);
+```
+{% endtab %}
+{% endtabs %}
-### Retrieve the data from the Intent in the started Activity
+## 🔙 Başlatılan Activity Üzerinden Intent Verilerini Alma
```java
Intent intent = getIntent();
@@ -91,9 +119,9 @@ Bundle extras = intent.getExtras();
String message = extras.getString(MainActivity.EXTRA_MESSAGE);
```
-## 🔙 Getting data back from an Activity
+## 🔙 Intent Verilerini Eski Activity'e Aktarma
-### Use startActivityForResult\(\) to launch the Activity
+### 🎈 Activity'i `startActivityForResult()` ile Başlatma
```java
startActivityForResult(messageIntent, TEXT_REQUEST);
@@ -104,7 +132,7 @@ public static final int PHOTO_PICK_REQUEST = 2;
public static final int TEXT_REQUEST = 3;
```
-### Return a response from the launched Activity
+### 🖐 Başlatılan Activity'den Sonucu Alma
```java
Intent returnIntent = new Intent();
@@ -120,11 +148,12 @@ finish();
```
{% hint style="warning" %}
-To avoid confusing sent data with returned data, use a new `Intent` object rather than reusing the original sending `Intent` object.
+Gönderilen ve alınan verilerin karışmaması için yeni Intent oluşturarak `new Intent()` işlemler yapın
{% endhint %}
-### Read response data in onActivityResult\(\)
+### 👀 Sonuç Verisini Okuma
+* `onActivityResult()` yapısından gelen veriyi işleyerek sonucu ele alırız
* Aktivity'den yanıt geldiğinde çalışır
```java
@@ -177,6 +206,6 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
```
{% hint style="info" %}
-To support older versions of Android, include `` information to define the parent `Activity` explicitly
+Eski android sürümlerini desteklemek için `` yapısı kullanılır
{% endhint %}
diff --git a/programlama-notlari/component-isimleri.md b/temel-kavramlar/component-isimleri.md
similarity index 91%
rename from programlama-notlari/component-isimleri.md
rename to temel-kavramlar/component-isimleri.md
index c8bd983..a233193 100644
--- a/programlama-notlari/component-isimleri.md
+++ b/temel-kavramlar/component-isimleri.md
@@ -23,11 +23,11 @@ In the figure above:
## ⚫ Progress Bar
-![](../.gitbook/assets/image%20%2813%29.png)
+![](../.gitbook/assets/image%20%2815%29.png)
## 🔀 Navigation Bar
-![](../.gitbook/assets/image%20%2820%29.png)
+![](../.gitbook/assets/image%20%2822%29.png)
## 🕎 Navigation View
@@ -35,5 +35,5 @@ In the figure above:
## 💬 Alert Dialog
-![](../.gitbook/assets/image%20%2821%29.png)
+![](../.gitbook/assets/image%20%2823%29.png)
diff --git a/temel-kavramlar/implicit-intents.md b/temel-kavramlar/implicit-intents.md
new file mode 100644
index 0000000..b6fe158
--- /dev/null
+++ b/temel-kavramlar/implicit-intents.md
@@ -0,0 +1,191 @@
+# 🏹 Implicit intents
+
+## 🎯 Hangi Amaçla Kullanılır
+
+İşletim sistemi tarafından yönetilen isteklerdir
+
+* Hangi uygulamanın çalıştırılacağına işletim sistemi karar verir
+* Diğer uygulamalara istekte bulunmayı sağlar
+* [✅ App Chooser](implicit-intents.md#app-chooser) adı verilen yapı ile kullanıcıya seçim hakkı tanınır
+
+![](../.gitbook/assets/image%20%285%29.png)
+
+## ✅ App Chooser
+
+![](../.gitbook/assets/image%20%2812%29.png)
+
+##
+
+## ✨ Implicit Intent Oluşturma
+
+* `Intent` oluşturmadan önce isteği karşılayabilecek `Activity` var mı kontrol edilmelidir.
+* İsteklerini sağlayacak `Activity` olmazsa uygulama kapanır
+
+```java
+// Implicit intent oluşturma
+Intent sendIntent= new Intent();
+sendIntent.setAction(Intent.ACTION_SEND);
+sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
+sendIntent.setType("text/plain");
+
+// Intent başlığını ayarlama
+String title = getResources().getString(R.string.chooser_title);
+
+// App Chooser oluşturma
+Intent chooser = Intent.createChooser(sendIntent, title);
+
+// İsteği sağlayacak Activity var mı kontrolü
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+ startActivity(chooser);
+}
+```
+
+## 🔛 Implicit Intent Alma
+
+* `AndroidManifest.xml`dosyasında `intent-filter` ile tanımlanan uygulamalardan biri seçilir
+* `intent-filter` 0 veya daha fazla `action`,`category`veya `data` içerir
+* `intent-filter` içermeyen `Activity`'ler sadece explicit intent ile çağrılabilir
+* Birden fazla `intent-filter` veya bir `intent-filter` için birden fazla `action`, `category` veya `data` tanımlanabilir
+
+```markup
+
+
+
+
+
+
+```
+
+```markup
+
+
+
+
+
+
+
+```
+
+{% tabs %}
+{% tab title="Actions" %}
+* Action yapısı Intent üzerinde `ACTION_` ön eki ile kullanılır
+
+```markup
+
+
+
+
+
+```
+{% endtab %}
+
+{% tab title="Categories" %}
+* Category yapısı Intent üzerinde `CATEGORY_` ön eki ile kullanılır
+* Tüm implicit intent objelerine varsayılan olarak `android.intent.category.DEFAULT` atanır
+
+```markup
+
+
+
+
+```
+{% endtab %}
+
+{% tab title="Data" %}
+Alttaki yapıları vardır
+
+* URI Scheme
+* URI Host
+* URI Path
+* Mime type
+
+```markup
+
+
+
+
+```
+{% endtab %}
+{% endtabs %}
+
+## 🔀 `ShareCompat.IntentBuilder` ile Veri Paylaşma
+
+* Sosyal ağ uygulamalarında veri paylaşmak için kullanılan yöntemdir
+* Implicit intent yerine, Android sunduğu bu yapı daha faydalıdır
+
+```java
+ShareCompat.IntentBuilder
+ .from(this) // information about the calling activity
+ .setType(mimeType) // mime type for the data
+ .setChooserTitle("Share this text with: ") //title for the app chooser
+ .setText(txt) // intent data
+ .startChooser(); // send the intent
+```
+
+## 👨💼 Görevleri Yönetme
+
+* Android'in çalışma yapısı gereği, `Activity`'ler eski açık olanı kullanmak yerine kendileri yeni `Activity` oluştururlar \(Şekil 1\)
+* Implicit intent ile açılan `Activity`'ler de, asıl çalışan `Activity`'den bağımsız olarak açılır \(Şekil 2\)
+
+{% hint style="info" %}
+Bu yapı **Android Launch Modes** ile değiştirilebilmektedir.
+{% endhint %}
+
+![](../.gitbook/assets/image%20%283%29.png)
+
+![](../.gitbook/assets/image.png)
+
+## 🏁 Activity launch modes
+
+`AndroidManifest.xml` dosyası içerisindeki `` alanının değiştirilmesi ile yönetilir
+
+### 💠 Activity Özellikleri
+
+* Belirtilen `launchMode`değerlerinden biri kullanılır
+* Varsayılan olarak `standart` değeri seçilir
+
+| Launch Mode | Anlamı |
+| :--- | :--- |
+| `standart` | Android'in varsayılan modu |
+| `singleTop` | Activity, stack'te en tepede ise yeni işlerde yeni activity oluşturulmaz |
+| `singleTask` | Activity için yeni bir işlem tanımlandığında, işlem yapan activity kullanılır, yeni oluşturulmaz |
+| `singleInstance` | Activity yalnızca bir kez oluşturulur |
+
+```markup
+
+
+
+```
+
+### 🏴 Intent flags
+
+* Activity attributes gibidir, ama çakışma durumunda bayraklar ele alınır
+* `setFlag()` ve `getFlag()` ile kullanılır
+
+| Flag | Launch Mode karşılığı | Anlamı |
+| :--- | :--- | :--- |
+| [`FLAG_ACTIVITY_NEW_TASK`](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK) | `singleTask` | İşlem için var olan Activity'i kullanır |
+| [`FLAG_ACTIVITY_SINGLE_TOP`](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP) | `singleTop` | Activity, stack'te en tepede ise yeni işlerde yeni activity oluşturulmaz |
+| [`FLAG_ACTIVITY_CLEAR_TOP`](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP) | | Eğer activity stack'te varsa, onu tepeye alıp, üstündeki her activity'i `destroy` eder. FLAG\_ACTIVITY\_NEW\_TASK ile kullanılırsa activity işlemlerini ön plana taşır |
+
+### 👨💼 Yeni Intent Oluşumunu Yönetme
+
+* Genellikle `onResume()`'den sonra çalışır
+* `getIntent()` metodu her zaman, `Activity`'nin kendi `intent`'ini döndürdüğünden bu yapı kullanılır
+* `setIntent()` ile Activity intent'i değiştirilir
+
+```java
+@Override
+public void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ // Use the new intent, not the original one
+ setIntent(intent);
+}
+```
+
+
+
diff --git a/programlama-notlari/veri-saklama-yoentemleri.md b/veri-saklama-yoentemleri.md
similarity index 100%
rename from programlama-notlari/veri-saklama-yoentemleri.md
rename to veri-saklama-yoentemleri.md