مسیر یادگیری برنامه نویسی اندروید

یادگیری برنامه‌نویسی اندروید می‌تواند یک مسیر هیجان‌انگیز و پربار باشد که شما را به دنیای توسعه نرم‌افزارهای موبایل وارد می‌کند. این مسیر شامل مراحل مختلفی است که هر کدام به شما کمک می‌کنند تا مهارت‌ها و دانش مورد نیاز برای ساخت اپلیکیشن‌های اندرویدی را کسب کنید.

📚 12 دوره آموزشی
🗺️ 12 گام یادگیری

نقشه راه تعاملی برنامه نویسی اندروید

برنامه نویسی اندروید چیست؟

توسعه‌دهنده نرم‌افزار فردی است که با نوشتن کدهای کامپیوتر، برنامه‌ها، وب‌سایت‌ها و سامانه‌های دیجیتال را خلق و نگهداری می‌کند.

روز کاری و فعالیت‌های اصلی: روز کاری شامل بررسی کدهای قبلی، حل باگ‌های گزارش‌شده، پیاده‌سازی ویژگی‌های جدید، شرکت در جلسات کوتاه همگام‌سازی تیم و بازبینی کد همکاران است.

مراحل و سرفصل‌های یادگیری برنامه نویسی اندروید

برای تسلط کامل بر برنامه نویسی اندروید، این نقشه راه به مراحل مشخص تقسیم شده است. پیشنهاد می‌کنیم مراحل را به ترتیب و همراه با تمرین عملی طی کنید:

مرحله 1

مرحله 1: دوره صفر: آشنایی با برنامهنویسی موبایل

فصل اول: دنیای اپلیکیشنها

نرمافزار و اپلیکیشن چیست؟

درس 1: نرمافزار و اپلیکیشن چیست؟

تفاوت اپلیکیشن موبایل، وب و دسکتاپ

درس 2: تفاوت اپلیکیشن موبایل، وب و دسکتاپ

سیستمعامل چیست؟

درس 3: سیستمعامل چیست؟

Android چگونه اپلیکیشن را اجرا میکند؟

درس 4: Android چگونه اپلیکیشن را اجرا میکند؟

اپلیکیشن بومی یا Native چیست؟

درس 5: اپلیکیشن بومی یا Native چیست؟

تفاوت Native، وباپ و اپلیکیشن چندسکویی

درس 6: تفاوت Native، وباپ و اپلیکیشن چندسکویی

Frontend موبایل چیست؟

درس 7: Frontend موبایل چیست؟

Backend و API چه نقشی دارند؟

درس 8: Backend و API چه نقشی دارند؟

فصل دوم: اجزای یک اپلیکیشن

صفحه یا Screen

درس 1: صفحه یا Screen

دکمه، متن، تصویر و ورودی

درس 2: دکمه، متن، تصویر و ورودی

Navigation چیست؟

درس 3: Navigation چیست؟

دادههای محلی و آنلاین

درس 4: دادههای محلی و آنلاین

اعلان یا Notification

درس 5: اعلان یا Notification

دسترسیهای دوربین، موقعیت و فایل

درس 6: دسترسیهای دوربین، موقعیت و فایل

نصب، اجرا و حذف برنامه

درس 7: نصب، اجرا و حذف برنامه

بهروزرسانی اپلیکیشن

درس 8: بهروزرسانی اپلیکیشن

فصل سوم: ابزارهای توسعه

برنامهنویس اندروید از چه ابزارهایی استفاده میکند؟

درس 1: برنامهنویس اندروید از چه ابزارهایی استفاده میکند؟

نصب Android Studio

درس 2: نصب Android Studio

آشنایی با محیط Android Studio

درس 3: آشنایی با محیط Android Studio

Project و Module

درس 4: Project و Module

پوشهها و فایلهای پروژه

درس 5: پوشهها و فایلهای پروژه

Emulator چیست؟

درس 6: Emulator چیست؟

ساخت دستگاه مجازی

درس 7: ساخت دستگاه مجازی

اتصال گوشی واقعی

درس 8: اتصال گوشی واقعی

اجرای اولین برنامه

درس 9: اجرای اولین برنامه

توقف و اجرای مجدد برنامه

درس 10: توقف و اجرای مجدد برنامه

فصل چهارم: روش یادگیری برنامهنویسی

تفاوت دیدن آموزش و یادگیری

درس 1: تفاوت دیدن آموزش و یادگیری

کدنویسی همراه مدرس

درس 2: کدنویسی همراه مدرس

تمرین مستقل

درس 3: تمرین مستقل

خطا بخشی از برنامهنویسی است

درس 4: خطا بخشی از برنامهنویسی است

چگونه پیام خطا را بخوانیم؟

درس 5: چگونه پیام خطا را بخوانیم؟

چگونه سؤال فنی بپرسیم؟

درس 6: چگونه سؤال فنی بپرسیم؟

استفاده صحیح از جستوجو

درس 7: استفاده صحیح از جستوجو

استفاده صحیح از هوش مصنوعی

درس 8: استفاده صحیح از هوش مصنوعی

خطر کپیکردن کد بدون فهم

درس 9: خطر کپیکردن کد بدون فهم

ساخت دفترچه خطاها و آموختهها

درس 10: ساخت دفترچه خطاها و آموختهها

مرحله 2

مرحله 2: دوره اول: مبانی برنامهنویسی با Kotlin

فصل اول: اولین برنامه Kotlin

Kotlin چیست؟

درس 1: Kotlin چیست؟

ساخت فایل Kotlin

درس 2: ساخت فایل Kotlin

تابع main

درس 3: تابع main

نمایش متن با println

درس 4: نمایش متن با println

دستور و عبارت

درس 5: دستور و عبارت

Comment

درس 6: Comment

اجرای برنامه

درس 7: اجرای برنامه

خطای Syntax

درس 8: خطای Syntax

خواندن اولین پیام خطا

درس 9: خواندن اولین پیام خطا

فصل دوم: متغیرها

متغیر چیست؟

درس 1: متغیر چیست؟

تعریف متغیر با val

درس 2: تعریف متغیر با val

تعریف متغیر با var

درس 3: تعریف متغیر با var

تفاوت val و var

درس 4: تفاوت val و var

انتخاب نام مناسب

درس 5: انتخاب نام مناسب

تغییر مقدار متغیر

درس 6: تغییر مقدار متغیر

ثابت نگهداشتن داده

درس 7: ثابت نگهداشتن داده

Type Inference

درس 8: Type Inference

مشخصکردن نوع داده

درس 9: مشخصکردن نوع داده

فصل سوم: انواع داده

String

درس 1: String

Int

درس 2: Int

Long

درس 3: Long

Float و Double

درس 4: Float و Double

Boolean

درس 5: Boolean

Char

درس 6: Char

تبدیل نوع داده

درس 7: تبدیل نوع داده

دریافت ورودی کاربر

درس 8: دریافت ورودی کاربر

String Template

درس 9: String Template

استفاده از $ در متن

درس 10: استفاده از $ در متن

فصل چهارم: عملگرها

جمع، تفریق، ضرب و تقسیم

درس 1: جمع، تفریق، ضرب و تقسیم

باقیمانده تقسیم

درس 2: باقیمانده تقسیم

افزایش و کاهش

درس 3: افزایش و کاهش

عملگرهای مقایسه

درس 4: عملگرهای مقایسه

برابری و نابرابری

درس 5: برابری و نابرابری

عملگر &&

درس 6: عملگر &&

عملگر

درس 7: عملگر

عملگر !

درس 8: عملگر !

ترکیب چند شرط

درس 9: ترکیب چند شرط

اولویت عملگرها

درس 10: اولویت عملگرها

فصل پنجم: تصمیمگیری

مفهوم تصمیمگیری

درس 1: مفهوم تصمیمگیری

دستور if

درس 2: دستور if

else

درس 3: else

else if

درس 4: else if

استفاده از if بهعنوان Expression

درس 5: استفاده از if بهعنوان Expression

شرط تودرتو

درس 6: شرط تودرتو

دستور when

درس 7: دستور when

چند حالت در when

درس 8: چند حالت در when

شرطهای خوانا

درس 9: شرطهای خوانا

جلوگیری از شرطهای پیچیده

درس 10: جلوگیری از شرطهای پیچیده

فصل ششم: حلقهها

چرا به تکرار نیاز داریم؟

درس 1: چرا به تکرار نیاز داریم؟

حلقه for

درس 2: حلقه for

Range

درس 3: Range

حرکت صعودی و نزولی

درس 4: حرکت صعودی و نزولی

حلقه while

درس 5: حلقه while

حلقه do-while

درس 6: حلقه do-while

break

درس 7: break

continue

درس 8: continue

حلقه تودرتو

درس 9: حلقه تودرتو

جلوگیری از حلقه بینهایت

درس 10: جلوگیری از حلقه بینهایت

فصل هفتم: توابع

تابع چه مشکلی را حل میکند؟

درس 1: تابع چه مشکلی را حل میکند؟

تعریف تابع

درس 2: تعریف تابع

اجرای تابع

درس 3: اجرای تابع

پارامتر

درس 4: پارامتر

آرگومان

درس 5: آرگومان

مقدار بازگشتی

درس 6: مقدار بازگشتی

نوع خروجی

درس 7: نوع خروجی

مقدار پیشفرض

درس 8: مقدار پیشفرض

Named Argument

درس 9: Named Argument

تابع تکعبارتی

درس 10: تابع تکعبارتی

تقسیم مسئله به توابع کوچک

درس 11: تقسیم مسئله به توابع کوچک

نامگذاری تابع

درس 12: نامگذاری تابع

مرحله 3

مرحله 3: دوره دوم: Kotlin کاربردی و شیگرایی

فصل اول: Null Safety

مقدار Null چیست؟

درس 1: مقدار Null چیست؟

چرا Null باعث خطا میشود؟

درس 2: چرا Null باعث خطا میشود؟

نوع Nullable

درس 3: نوع Nullable

Safe Call با ?.

درس 4: Safe Call با ?.

Elvis Operator

درس 5: Elvis Operator

بررسی Null با if

درس 6: بررسی Null با if

let

درس 7: let

خطر !!

درس 8: خطر !!

طراحی داده بدون Null غیرضروری

درس 9: طراحی داده بدون Null غیرضروری

فصل دوم: List و Collection

Collection چیست؟

درس 1: Collection چیست؟

List

درس 2: List

MutableList

درس 3: MutableList

دسترسی به عضو

درس 4: دسترسی به عضو

اضافه و حذف عضو

درس 5: اضافه و حذف عضو

پیمایش فهرست

درس 6: پیمایش فهرست

forEach

درس 7: forEach

map

درس 8: map

filter

درس 9: filter

find

درس 10: find

sortedBy

درس 11: sortedBy

List شامل Object

درس 12: List شامل Object

فصل سوم: Set و Map

Set چیست؟

درس 1: Set چیست؟

حذف داده تکراری

درس 2: حذف داده تکراری

MutableSet

درس 3: MutableSet

Map چیست؟

درس 4: Map چیست؟

کلید و مقدار

درس 5: کلید و مقدار

خواندن مقدار

درس 6: خواندن مقدار

افزودن و حذف مقدار

درس 7: افزودن و حذف مقدار

پیمایش Map

درس 8: پیمایش Map

انتخاب Collection مناسب

درس 9: انتخاب Collection مناسب

فصل چهارم: کلاس و شیء

شیء چیست؟

درس 1: شیء چیست؟

Class چیست؟

درس 2: Class چیست؟

ساخت اولین Class

درس 3: ساخت اولین Class

Constructor

درس 4: Constructor

Property

درس 5: Property

Method

درس 6: Method

ساخت چند Object

درس 7: ساخت چند Object

مقدار پیشفرض

درس 8: مقدار پیشفرض

Visibility

درس 9: Visibility

مدلکردن کاربر و دوره

درس 10: مدلکردن کاربر و دوره

فصل پنجم: Data Class و Enum

Data Class چیست؟

درس 1: Data Class چیست؟

تولید خودکار توابع داده

درس 2: تولید خودکار توابع داده

تابع copy

درس 3: تابع copy

مقایسه اشیا

درس 4: مقایسه اشیا

Enum Class

درس 5: Enum Class

وضعیتهای محدود

درس 6: وضعیتهای محدود

مدلکردن وضعیت سفارش

درس 7: مدلکردن وضعیت سفارش

Sealed Class مقدماتی

درس 8: Sealed Class مقدماتی

مدلکردن Loading، Success و Error

درس 9: مدلکردن Loading، Success و Error

فصل ششم: اصول شیگرایی

Encapsulation

درس 1: Encapsulation

Inheritance

درس 2: Inheritance

Override

درس 3: Override

Abstract Class

درس 4: Abstract Class

Interface

درس 5: Interface

Polymorphism

درس 6: Polymorphism

Composition

درس 7: Composition

ارثبری یا ترکیب؟

درس 8: ارثبری یا ترکیب؟

جلوگیری از پیچیدگی غیرضروری

درس 9: جلوگیری از پیچیدگی غیرضروری

فصل هفتم: Lambda و توابع سطح بالاتر

Lambda چیست؟

درس 1: Lambda چیست؟

تابع بهعنوان ورودی

درس 2: تابع بهعنوان ورودی

Trailing Lambda

درس 3: Trailing Lambda

it

درس 4: it

Callback

درس 5: Callback

Function Type

درس 6: Function Type

استفاده از Lambda در رویداد دکمه

درس 7: استفاده از Lambda در رویداد دکمه

کاربرد Lambda در Compose

درس 8: کاربرد Lambda در Compose

فصل هشتم: مدیریت خطا

Exception چیست؟

درس 1: Exception چیست؟

try و catch

درس 2: try و catch

finally

درس 3: finally

چند نوع خطا

درس 4: چند نوع خطا

throw

درس 5: throw

پیام خطای مناسب

درس 6: پیام خطای مناسب

خطای فنی در برابر خطای قابلنمایش

درس 7: خطای فنی در برابر خطای قابلنمایش

جلوگیری از پنهانکردن خطاها

درس 8: جلوگیری از پنهانکردن خطاها

فصل نهم: ماژول و ساختار کد

Package چیست؟

درس 1: Package چیست؟

Import

درس 2: Import

تقسیم کد به چند فایل

درس 3: تقسیم کد به چند فایل

نامگذاری Package

درس 4: نامگذاری Package

جداسازی Modelها

درس 5: جداسازی Modelها

جداسازی منطق برنامه

درس 6: جداسازی منطق برنامه

Utility Function

درس 7: Utility Function

مستندسازی با KDoc

درس 8: مستندسازی با KDoc

خوانایی و بازسازی کد

درس 9: خوانایی و بازسازی کد

مرحله 4

مرحله 4: دوره سوم: مبانی سیستمعامل Android

فصل اول: ساختار پروژه Android

Project و Module

درس 1: Project و Module

پوشه app

درس 2: پوشه app

کدهای Kotlin

درس 3: کدهای Kotlin

پوشه res

درس 4: پوشه res

فایل Manifest

درس 5: فایل Manifest

فایلهای Gradle

درس 6: فایلهای Gradle

Dependency چیست؟

درس 7: Dependency چیست؟

Build چیست؟

درس 8: Build چیست؟

Debug و Release

درس 9: Debug و Release

Sync کردن پروژه

درس 10: Sync کردن پروژه

فصل دوم: Activity

Activity چیست؟

درس 1: Activity چیست؟

MainActivity

درس 2: MainActivity

نقطه شروع اپلیکیشن

درس 3: نقطه شروع اپلیکیشن

متد onCreate

درس 4: متد onCreate

ارتباط Activity و Compose

درس 5: ارتباط Activity و Compose

Activity در برابر Screen

درس 6: Activity در برابر Screen

یک Activity یا چند Activity؟

درس 7: یک Activity یا چند Activity؟

نقش Activity در معماری جدید

درس 8: نقش Activity در معماری جدید

فصل سوم: چرخه حیات

Lifecycle چیست؟

درس 1: Lifecycle چیست؟

ایجاد صفحه

درس 2: ایجاد صفحه

نمایش و فعالشدن

درس 3: نمایش و فعالشدن

رفتن برنامه به پسزمینه

درس 4: رفتن برنامه به پسزمینه

بازگشت به برنامه

درس 5: بازگشت به برنامه

بستهشدن Activity

درس 6: بستهشدن Activity

چرخش صفحه

درس 7: چرخش صفحه

از دسترفتن State

درس 8: از دسترفتن State

ثبت Lifecycle در Log

درس 9: ثبت Lifecycle در Log

جلوگیری از عملیات نامناسب

درس 10: جلوگیری از عملیات نامناسب

فصل چهارم: Resources

Resource چیست؟

درس 1: Resource چیست؟

String Resource

درس 2: String Resource

Color Resource

درس 3: Color Resource

Dimension

درس 4: Dimension

Drawable

درس 5: Drawable

آیکونها

درس 6: آیکونها

فونت

درس 7: فونت

دسترسی با کلاس R

درس 8: دسترسی با کلاس R

جداسازی متن از کد

درس 9: جداسازی متن از کد

منابع برای زبانهای مختلف

درس 10: منابع برای زبانهای مختلف

فصل پنجم: Manifest و تنظیمات برنامه

AndroidManifest چیست؟

درس 1: AndroidManifest چیست؟

معرفی Application

درس 2: معرفی Application

معرفی Activity

درس 3: معرفی Activity

Launcher Activity

درس 4: Launcher Activity

نام و آیکون برنامه

درس 5: نام و آیکون برنامه

Theme

درس 6: Theme

Permission

درس 7: Permission

Exported Component

درس 8: Exported Component

اینترنت

درس 9: اینترنت

حداقل نسخه سیستمعامل

درس 10: حداقل نسخه سیستمعامل

فصل ششم: Emulator و دستگاه واقعی

ساخت Emulator

درس 1: ساخت Emulator

انتخاب اندازه نمایشگر

درس 2: انتخاب اندازه نمایشگر

انتخاب نسخه Android

درس 3: انتخاب نسخه Android

نصب روی دستگاه واقعی

درس 4: نصب روی دستگاه واقعی

فعالسازی Developer Options

درس 5: فعالسازی Developer Options

USB Debugging

درس 6: USB Debugging

تست روی چند دستگاه

درس 7: تست روی چند دستگاه

شبیهسازی چرخش

درس 8: شبیهسازی چرخش

شبیهسازی اینترنت ضعیف

درس 9: شبیهسازی اینترنت ضعیف

تفاوت Emulator و گوشی واقعی

درس 10: تفاوت Emulator و گوشی واقعی

فصل هفتم: Debugging

Logcat

درس 1: Logcat

ثبت Log

درس 2: ثبت Log

فیلترکردن Logها

درس 3: فیلترکردن Logها

Stack Trace

درس 4: Stack Trace

Breakpoint

درس 5: Breakpoint

اجرای خطبهخط

درس 6: اجرای خطبهخط

مشاهده متغیرها

درس 7: مشاهده متغیرها

خطای Build

درس 8: خطای Build

خطای Runtime

درس 9: خطای Runtime

خطای منطقی

درس 10: خطای منطقی

مرحله 5

مرحله 5: دوره چهارم: رابط کاربری با Jetpack Compose

فصل اول: اولین Composable

رابط Declarative چیست؟

درس 1: رابط Declarative چیست؟

Annotation مربوط به Composable

درس 2: Annotation مربوط به Composable

ساخت اولین Composable

درس 3: ساخت اولین Composable

فراخوانی Composable

درس 4: فراخوانی Composable

تابع Preview

درس 5: تابع Preview

مشاهده در Design

درس 6: مشاهده در Design

تفاوت Preview و Emulator

درس 7: تفاوت Preview و Emulator

قوانین نامگذاری Composable

درس 8: قوانین نامگذاری Composable

فصل دوم: متن و تصویر

کامپوننت Text

درس 1: کامپوننت Text

اندازه و وزن متن

درس 2: اندازه و وزن متن

رنگ متن

درس 3: رنگ متن

TextAlign

درس 4: TextAlign

محدودکردن خطوط

درس 5: محدودکردن خطوط

Image

درس 6: Image

Painter Resource

درس 7: Painter Resource

Content Scale

درس 8: Content Scale

Content Description

درس 9: Content Description

ساخت کارت معرفی

درس 10: ساخت کارت معرفی

فصل سوم: Layoutهای اصلی

Column

درس 1: Column

Row

درس 2: Row

Box

درس 3: Box

ترتیب عناصر

درس 4: ترتیب عناصر

Alignment

درس 5: Alignment

Arrangement

درس 6: Arrangement

ترکیب Layoutها

درس 7: ترکیب Layoutها

ساخت Header

درس 8: ساخت Header

ساخت Profile Card

درس 9: ساخت Profile Card

شکستن صفحه به Composableهای کوچک

درس 10: شکستن صفحه به Composableهای کوچک

فصل چهارم: Modifier

Modifier چیست؟

درس 1: Modifier چیست؟

Padding

درس 2: Padding

Size

درس 3: Size

FillMaxWidth

درس 4: FillMaxWidth

Background

درس 5: Background

Border

درس 6: Border

Clip

درس 7: Clip

Clickable

درس 8: Clickable

ترتیب Modifierها

درس 9: ترتیب Modifierها

ساخت Modifier قابلاستفاده مجدد

درس 10: ساخت Modifier قابلاستفاده مجدد

فصل پنجم: Material 3

Design System چیست؟

درس 1: Design System چیست؟

Material Design

درس 2: Material Design

MaterialTheme

درس 3: MaterialTheme

Color Scheme

درس 4: Color Scheme

Typography

درس 5: Typography

Shapes

درس 6: Shapes

Button

درس 7: Button

Card

درس 8: Card

Scaffold

درس 9: Scaffold

TopAppBar

درس 10: TopAppBar

FloatingActionButton

درس 11: FloatingActionButton

طراحی یک صفحه کامل

درس 12: طراحی یک صفحه کامل

فصل ششم: فهرستها

نمایش چند داده

درس 1: نمایش چند داده

تفاوت Column و LazyColumn

درس 2: تفاوت Column و LazyColumn

items

درس 3: items

نمایش Index

درس 4: نمایش Index

LazyRow

درس 5: LazyRow

Grid

درس 6: Grid

کلید پایدار

درس 7: کلید پایدار

Divider

درس 8: Divider

فهرست خالی

درس 9: فهرست خالی

ساخت فهرست کتابها

درس 10: ساخت فهرست کتابها

فصل هفتم: آیکون و تصویر آنلاین

آیکونهای Material

درس 1: آیکونهای Material

IconButton

درس 2: IconButton

تصویر محلی

درس 3: تصویر محلی

تصویر آنلاین

درس 4: تصویر آنلاین

Placeholder

درس 5: Placeholder

نمایش خطای تصویر

درس 6: نمایش خطای تصویر

Crop کردن تصویر

درس 7: Crop کردن تصویر

Cache تصویر

درس 8: Cache تصویر

گالری ساده

درس 9: گالری ساده

بهینهسازی اندازه تصویر

درس 10: بهینهسازی اندازه تصویر

فصل هشتم: Theme روشن و تاریک

Dark Theme چیست؟

درس 1: Dark Theme چیست؟

رنگهای روشن

درس 2: رنگهای روشن

رنگهای تاریک

درس 3: رنگهای تاریک

تشخیص Theme سیستم

درس 4: تشخیص Theme سیستم

Dynamic Color

درس 5: Dynamic Color

کنتراست رنگ

درس 6: کنتراست رنگ

تست خوانایی

درس 7: تست خوانایی

ذخیره انتخاب کاربر

درس 8: ذخیره انتخاب کاربر

طراحی Theme اختصاصی

درس 9: طراحی Theme اختصاصی

مرحله 6

مرحله 6: دوره پنجم: تعامل، State، فرم و Navigation

فصل اول: رویدادها

Event چیست؟

درس 1: Event چیست؟

کلیک روی دکمه

درس 2: کلیک روی دکمه

Lambda در Event

درس 3: Lambda در Event

ارسال Event به Composable

درس 4: ارسال Event به Composable

Clickable Modifier

درس 5: Clickable Modifier

جلوگیری از رویداد تکراری

درس 6: جلوگیری از رویداد تکراری

فعال و غیرفعالکردن دکمه

درس 7: فعال و غیرفعالکردن دکمه

ساخت امتیازشمار

درس 8: ساخت امتیازشمار

فصل دوم: State در Compose

State چیست؟

درس 1: State چیست؟

Recomposition

درس 2: Recomposition

remember

درس 3: remember

mutableStateOf

درس 4: mutableStateOf

خواندن و تغییر State

درس 5: خواندن و تغییر State

State عددی

درس 6: State عددی

State متنی

درس 7: State متنی

State Boolean

درس 8: State Boolean

State List

درس 9: State List

تغییر امن Collection

درس 10: تغییر امن Collection

فصل سوم: State Hoisting

مشکل State داخلی

درس 1: مشکل State داخلی

Stateless Composable

درس 2: Stateless Composable

Stateful Composable

درس 3: Stateful Composable

انتقال State به والد

درس 4: انتقال State به والد

ارسال مقدار

درس 5: ارسال مقدار

ارسال Event

درس 6: ارسال Event

جریان داده یکطرفه

درس 7: جریان داده یکطرفه

ساخت کامپوننت قابلآزمایش

درس 8: ساخت کامپوننت قابلآزمایش

بازسازی فرم امتیاز

درس 9: بازسازی فرم امتیاز

فصل چهارم: فرمها

TextField

درس 1: TextField

OutlinedTextField

درس 2: OutlinedTextField

کنترل مقدار ورودی

درس 3: کنترل مقدار ورودی

Placeholder و Label

درس 4: Placeholder و Label

Keyboard Type

درس 5: Keyboard Type

Password Field

درس 6: Password Field

Checkbox

درس 7: Checkbox

Radio Button

درس 8: Radio Button

Switch

درس 9: Switch

اعتبارسنجی

درس 10: اعتبارسنجی

نمایش پیام خطا

درس 11: نمایش پیام خطا

ارسال فرم

درس 12: ارسال فرم

فصل پنجم: پیامها و Dialog

Snackbar

درس 1: Snackbar

Toast

درس 2: Toast

AlertDialog

درس 3: AlertDialog

تأیید حذف

درس 4: تأیید حذف

Bottom Sheet

درس 5: Bottom Sheet

Loading Indicator

درس 6: Loading Indicator

Empty State

درس 7: Empty State

Error State

درس 8: Error State

Success State

درس 9: Success State

بازخورد مناسب به کاربر

درس 10: بازخورد مناسب به کاربر

فصل ششم: Navigation

Navigation چیست؟

درس 1: Navigation چیست؟

مقصد یا Destination

درس 2: مقصد یا Destination

Navigation Host

درس 3: Navigation Host

تعریف Route

درس 4: تعریف Route

رفتن به صفحه دیگر

درس 5: رفتن به صفحه دیگر

بازگشت

درس 6: بازگشت

ارسال شناسه

درس 7: ارسال شناسه

پارامتر Route

درس 8: پارامتر Route

صفحه جزئیات

درس 9: صفحه جزئیات

Bottom Navigation

درس 10: Bottom Navigation

Deep Link مقدماتی

درس 11: Deep Link مقدماتی

جلوگیری از ارسال Object کامل

درس 12: جلوگیری از ارسال Object کامل

فصل هفتم: ذخیره وضعیت موقت

تفاوت State موقت و دائمی

درس 1: تفاوت State موقت و دائمی

چرخش صفحه

درس 2: چرخش صفحه

rememberSaveable

درس 3: rememberSaveable

ذخیره ورودی فرم

درس 4: ذخیره ورودی فرم

Saved State

درس 5: Saved State

State قابل ذخیره

درس 6: State قابل ذخیره

محدودیت ذخیره داده بزرگ

درس 7: محدودیت ذخیره داده بزرگ

بازسازی صفحه

درس 8: بازسازی صفحه

فصل هشتم: انیمیشن مقدماتی

انیمیشن چه زمانی مفید است؟

درس 1: انیمیشن چه زمانی مفید است؟

AnimatedVisibility

درس 2: AnimatedVisibility

Animate Content Size

درس 3: Animate Content Size

تغییر رنگ متحرک

درس 4: تغییر رنگ متحرک

تغییر اندازه

درس 5: تغییر اندازه

Transition

درس 6: Transition

حرکت میان Stateها

درس 7: حرکت میان Stateها

جلوگیری از انیمیشن اضافی

درس 8: جلوگیری از انیمیشن اضافی

ساخت کارت تعاملی

درس 9: ساخت کارت تعاملی

مرحله 7

مرحله 7: دوره ششم: معماری اپلیکیشن اندروید

فصل اول: مشکل پروژههای نامنظم

کد Spaghetti چیست؟

درس 1: کد Spaghetti چیست؟

منطق داخل Composable

درس 2: منطق داخل Composable

وابستگی مستقیم UI به داده

درس 3: وابستگی مستقیم UI به داده

مشکل تست

درس 4: مشکل تست

Separation of Concerns

درس 5: Separation of Concerns

لایه UI

درس 6: لایه UI

لایه Data

درس 7: لایه Data

Domain اختیاری

درس 8: Domain اختیاری

معماری متناسب با پروژه

درس 9: معماری متناسب با پروژه

فصل دوم: ViewModel

ViewModel چیست؟

درس 1: ViewModel چیست؟

طول عمر ViewModel

درس 2: طول عمر ViewModel

انتقال State از UI

درس 3: انتقال State از UI

تعریف UiState

درس 4: تعریف UiState

Eventهای صفحه

درس 5: Eventهای صفحه

تغییر State

درس 6: تغییر State

دریافت ViewModel در Compose

درس 7: دریافت ViewModel در Compose

جلوگیری از Context در ViewModel

درس 8: جلوگیری از Context در ViewModel

تست ساده ViewModel

درس 9: تست ساده ViewModel

فصل سوم: StateFlow

جریان داده چیست؟

درس 1: جریان داده چیست؟

Flow مقدماتی

درس 2: Flow مقدماتی

StateFlow

درس 3: StateFlow

MutableStateFlow

درس 4: MutableStateFlow

جمعآوری State در Compose

درس 5: جمعآوری State در Compose

تبدیل داده به UiState

درس 6: تبدیل داده به UiState

Loading، Success و Error

درس 7: Loading، Success و Error

State واحد صفحه

درس 8: State واحد صفحه

جلوگیری از Stateهای ناسازگار

درس 9: جلوگیری از Stateهای ناسازگار

فصل چهارم: Repository

Repository چیست؟

درس 1: Repository چیست؟

Data Source

درس 2: Data Source

Local Data Source

درس 3: Local Data Source

Remote Data Source

درس 4: Remote Data Source

Interface Repository

درس 5: Interface Repository

پیادهسازی Repository

درس 6: پیادهسازی Repository

تزریق Repository به ViewModel

درس 7: تزریق Repository به ViewModel

Fake Repository

درس 8: Fake Repository

منبع حقیقت یا Source of Truth

درس 9: منبع حقیقت یا Source of Truth

فصل پنجم: Coroutine

عملیات طولانی

درس 1: عملیات طولانی

Main Thread

درس 2: Main Thread

Blocking چیست؟

درس 3: Blocking چیست؟

Suspend Function

درس 4: Suspend Function

Coroutine Scope

درس 5: Coroutine Scope

launch

درس 6: launch

async مقدماتی

درس 7: async مقدماتی

Dispatcher

درس 8: Dispatcher

viewModelScope

درس 9: viewModelScope

مدیریت خطا

درس 10: مدیریت خطا

لغو Coroutine

درس 11: لغو Coroutine

Structured Concurrency

درس 12: Structured Concurrency

فصل ششم: Dependency Injection دستی

Dependency چیست؟

درس 1: Dependency چیست؟

ساخت مستقیم وابستگی

درس 2: ساخت مستقیم وابستگی

مشکل وابستگی سخت

درس 3: مشکل وابستگی سخت

Constructor Injection

درس 4: Constructor Injection

App Container

درس 5: App Container

Factory

درس 6: Factory

تزریق Repository

درس 7: تزریق Repository

جایگزینی Fake

درس 8: جایگزینی Fake

آمادهسازی برای Hilt

درس 9: آمادهسازی برای Hilt

فصل هفتم: ساختار پوشهها

ساختار مبتنی بر نوع فایل

درس 1: ساختار مبتنی بر نوع فایل

ساختار مبتنی بر Feature

درس 2: ساختار مبتنی بر Feature

Package مربوط به UI

درس 3: Package مربوط به UI

Package مربوط به Data

درس 4: Package مربوط به Data

Modelهای شبکه

درس 5: Modelهای شبکه

Modelهای پایگاه داده

درس 6: Modelهای پایگاه داده

مدل دامنه

درس 7: مدل دامنه

Mapper

درس 8: Mapper

نامگذاری فایلها

درس 9: نامگذاری فایلها

جلوگیری از معماری نمایشی

درس 10: جلوگیری از معماری نمایشی

مرحله 8

مرحله 8: دوره هفتم: ذخیرهسازی محلی و اپلیکیشن آفلاین

فصل اول: انواع ذخیرهسازی

حافظه موقت

درس 1: حافظه موقت

حافظه دائمی

درس 2: حافظه دائمی

فایل

درس 3: فایل

Preferences

درس 4: Preferences

Database

درس 5: Database

Cache

درس 6: Cache

انتخاب ابزار مناسب

درس 7: انتخاب ابزار مناسب

داده حساس و غیرحساس

درس 8: داده حساس و غیرحساس

فصل دوم: DataStore

DataStore چیست؟

درس 1: DataStore چیست؟

ذخیره تنظیمات کوچک

درس 2: ذخیره تنظیمات کوچک

Preferences DataStore

درس 3: Preferences DataStore

ذخیره Theme

درس 4: ذخیره Theme

ذخیره وضعیت ورود ساده

درس 5: ذخیره وضعیت ورود ساده

خواندن با Flow

درس 6: خواندن با Flow

ویرایش مقدار

درس 7: ویرایش مقدار

مقدار پیشفرض

درس 8: مقدار پیشفرض

مدیریت خطای خواندن

درس 9: مدیریت خطای خواندن

قرارگیری DataStore در Data Layer

درس 10: قرارگیری DataStore در Data Layer

فصل سوم: Room

SQLite چیست؟

درس 1: SQLite چیست؟

Room چه کاری انجام میدهد؟

درس 2: Room چه کاری انجام میدهد؟

Entity

درس 3: Entity

Primary Key

درس 4: Primary Key

DAO

درس 5: DAO

Database Class

درس 6: Database Class

Insert

درس 7: Insert

Select

درس 8: Select

Update

درس 9: Update

Delete

درس 10: Delete

Query با شرط

درس 11: Query با شرط

مرتبسازی

درس 12: مرتبسازی

فصل چهارم: ارتباط Room با Flow

مشاهده تغییر داده

درس 1: مشاهده تغییر داده

Query دارای Flow

درس 2: Query دارای Flow

Repository محلی

درس 3: Repository محلی

StateFlow در ViewModel

درس 4: StateFlow در ViewModel

نمایش فهرست

درس 5: نمایش فهرست

اضافهکردن داده

درس 6: اضافهکردن داده

ویرایش داده

درس 7: ویرایش داده

حذف با تأیید

درس 8: حذف با تأیید

Empty State

درس 9: Empty State

واکنش خودکار UI به Database

درس 10: واکنش خودکار UI به Database

فصل پنجم: ارتباط میان جدولها

ارتباط یکبهیک

درس 1: ارتباط یکبهیک

ارتباط یکبهچند

درس 2: ارتباط یکبهچند

ارتباط چندبهچند

درس 3: ارتباط چندبهچند

Foreign Key

درس 4: Foreign Key

جدول واسط

درس 5: جدول واسط

Transaction در Room

درس 6: Transaction در Room

Course و Lesson

درس 7: Course و Lesson

Student و Enrollment

درس 8: Student و Enrollment

Query دارای Relation

درس 9: Query دارای Relation

جلوگیری از داده تکراری

درس 10: جلوگیری از داده تکراری

فصل ششم: Migration و Backup

تغییر ساختار Database

درس 1: تغییر ساختار Database

Version

درس 2: Version

Migration

درس 3: Migration

افزودن ستون

درس 4: افزودن ستون

تغییر جدول

درس 5: تغییر جدول

خطر حذف داده

درس 6: خطر حذف داده

Migration دستی

درس 7: Migration دستی

تست Migration

درس 8: تست Migration

Export ساده اطلاعات

درس 9: Export ساده اطلاعات

بازیابی داده

درس 10: بازیابی داده

مرحله 9

مرحله 9: دوره هشتم: اتصال به اینترنت و Backend

فصل اول: مبانی شبکه

Client و Server

درس 1: Client و Server

Request و Response

درس 2: Request و Response

URL

درس 3: URL

HTTP Method

درس 4: HTTP Method

GET

درس 5: GET

POST

درس 6: POST

PUT و PATCH

درس 7: PUT و PATCH

DELETE

درس 8: DELETE

Status Code

درس 9: Status Code

Header

درس 10: Header

Body

درس 11: Body

HTTPS

درس 12: HTTPS

فصل دوم: JSON

JSON چیست؟

درس 1: JSON چیست؟

Object

درس 2: Object

Array

درس 3: Array

String، Number و Boolean

درس 4: String، Number و Boolean

Null

درس 5: Null

Nested Object

درس 6: Nested Object

تبدیل JSON به Data Class

درس 7: تبدیل JSON به Data Class

نام متفاوت فیلدها

درس 8: نام متفاوت فیلدها

داده ناقص

درس 9: داده ناقص

خطای تبدیل داده

درس 10: خطای تبدیل داده

فصل سوم: Retrofit

HTTP Client چیست؟

درس 1: HTTP Client چیست؟

اضافهکردن Retrofit

درس 2: اضافهکردن Retrofit

Base URL

درس 3: Base URL

API Interface

درس 4: API Interface

درخواست GET

درس 5: درخواست GET

Annotationهای مسیر

درس 6: Annotationهای مسیر

Query Parameter

درس 7: Query Parameter

Path Parameter

درس 8: Path Parameter

ارسال Body

درس 9: ارسال Body

تبدیل پاسخ

درس 10: تبدیل پاسخ

Timeout

درس 11: Timeout

مشاهده درخواستها

درس 12: مشاهده درخواستها

فصل چهارم: وضعیت درخواست

Loading

درس 1: Loading

Success

درس 2: Success

Error

درس 3: Error

Empty

درس 4: Empty

Retry

درس 5: Retry

خطای اینترنت

درس 6: خطای اینترنت

خطای سرور

درس 7: خطای سرور

خطای اعتبارسنجی

درس 8: خطای اعتبارسنجی

پیام قابلفهم

درس 9: پیام قابلفهم

جلوگیری از Crash

درس 10: جلوگیری از Crash

فصل پنجم: ارسال فرم به Backend

فرم ثبتنام

درس 1: فرم ثبتنام

Request Model

درس 2: Request Model

ارسال POST

درس 3: ارسال POST

دریافت Validation Error

درس 4: دریافت Validation Error

نمایش خطای هر فیلد

درس 5: نمایش خطای هر فیلد

جلوگیری از ارسال چندباره

درس 6: جلوگیری از ارسال چندباره

وضعیت ارسال

درس 7: وضعیت ارسال

پیام موفقیت

درس 8: پیام موفقیت

هدایت بعد از موفقیت

درس 9: هدایت بعد از موفقیت

ثبت Log بدون داده حساس

درس 10: ثبت Log بدون داده حساس

فصل ششم: احراز هویت

Authentication

درس 1: Authentication

Authorization

درس 2: Authorization

Access Token

درس 3: Access Token

Refresh Token

درس 4: Refresh Token

ورود کاربر

درس 5: ورود کاربر

ذخیره امن وضعیت ورود

درس 6: ذخیره امن وضعیت ورود

افزودن Token به Header

درس 7: افزودن Token به Header

دریافت پروفایل

درس 8: دریافت پروفایل

Refresh خودکار

درس 9: Refresh خودکار

خروج

درس 10: خروج

خطای 401

درس 11: خطای 401

دسترسی براساس نقش

درس 12: دسترسی براساس نقش

فصل هفتم: Repository آنلاین و آفلاین

Remote Data Source

درس 1: Remote Data Source

Local Data Source

درس 2: Local Data Source

Repository مشترک

درس 3: Repository مشترک

دریافت شبکه و ذخیره در Room

درس 4: دریافت شبکه و ذخیره در Room

نمایش داده محلی

درس 5: نمایش داده محلی

Refresh

درس 6: Refresh

Cache Policy

درس 7: Cache Policy

Offline First مقدماتی

درس 8: Offline First مقدماتی

داده قدیمی

درس 9: داده قدیمی

همگامسازی تغییرات

درس 10: همگامسازی تغییرات

فصل هشتم: Pagination

مشکل فهرستهای بزرگ

درس 1: مشکل فهرستهای بزرگ

مرحله 10

مرحله 10: دوره نهم: امکانات پیشرفته دستگاه و سنسورها

فصل اول: مدیریت دسترسی‌ها (Permissions)

انواع دسترسی‌ها (Normal vs Runtime Permission)

درس 1: انواع دسترسی‌ها (Normal vs Runtime Permission)

درخواست دسترسی در Runtime

درس 2: درخواست دسترسی در Runtime

کتابخانه Permission در Compose

درس 3: کتابخانه Permission در Compose

مدیریت پاسخ کاربر (Allow / Deny)

درس 4: مدیریت پاسخ کاربر (Allow / Deny)

توضیح علت دسترسی به کاربر (Rationale)

درس 5: توضیح علت دسترسی به کاربر (Rationale)

دسترسی دوربین و گالری

درس 6: دسترسی دوربین و گالری

دسترسی مکان‌نما (Location)

درس 7: دسترسی مکان‌نما (Location)

دسترسی حافظه در نسخه‌های جدید اندروید

درس 8: دسترسی حافظه در نسخه‌های جدید اندروید

دسترسی‌های حساس و حریم خصوصی

درس 9: دسترسی‌های حساس و حریم خصوصی

تست دسترسی‌ها در Emulator و گوشی

درس 10: تست دسترسی‌ها در Emulator و گوشی

فصل دوم: مکان‌نما و نقشه (Location & Maps)

Fused Location Provider

درس 1: Fused Location Provider

دریافت موقعیت کنونی کاربر

درس 2: دریافت موقعیت کنونی کاربر

به‌روزرسانی مداوم مکان

درس 3: به‌روزرسانی مداوم مکان

نمایش نقشه با Google Maps / Neshan SDK

درس 4: نمایش نقشه با Google Maps / Neshan SDK

افزودن Marker روی نقشه

درس 5: افزودن Marker روی نقشه

تغییر لایه و بزرگ‌نمایی نقشه

درس 6: تغییر لایه و بزرگ‌نمایی نقشه

محاسبه فاصله بین دو نقطه

درس 7: محاسبه فاصله بین دو نقطه

جست‌وجوی آدرس و Geocoding

درس 8: جست‌وجوی آدرس و Geocoding

مدیریت مصرف باتری در مکان‌نما

درس 9: مدیریت مصرف باتری در مکان‌نما

ساخت اپلیکیشن ردیاب سفارشی

درس 10: ساخت اپلیکیشن ردیاب سفارشی

فصل سوم: دوربین و فایل‌های چندرسانه‌ای

کتابخانه CameraX

درس 1: کتابخانه CameraX

نمایش تصویر زنده دوربین (Preview)

درس 2: نمایش تصویر زنده دوربین (Preview)

عکس‌برداری و ذخیره در فایل

درس 3: عکس‌برداری و ذخیره در فایل

ضبط ویدیو ساده

درس 4: ضبط ویدیو ساده

انتخاب تصویر از گالری با Photo Picker

درس 5: انتخاب تصویر از گالری با Photo Picker

فشرده‌سازی و تغییر اندازه تصویر

درس 6: فشرده‌سازی و تغییر اندازه تصویر

پخش فایل‌های صوتی با ExoPlayer / Media3

درس 7: پخش فایل‌های صوتی با ExoPlayer / Media3

پخش فایل‌های ویدیویی

درس 8: پخش فایل‌های ویدیویی

کنترل‌های پخش رسانه

درس 9: کنترل‌های پخش رسانه

ساخت اپلیکیشن آلبوم یا مدیاپلیر

درس 10: ساخت اپلیکیشن آلبوم یا مدیاپلیر

فصل چهارم: اعلان‌ها و کارهای پس‌زمینه (Notifications & WorkManager)

Notification Channel

درس 1: Notification Channel

ساخت و ارسال اعلان ساده

درس 2: ساخت و ارسال اعلان ساده

افزودن تصویر و دکمه به اعلان

درس 3: افزودن تصویر و دکمه به اعلان

بازکردن صفحه با کلیک روی اعلان

درس 4: بازکردن صفحه با کلیک روی اعلان

WorkManager چیست؟

درس 5: WorkManager چیست؟

ساخت OneTimeWorkRequest

درس 6: ساخت OneTimeWorkRequest

ساخت PeriodicWorkRequest

درس 7: ساخت PeriodicWorkRequest

تنظیم محدودیت‌های کاری (Constraints)

درس 8: تنظیم محدودیت‌های کاری (Constraints)

پاس دادن داده به Worker

درس 9: پاس دادن داده به Worker

همگام‌سازی داده در پس‌زمینه

درس 10: همگام‌سازی داده در پس‌زمینه

مرحله 11

مرحله 11: دوره دهم: تست‌نویسی، امنیت، بهینه‌سازی و چندزبانه

فصل اول: تست‌نویسی در اندروید

چرا در اندروید تست می‌نویسیم؟

درس 1: چرا در اندروید تست می‌نویسیم؟

Unit Test در برابر Instrumented Test

درس 2: Unit Test در برابر Instrumented Test

تست ViewModel با JUnit و Mockk

درس 3: تست ViewModel با JUnit و Mockk

تست Coroutines و Flow

درس 4: تست Coroutines و Flow

تست UI با Compose Testing Framework

درس 5: تست UI با Compose Testing Framework

یافتن کامپوننت‌ها با onNodeWithText

درس 6: یافتن کامپوننت‌ها با onNodeWithText

شبیه‌سازی کلیک و تایپ در تست

درس 7: شبیه‌سازی کلیک و تایپ در تست

تست Repository و Fake Data Sources

درس 8: تست Repository و Fake Data Sources

اندازه‌گیری پوشش تست (Code Coverage)

درس 9: اندازه‌گیری پوشش تست (Code Coverage)

اجرای خودکار تست‌ها

درس 10: اجرای خودکار تست‌ها

فصل دوم: امنیت اپلیکیشن اندروید

امنیت در برنامه‌نویسی اندروید

درس 1: امنیت در برنامه‌نویسی اندروید

EncryptedSharedPreferences و EncryptedDataStore

درس 2: EncryptedSharedPreferences و EncryptedDataStore

ذخیره‌سازی کلیدها با Android KeyStore

درس 3: ذخیره‌سازی کلیدها با Android KeyStore

ایمن‌سازی ارتباطات شبکه و Certificate Pinning

درس 4: ایمن‌سازی ارتباطات شبکه و Certificate Pinning

بررسی Root بودن دستگاه

درس 5: بررسی Root بودن دستگاه

جلوگیری از مهندسی معکوس کدها

درس 6: جلوگیری از مهندسی معکوس کدها

فعال‌سازی R8 و ProGuard

درس 7: فعال‌سازی R8 و ProGuard

مدیریت داده‌های حساس در حافظه

درس 8: مدیریت داده‌های حساس در حافظه

امنیت فریم‌ورک Compose و UI

درس 9: امنیت فریم‌ورک Compose و UI

چک‌لیست امنیت قبل از انتشار

درس 10: چک‌لیست امنیت قبل از انتشار

فصل سوم: بهینه‌سازی و کارایی (Performance)

ابزار Android Profiler

درس 1: ابزار Android Profiler

تحلیل مصرف حافظه (Memory Leak) و LeakCanary

درس 2: تحلیل مصرف حافظه (Memory Leak) و LeakCanary

بهینه‌سازی Recomposition در Compose

درس 3: بهینه‌سازی Recomposition در Compose

استفاده از @Stable و @Immutable

درس 4: استفاده از @Stable و @Immutable

بهینه‌سازی حجم APK / AAB

درس 5: بهینه‌سازی حجم APK / AAB

بهینه‌سازی تصاویر و استفاده از WebP

درس 6: بهینه‌سازی تصاویر و استفاده از WebP

بهینه‌سازی مصرف باتری

درس 7: بهینه‌سازی مصرف باتری

کاهش زمان بالا آمدن اپلیکیشن (App Startup)

درس 8: کاهش زمان بالا آمدن اپلیکیشن (App Startup)

شناسایی و رفع تکان‌های UI (Jank & Frame Drops)

درس 9: شناسایی و رفع تکان‌های UI (Jank & Frame Drops)

چك‌لیست بهینه‌سازی پروژه‌های بزرگ

درس 10: چك‌لیست بهینه‌سازی پروژه‌های بزرگ

فصل چهارم: چندزبانه و دسترس‌پذیری (Localization & Accessibility)

اهمیت چندزبانه بودن اپلیکیشن

درس 1: اهمیت چندزبانه بودن اپلیکیشن

افزودن زبان‌های جدید به Resourceها

درس 2: افزودن زبان‌های جدید به Resourceها

پشتیبانی کامل از راست‌به‌چپ (RTL) و فارسی

درس 3: پشتیبانی کامل از راست‌به‌چپ (RTL) و فارسی

راست‌چین‌سازی چیدمان‌ها در Compose

درس 4: راست‌چین‌سازی چیدمان‌ها در Compose

فرمت‌دهی تاریخ، زمان و اعداد بر اساس منطقه

درس 5: فرمت‌دهی تاریخ، زمان و اعداد بر اساس منطقه

دسترس‌پذیری (Accessibility) چیست؟

درس 6: دسترس‌پذیری (Accessibility) چیست؟

استفاده صحیح از Content Description

درس 7: استفاده صحیح از Content Description

تنظیم اندازه فونت و کنتراست رنگ‌ها

درس 8: تنظیم اندازه فونت و کنتراست رنگ‌ها

تست اپلیکیشن با TalkBack

درس 9: تست اپلیکیشن با TalkBack

آماده‌سازی نسخه بین‌المللی برنامه

درس 10: آماده‌سازی نسخه بین‌المللی برنامه

مرحله 12

مرحله 12: دوره یازدهم: پروژه واقعی، انتشار و ورود به بازار کار

فصل اول: توسعه پروژه نهایی اندروید

انتخاب موضوع پروژه واقعی و کاربردی

درس 1: انتخاب موضوع پروژه واقعی و کاربردی

تحلیل نیازمندی‌ها و طراحی Wireframe

درس 2: تحلیل نیازمندی‌ها و طراحی Wireframe

طراحی معماری لایه‌ای پروژه (Clean Architecture)

درس 3: طراحی معماری لایه‌ای پروژه (Clean Architecture)

ساخت لایه داده، دیتابیس محلی و شبکه

درس 4: ساخت لایه داده، دیتابیس محلی و شبکه

پیاده‌سازی لایه UI با Compose و Material 3

درس 5: پیاده‌سازی لایه UI با Compose و Material 3

اتصال لایه‌ها با ViewModel و StateFlow

درس 6: اتصال لایه‌ها با ViewModel و StateFlow

پیاده‌سازی حالت آنلاین و آفلاین (Offline-First)

درس 7: پیاده‌سازی حالت آنلاین و آفلاین (Offline-First)

نوشتن تست‌های جامع UI و Unit Tests

درس 8: نوشتن تست‌های جامع UI و Unit Tests

مدیریت خطاها و ساخت حالت‌های Loading/Error

درس 9: مدیریت خطاها و ساخت حالت‌های Loading/Error

ساخت نسخه کامل و نهایی پروژه

درس 10: ساخت نسخه کامل و نهایی پروژه

فصل دوم: ساخت خروجی، انتشار و رزومه

ساخت Keystore و کلید امضا (Signing Key)

درس 1: ساخت Keystore و کلید امضا (Signing Key)

تفاوت APK و Android App Bundle (AAB)

درس 2: تفاوت APK و Android App Bundle (AAB)

ساخت خروجی Release نهایی

درس 3: ساخت خروجی Release نهایی

آشنایی با قوانین انتشار در بازار، مایکت و گوگل‌پلی

درس 4: آشنایی با قوانین انتشار در بازار، مایکت و گوگل‌پلی

ساخت پنل توسعه‌دهندگان و آپلود برنامه

درس 5: ساخت پنل توسعه‌دهندگان و آپلود برنامه

نوشتن متن توضیحات، اسکرین‌شات‌ها و بنر مارکت

درس 6: نوشتن متن توضیحات، اسکرین‌شات‌ها و بنر مارکت

مدیریت به‌روزرسانی‌های جدید اپلیکیشن

درس 7: مدیریت به‌روزرسانی‌های جدید اپلیکیشن

ساخت نمونه‌کار حرفه‌ای در GitHub و آپلود ویدیو پیش‌نمایش

درس 8: ساخت نمونه‌کار حرفه‌ای در GitHub و آپلود ویدیو پیش‌نمایش

نوشتن رزومه استاندارد برنامه‌نویس اندروید (Kotlin / Compose)

درس 9: نوشتن رزومه استاندارد برنامه‌نویس اندروید (Kotlin / Compose)

آمادگی برای مصاحبه فنی اندروید و مسیر شغلی آینده

درس 10: آمادگی برای مصاحبه فنی اندروید و مسیر شغلی آینده

پروژه‌های پیشنهادی برای ساخت نمونه‌کار

🛠️ ساخت صفحه شخصی تعاملی یا کارت ویزیت دیجیتال

با استفاده از HTML و CSS و چند خط JavaScript ساده یک کارت ویزیت آنلاین با دکمه‌های تعاملی بساز.

مراحل اجرای پروژه آزمایشی:

  • یک فایل HTML بساز و نام و بیوگرافی خود را بنویس.
  • با CSS ظاهر دکمه‌ها و رنگ‌ها را زیبا کن.
  • با دکمه دارک‌مود یا انیمیشن ساده به آن رفتار تعاملی بده.

بازار کار و فرصت‌های شغلی برنامه نویسی اندروید

🎯 راه‌های ورود به بازار کار

  • پروژه فریلنسری کوچک
  • کارآموزی در شرکت‌های نوپا
  • ساخت نمونه‌کار در گیت‌هاب

⏱️ زمان و هزینه موردنیاز

۴ تا ۶ ماه یادگیری مداوم روزانه ۲ ساعت (با استفاده از منابع رایگان یا دوره‌های اقتصادی)

شیوه‌های کاری: امکان فریلنسری بسیار بالا، استخدام حضوری و دورکاری گسترده در ایران و جهان.

سوالات متداول و باورهای غلط درباره برنامه نویسی اندروید

خیر! این تصور یکی از باورهای اشتباهی است که افراد تازه‌کار درباره برنامه نویسی اندروید دارند. با آموزش گام‌به‌گام موازی و تمرین مستمر، هر علاقمندی می‌تواند بر مفاهیم تسلط پیدا کند.

خیر! این تصور یکی از باورهای اشتباهی است که افراد تازه‌کار درباره برنامه نویسی اندروید دارند. با آموزش گام‌به‌گام موازی و تمرین مستمر، هر علاقمندی می‌تواند بر مفاهیم تسلط پیدا کند.

footer-big-guy

به خبرنامه ما بپیوندید

اولین نفری باشید که از آخرین به‌روزرسانی‌ها، پیشنهادهای ویژه و موارد دیگر باخبر می‌شود.

کلیه حقوق مادی و معنوی این وب‌سایت متعلق به موازی می باشد.