آموزش برنامه مدرن غذا - توسعه اندروید با Kotlin

Modern Food Recipes App - Android Development with Kotlin

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
توضیحات دوره: با استفاده از قدرت زبان برنامه نویسی Kotlin اپلیکیشن اندروید زیبا و کاملا کاربردی را در اندروید استودیو توسعه دهید. ایجاد یک برنامه کاملاً کاربردی Android Food Recipes Android ROOM Database Injection Dependency - Dagger-Hilt Retrofit Offline Cache Local & Remote Data Sources Kotlin Kotlin Coroutines Android Architecture Component Navigation Component DataStore Preferences Data Binding ViewModel AndroidViewModel ReviewRcycler ارتباط سرور ارسال درخواست HTTP تجزیه پاسخ HTTP تم تیره و روشن طرح‌بندی حالت شب حالت حرکت اجزای متریال طراحی ایجاد افکت Shimmer Database Inspector ViewPager ViewPager2 ایجاد حالت کنش متنی اشتراک‌گذاری داده‌ها با برنامه‌های دیگر ایجاد Modal Bottom Sheet با ظاهر زیبا از kot-UI Design Miration-and افزونه افزونه ها و بیشتر... پیش نیازها:آشنایی اولیه زبان برنامه نویسی Kotlin دانش پایه اجزای معماری اندروید دانش Adobe XD مزیت است (اما ضروری نیست)

سلام و به دوره من خوش آمدید، در این دوره قصد دارم به شما یاد بدهم که چگونه با استفاده از قدرت زبان برنامه نویسی Kotlin یک برنامه اندروید کاملا کاربردی ایجاد کنید. ما قصد داریم برنامه Food Recipes را توسعه دهیم، جایی که می توانیم دستور العمل هایی را از انواع مختلف غذا و انواع رژیم غذایی مرور کنیم. این طراحی اپلیکیشن بسیار شبیه به دوره آموزشی Material UI Design من است که مدتی پیش ساخته بودم.

برنامه ما با منابع داده از راه دور و محلی کار خواهد کرد. و برای منبع داده از راه دور، ما از یک API شخص ثالث برای دستور العمل های غذا استفاده خواهیم کرد، به نام Spoonacular. من به شما آموزش می دهم که چگونه بین برنامه خود و سرور ارتباط برقرار کنید. بنابراین اساساً ما درخواست GET را به API خود ارسال می کنیم و لیستی از دستور العمل های غذا را به عنوان پاسخ دریافت می کنیم. همچنین برنامه ما قادر خواهد بود هیچ اتصال اینترنتی را مدیریت نکند و در صورت نیاز، داده ها را به صورت محلی در پایگاه داده ما ذخیره یا ذخیره کند.

همچنین از برنامه ما می‌توانیم مستقیماً دستور العمل‌ها را از API خود جستجو کنیم. بنابراین اگر طعم مورد علاقه خود را دارید، می توانید آن را در اینجا جستجو کنید و احتمالاً بسیاری از دستور العمل های شگفت انگیز را پیدا خواهید کرد. در مرحله بعد برنامه ما دارای Favorites Fragment خواهد بود که در آن می توانیم دستور العمل های مورد علاقه خود را برای استفاده بعدی در صورت نیاز ذخیره کنیم. و در نهایت برنامه ما جنبه سرگرم کننده آن را خواهد داشت و آن قطعه جوک غذایی است.


با این حال این دوره برای مبتدیان مطلق در توسعه اندروید نیست، حداقل شما باید دانش اولیه ای در مورد اکثر مؤلفه های محبوب معماری اندروید و به طور کلی زبان برنامه نویسی Kotlin داشته باشید. این کار آسانی نیست، به خصوص اگر قبلاً به طور همزمان با API و پایگاه داده محلی کار نکرده باشید. هنوز هم ناامید نشوید، البته اگر انگیزه کافی دارید، همه چیز در اینجا قابل یادگیری است.

یک چیز دیگر، بنابراین این دوره یک پروژه در حال انجام خواهد بود، به این معنی که من به‌روزرسانی‌ها را به صورت منظم پست می‌کنم، هر زمان که باگ جدیدی پیدا کنیم، یا هر زمان که نیاز به پاکسازی کد باشد. به همین دلیل است که می‌خواهم همه شما را که این دوره را تماشا می‌کنید درگیر کنم تا با من در بهتر کردن این برنامه همکاری کنید. البته در پایان این دوره، جزئیات بیشتری در مورد آن به شما ارائه خواهم کرد.

پس منتظر چه چیزی هستید، بیایید توسعه دهندگان را شروع کنیم!

کد منبع: از نمایه Github من (stevdza-san) دیدن کنید






سرفصل ها و درس ها

معرفی Introduction

  • معرفی Introduction

  • معرفی Introduction

  • طراحی اپلیکیشن Application Design

  • پیش نمایش برنامه Application Preview

  • نمای کلی ساختار پروژه Project Structure Overview

  • معرفی با API Introducing with API

  • معرفی با API Introducing with API

  • نمونه پاسخ API API Response Example

  • مخزن Github Github Repository

  • مخزن Github Github Repository

معرفی Introduction

  • طراحی اپلیکیشن Application Design

  • پیش نمایش برنامه Application Preview

  • نمای کلی ساختار پروژه Project Structure Overview

  • نمونه پاسخ API API Response Example

راه اندازی مؤلفه ناوبری Navigation Component Setup

  • راه اندازی پروژه Project Setup

  • راه اندازی مؤلفه ناوبری Navigation Component Setup

  • راه اندازی مؤلفه ناوبری Navigation Component Setup

راه اندازی مؤلفه ناوبری Navigation Component Setup

  • راه اندازی پروژه Project Setup

طرح بندی دستور العمل های طراحی Design RecipesFragment Layout

  • طرح بندی دستور العمل های طراحی Design RecipesFragment Layout

  • طرح بندی دستور العمل های طراحی Design RecipesFragment Layout

  • طراحی دستور العمل های RowLayout Design RecipesRowLayout

  • طراحی دستور العمل های RowLayout Design RecipesRowLayout

  • طرح بندی مکان یابی Recyclerview Design Recyclerview Placeholder Layout

  • طرح بندی مکان یابی Recyclerview Design Recyclerview Placeholder Layout

طرح بندی دستور العمل های طراحی Design RecipesFragment Layout

با Retrofit شروع کنید Start with Retrofit

  • معرفی با Retrofit Introducing with Retrofit

  • کلاس های مدل برای API ایجاد کنید Generate Model classes for API

  • کلاس Constants ایجاد کنید Create Constants class

  • کلاس Constants ایجاد کنید Create Constants class

  • ایجاد رابط RecipesApi Create RecipesApi interface

  • ایجاد رابط RecipesApi Create RecipesApi interface

  • نمای کلی ساختار پروژه و کلاس RemoteDataSource Project Structure Overview & RemoteDataSource class

  • نمای کلی ساختار پروژه و کلاس RemoteDataSource Project Structure Overview & RemoteDataSource class

با Retrofit شروع کنید Start with Retrofit

  • معرفی با Retrofit Introducing with Retrofit

  • کلاس های مدل برای API ایجاد کنید Generate Model classes for API

معرفی با تزریق وابستگی Introducing with Dependency Injection

  • بررسی اجمالی تزریق وابستگی Dependency Injection Overview

  • تزریق وابستگی دستی Manual Dependency Injection

  • مبانی خنجر Dagger Basics

  • مبانی خنجر Dagger Basics

  • Hilt - کتابخانه تزریق وابستگی | قسمت 1 Hilt - Dependency Injection Library | Part 1

  • Hilt - کتابخانه تزریق وابستگی | قسمت 1 Hilt - Dependency Injection Library | Part 1

  • Hilt - کتابخانه تزریق وابستگی | قسمت 2 Hilt - Dependency Injection Library | Part 2

  • Hilt - کتابخانه تزریق وابستگی | قسمت 2 Hilt - Dependency Injection Library | Part 2

  • محدوده بندی مؤلفه Component Scoping

معرفی با تزریق وابستگی Introducing with Dependency Injection

  • بررسی اجمالی تزریق وابستگی Dependency Injection Overview

  • تزریق وابستگی دستی Manual Dependency Injection

  • محدوده بندی مؤلفه Component Scoping

راه اندازی Dagger-Hilt - NetworkModule Dagger-Hilt Setup - NetworkModule

  • کلاس MyApplication ایجاد کنید Create MyApplication class

  • NetworkModule را ایجاد کنید Create NetworkModule

  • کلاس RemoteDataSource را تزریق کنید Inject RemoteDataSource class

  • ایجاد و تزریق کلاس Repository Create and Inject Repository class

  • ایجاد و تزریق کلاس Repository Create and Inject Repository class

  • کلاس NetworkResult ایجاد کنید Create NetworkResult class

  • ایجاد و تزریق کلاس MainViewModel Create and Inject MainViewModel class

راه اندازی Dagger-Hilt - NetworkModule Dagger-Hilt Setup - NetworkModule

  • کلاس MyApplication ایجاد کنید Create MyApplication class

  • NetworkModule را ایجاد کنید Create NetworkModule

  • کلاس RemoteDataSource را تزریق کنید Inject RemoteDataSource class

  • کلاس NetworkResult ایجاد کنید Create NetworkResult class

  • ایجاد و تزریق کلاس MainViewModel Create and Inject MainViewModel class

معرفی با Data Binding Introducing with Data Binding

  • معرفی با Data Binding Introducing with Data Binding

  • معرفی با Data Binding Introducing with Data Binding

  • آداپتورهای اتصال Binding Adapters

معرفی با Data Binding Introducing with Data Binding

  • آداپتورهای اتصال Binding Adapters

نمایش داده های API در Recyclerview Display API Data in Recyclerview

  • کلاس RecipesAdapter ایجاد کنید Create RecipesAdapter class

  • DiffUtil - کلاس RecipesDiffUtil را ایجاد کنید DiffUtil - Create RecipesDiffUtil class

  • DiffUtil - کلاس RecipesDiffUtil را ایجاد کنید DiffUtil - Create RecipesDiffUtil class

  • کلاس RecipesRowBinding ایجاد کنید Create RecipesRowBinding class

  • کلاس RecipesRowBinding ایجاد کنید Create RecipesRowBinding class

  • RecipesFragment - نقاط را به هم وصل کنید RecipesFragment - Connect the Dots

  • RecipesFragment - نقاط را به هم وصل کنید RecipesFragment - Connect the Dots

  • کلاس RecipesViewModel ایجاد کنید Create RecipesViewModel class

  • کلاس RecipesViewModel ایجاد کنید Create RecipesViewModel class

  • بیایید خلاصه کنیم Let's Recap

  • بیایید خلاصه کنیم Let's Recap

نمایش داده های API در Recyclerview Display API Data in Recyclerview

  • کلاس RecipesAdapter ایجاد کنید Create RecipesAdapter class

معرفی با ROOM Library Introducing with ROOM Library

  • معرفی با ROOM Library Introducing with ROOM Library

  • معرفی با ROOM Library Introducing with ROOM Library

معرفی با ROOM Library Introducing with ROOM Library

پایگاه داده اتاق ROOM Database

  • ذخیره آفلاین Offline Caching

  • معرفی با Kotlin Flow Introducing with Kotlin Flow

  • معرفی با Kotlin Flow Introducing with Kotlin Flow

  • ایجاد موجودیت (RecipesEntity) Create Entity (RecipesEntity)

  • ایجاد DAO (RecipesDao) Create DAO (RecipesDao)

  • ایجاد مبدل نوع (RecipesTypeConverter) Create Type Converter (RecipesTypeConverter)

  • ایجاد مبدل نوع (RecipesTypeConverter) Create Type Converter (RecipesTypeConverter)

  • ایجاد پایگاه داده (RecipesDatabase) Create Database (RecipesDatabase)

پایگاه داده اتاق ROOM Database

  • ذخیره آفلاین Offline Caching

  • ایجاد موجودیت (RecipesEntity) Create Entity (RecipesEntity)

  • ایجاد DAO (RecipesDao) Create DAO (RecipesDao)

  • ایجاد پایگاه داده (RecipesDatabase) Create Database (RecipesDatabase)

Dagger-Hilt Setup - DatabaseModule Dagger-Hilt Setup - DatabaseModule

  • DatabaseModule را ایجاد کنید Create DatabaseModule

  • LocalDataSource را ایجاد و تزریق کنید Create and Inject LocalDataSource

  • LocalDataSource را ایجاد و تزریق کنید Create and Inject LocalDataSource

  • MainViewModel - کش آفلاین MainViewModel - Offline Cache

  • RecipesFragment - از پایگاه داده بخوانید RecipesFragment - Read from Database

  • ObserveOnce - تابع پسوند ObserveOnce - Extension Function

  • بازرس پایگاه داده Database Inspector

  • بازرس پایگاه داده Database Inspector

  • تصویر جای جای - خطا Placeholder Image - Error

  • کلاس RecipesBinding ایجاد کنید Create RecipesBinding class

Dagger-Hilt Setup - DatabaseModule Dagger-Hilt Setup - DatabaseModule

  • DatabaseModule را ایجاد کنید Create DatabaseModule

  • MainViewModel - کش آفلاین MainViewModel - Offline Cache

  • RecipesFragment - از پایگاه داده بخوانید RecipesFragment - Read from Database

  • ObserveOnce - تابع پسوند ObserveOnce - Extension Function

  • تصویر جای جای - خطا Placeholder Image - Error

  • کلاس RecipesBinding ایجاد کنید Create RecipesBinding class

معرفی با تنظیمات DataStore Introducing with DataStore Preferences

  • معرفی با تنظیمات DataStore Introducing with DataStore Preferences

  • معرفی با تنظیمات DataStore Introducing with DataStore Preferences

معرفی با تنظیمات DataStore Introducing with DataStore Preferences

صفحه پایین را اضافه کنید Add Bottom Sheet

  • درباره BottomSheet About BottomSheet

  • طراحی دستور العمل های پایین صفحه Design RecipesBottomSheet

  • به RecipesBottomSheet بروید Navigate to RecipesBottomSheet

  • سفارشی کردن سبک تراشه Customize Chip Style

  • سفارشی کردن سبک تراشه Customize Chip Style

  • کلاس DataStoreRepository را ایجاد و تزریق کنید Create and Inject DataStoreRepository class

  • کلاس DataStoreRepository را ایجاد و تزریق کنید Create and Inject DataStoreRepository class

  • RecipesViewModel را اصلاح و تزریق کنید Modify and Inject RecipesViewModel

  • RecipesBottomSheet - ادامه تراشه های انتخاب شده RecipesBottomSheet - Persist Selected Chips

  • RecipesBottomSheet - ادامه تراشه های انتخاب شده RecipesBottomSheet - Persist Selected Chips

  • دسته بازگشت از BottomSheet - Safe Args Handle Return from BottomSheet - Safe Args

  • برگه پایین - خلاصه Bottom Sheet - Recap

صفحه پایین را اضافه کنید Add Bottom Sheet

  • درباره BottomSheet About BottomSheet

  • طراحی دستور العمل های پایین صفحه Design RecipesBottomSheet

  • به RecipesBottomSheet بروید Navigate to RecipesBottomSheet

  • RecipesViewModel را اصلاح و تزریق کنید Modify and Inject RecipesViewModel

  • دسته بازگشت از BottomSheet - Safe Args Handle Return from BottomSheet - Safe Args

  • برگه پایین - خلاصه Bottom Sheet - Recap

اتصال به اینترنت را مدیریت کنید Handle Internet Connection

  • معرفی با StateFlow Introducing with StateFlow

  • معرفی با StateFlow Introducing with StateFlow

  • کلاس NetworkListener ایجاد کنید Create NetworkListener class

  • کلاس NetworkListener ایجاد کنید Create NetworkListener class

  • RecipesFragment - گوش دادن به اتصال به اینترنت RecipesFragment - Listen for Internet Connection

  • بازگشت آنلاین - ماندگاری داده ها با DataStore Back Online - Persist data with DataStore

  • بازگشت آنلاین - ماندگاری داده ها با DataStore Back Online - Persist data with DataStore

اتصال به اینترنت را مدیریت کنید Handle Internet Connection

  • RecipesFragment - گوش دادن به اتصال به اینترنت RecipesFragment - Listen for Internet Connection

جستجوی دستور غذاها Search Recipes

  • طراحی منوی قطعه Design RecipesFragment Menu

  • طراحی منوی قطعه Design RecipesFragment Menu

  • FoodRecipesApi - searchRecipes() FoodRecipesApi - searchRecipes()

  • FoodRecipesApi - searchRecipes() FoodRecipesApi - searchRecipes()

  • RemoteDataSource - searchRecipes() RemoteDataSource - searchRecipes()

  • RemoteDataSource - searchRecipes() RemoteDataSource - searchRecipes()

  • MainViewModel - پاسخ جستجو را کنترل کنید MainViewModel - Handle Search Response

  • RecipesFragment - searchApiData() RecipesFragment - searchApiData()

  • RecipesFragment - searchApiData() RecipesFragment - searchApiData()

جستجوی دستور غذاها Search Recipes

  • MainViewModel - پاسخ جستجو را کنترل کنید MainViewModel - Handle Search Response

DetailsActivity & Overview Fragment DetailsActivity & OverviewFragment

  • طراحی فعالیت_جزئیات طرح Design activity_details Layout

  • ارسال نتیجه به DetailsActivity - Safe Args Send Result to DetailsActivity - Safe Args

  • کلاس PagerAdapter ایجاد کنید Create PagerAdapter class

  • طرح بندی قطعه_نمای کلی Design fragment_overview Layout

  • طرح بندی قطعه_نمای کلی Design fragment_overview Layout

  • OverviewFragment - نمایش داده های دستور غذا OverviewFragment - Display Recipe Data

  • تجزیه متن HTML - Jsoup Parse HTML Text - Jsoup

  • تجزیه متن HTML - Jsoup Parse HTML Text - Jsoup

DetailsActivity & Overview Fragment DetailsActivity & OverviewFragment

  • طراحی فعالیت_جزئیات طرح Design activity_details Layout

  • ارسال نتیجه به DetailsActivity - Safe Args Send Result to DetailsActivity - Safe Args

  • کلاس PagerAdapter ایجاد کنید Create PagerAdapter class

  • OverviewFragment - نمایش داده های دستور غذا OverviewFragment - Display Recipe Data

اجزای تشکیل دهنده IngredientsFragment

  • طرح بندی قطعات_مواد تشکیل دهنده Design fragment_ingredients Layout

  • اجزای_row_layout طراحی کنید Design ingredients_row_layout

  • کلاس RecipesDiffUtil را تغییر دهید Modify RecipesDiffUtil class

  • کلاس IngredientsAdapter ایجاد کنید Create IngredientsAdapter class

  • IngredientsFragment - نمایش داده های مواد تشکیل دهنده IngredientsFragment - Display Ingredients Data

  • IngredientsFragment - نمایش داده های مواد تشکیل دهنده IngredientsFragment - Display Ingredients Data

اجزای تشکیل دهنده IngredientsFragment

  • طرح بندی قطعات_مواد تشکیل دهنده Design fragment_ingredients Layout

  • اجزای_row_layout طراحی کنید Design ingredients_row_layout

  • کلاس RecipesDiffUtil را تغییر دهید Modify RecipesDiffUtil class

  • کلاس IngredientsAdapter ایجاد کنید Create IngredientsAdapter class

بخش دستورالعمل ها InstructionsFragment

  • اصلاح بخش دستورالعمل ها Modify InstructionsFragment

  • اصلاح بخش دستورالعمل ها Modify InstructionsFragment

  • OverviewFragment & recipes_row_layout را اصلاح کنید Modify OverviewFragment & recipes_row_layout

  • OverviewFragment & recipes_row_layout را اصلاح کنید Modify OverviewFragment & recipes_row_layout

بخش دستورالعمل ها InstructionsFragment

پایگاه داده اتاق - دستور العمل های مورد علاقه ROOM Database - Favorite Recipes

  • کلاس FavoritesEntity ایجاد کنید Create FavoritesEntity class

  • کلاس RecipesTypeConverter را تغییر دهید Modify RecipesTypeConverter class

  • کلاس RecipesTypeConverter را تغییر دهید Modify RecipesTypeConverter class

  • رابط RecipesDao را تغییر دهید Modify RecipesDao interface

  • کلاس LocalDataSource را تغییر دهید Modify LocalDataSource class

  • کلاس MainViewModel را تغییر دهید Modify MainViewModel class

  • کلاس RecipesDatabase را تغییر دهید Modify RecipesDatabase class

پایگاه داده اتاق - دستور العمل های مورد علاقه ROOM Database - Favorite Recipes

  • کلاس FavoritesEntity ایجاد کنید Create FavoritesEntity class

  • رابط RecipesDao را تغییر دهید Modify RecipesDao interface

  • کلاس LocalDataSource را تغییر دهید Modify LocalDataSource class

  • کلاس MainViewModel را تغییر دهید Modify MainViewModel class

  • کلاس RecipesDatabase را تغییر دهید Modify RecipesDatabase class

افزودن به موارد دلخواه - جزئیات فعالیت Add to Favorites - Details Activity

  • جزئیات_menu را ایجاد کنید Create details_menu

  • جزئیات_menu را ایجاد کنید Create details_menu

  • دستور غذا را در موارد دلخواه ذخیره کنید Save Recipe to Favorites

  • بررسی کنید که آیا دستور غذا ذخیره شده است Check if Recipe is Saved

  • بررسی کنید که آیا دستور غذا ذخیره شده است Check if Recipe is Saved

  • دستور غذا را از موارد دلخواه حذف کنید Remove Recipe from Favorites

  • دستور غذا را از موارد دلخواه حذف کنید Remove Recipe from Favorites

افزودن به موارد دلخواه - جزئیات فعالیت Add to Favorites - Details Activity

  • دستور غذا را در موارد دلخواه ذخیره کنید Save Recipe to Favorites

Favorite RecipesFragment FavoriteRecipesFragment

  • طرح بندی قطعه_مطلوب_دستورالعمل ها Design fragment_favorite_recipes Layout

  • طرح بندی قطعه_مطلوب_دستورالعمل ها Design fragment_favorite_recipes Layout

  • طراحی_طرح_طرح_دستور_غذایی_مورد علاقه Design favorite_recipes_row_layout

  • طراحی_طرح_طرح_دستور_غذایی_مورد علاقه Design favorite_recipes_row_layout

  • کلاس FavoriteRecipesAdapter ایجاد کنید Create FavoriteRecipesAdapter class

  • نمایش دستور العمل های مورد علاقه Display Favorite Recipes

  • نمایش دستور العمل های مورد علاقه Display Favorite Recipes

  • کلاس FavoriteRecipesBinding ایجاد کنید Create FavoriteRecipesBinding class

Favorite RecipesFragment FavoriteRecipesFragment

  • کلاس FavoriteRecipesAdapter ایجاد کنید Create FavoriteRecipesAdapter class

  • کلاس FavoriteRecipesBinding ایجاد کنید Create FavoriteRecipesBinding class

حالت عمل متنی Contextual Action Mode

  • FavoriteRecipesFragment - شنونده تک کلیکی FavoriteRecipesFragment - Single Click Listener

  • FavoriteRecipesFragment - شنونده تک کلیکی FavoriteRecipesFragment - Single Click Listener

  • FavoriteRecipesFragment - شنونده کلیک طولانی FavoriteRecipesFragment - Long Click Listener

  • سبک حالت عمل متنی را اعمال کنید Apply Contextual Action Mode Style

  • سبک حالت عمل متنی را اعمال کنید Apply Contextual Action Mode Style

  • سبک انتخاب دستور غذا - onLongClick Recipe Selection Style - onLongClick

  • سبک انتخاب دستور غذا - onLongClick Recipe Selection Style - onLongClick

  • عنوان حالت عمل متنی را اعمال کنید Apply Contextual Action Mode Title

  • عنوان حالت عمل متنی را اعمال کنید Apply Contextual Action Mode Title

  • دستور العمل های مورد علاقه انتخاب شده را حذف کنید Delete Selected Favorite Recipes

  • دستور العمل های مورد علاقه انتخاب شده را حذف کنید Delete Selected Favorite Recipes

  • حالت کنش متنی را ببندید Close Contextual Action Mode

  • حالت کنش متنی را ببندید Close Contextual Action Mode

  • FavoriteRecipesFragment - ParseHTML FavoriteRecipesFragment - ParseHTML

  • خلاصه - حالت عمل متنی Recap - Contextual Action Mode

  • منوی_recipes_favorite ایجاد کنید Create favorite_recipes_menu

حالت عمل متنی Contextual Action Mode

  • FavoriteRecipesFragment - شنونده کلیک طولانی FavoriteRecipesFragment - Long Click Listener

  • FavoriteRecipesFragment - ParseHTML FavoriteRecipesFragment - ParseHTML

  • خلاصه - حالت عمل متنی Recap - Contextual Action Mode

  • منوی_recipes_favorite ایجاد کنید Create favorite_recipes_menu

FoodJokeFragment FoodJokeFragment

  • طراحی قطعه_غذا_جوک Design fragment_food_joke

  • کلاس مدل FoodJoke ایجاد کنید Create FoodJoke model class

  • کلاس مدل FoodJoke ایجاد کنید Create FoodJoke model class

  • ایجاد درخواست FoodJoke GET Create FoodJoke GET Request

  • ایجاد درخواست FoodJoke GET Create FoodJoke GET Request

  • تغییر RemoteDataSource - FoodJoke Modify RemoteDataSource - FoodJoke

  • MainViewModel - FoodJoke را اصلاح کنید Modify MainViewModel - FoodJoke

  • کش آفلاین - FoodJoke Offline Cache - FoodJoke

  • FoodJokeFragment - بیایید شروع کنیم FoodJokeFragment - Let's Start

  • FoodJokeFragment - بیایید شروع کنیم FoodJokeFragment - Let's Start

  • کلاس FoodJokeBinding - قسمت 1 FoodJokeBinding class - Part 1

  • کلاس FoodJokeBinding - قسمت 1 FoodJokeBinding class - Part 1

  • کلاس FoodJokeBinding - قسمت 2 FoodJokeBinding class - Part 2

  • کلاس FoodJokeBinding - قسمت 2 FoodJokeBinding class - Part 2

  • افزودن منوی اشتراک گذاری Add Share Menu

  • خلاصه - FoodJokeFragment Recap - FoodJokeFragment

  • خلاصه - FoodJokeFragment Recap - FoodJokeFragment

FoodJokeFragment FoodJokeFragment

  • طراحی قطعه_غذا_جوک Design fragment_food_joke

  • تغییر RemoteDataSource - FoodJoke Modify RemoteDataSource - FoodJoke

  • MainViewModel - FoodJoke را اصلاح کنید Modify MainViewModel - FoodJoke

  • کش آفلاین - FoodJoke Offline Cache - FoodJoke

  • افزودن منوی اشتراک گذاری Add Share Menu

صفحه معرفی Splash Screen

  • اضافه کردن Splash Screen Add Splash Screen

صفحه معرفی Splash Screen

  • اضافه کردن Splash Screen Add Splash Screen

تم تیره Dark Theme

  • RecipesFragment - تم تاریک RecipesFragment - Dark Theme

  • Favorite RecipesFragment - تم تیره FavoriteRecipesFragment - Dark Theme

  • Favorite RecipesFragment - تم تیره FavoriteRecipesFragment - Dark Theme

  • FoodJokeFragment - تم تاریک FoodJokeFragment - Dark Theme

  • FoodJokeFragment - تم تاریک FoodJokeFragment - Dark Theme

  • RecipesBottomSheet - تم تیره RecipesBottomSheet - Dark Theme

  • RecipesBottomSheet - تم تیره RecipesBottomSheet - Dark Theme

  • طرح‌بندی ردیف جای‌بان - تم تیره Placeholder Row Layout - Dark Theme

  • طرح‌بندی ردیف جای‌بان - تم تیره Placeholder Row Layout - Dark Theme

  • DetailsActivity - تم تیره DetailsActivity - Dark Theme

  • بخش اجمالی - تم تاریک OverviewFragment - Dark Theme

  • IngredientsFragment - تم تاریک IngredientsFragment - Dark Theme

  • IngredientsFragment - تم تاریک IngredientsFragment - Dark Theme

تم تیره Dark Theme

  • RecipesFragment - تم تاریک RecipesFragment - Dark Theme

  • DetailsActivity - تم تیره DetailsActivity - Dark Theme

  • بخش اجمالی - تم تاریک OverviewFragment - Dark Theme

طرح بندی حرکتی Motion Layout

  • اضافه کردن طرح بندی حرکت - بخش کلی Add Motion Layout - OverviewFragment

  • اضافه کردن طرح بندی حرکت - بخش کلی Add Motion Layout - OverviewFragment

طرح بندی حرکتی Motion Layout

نماد برنامه App Icon

  • اضافه کردن نماد برنامه Add App Icon

نماد برنامه App Icon

  • اضافه کردن نماد برنامه Add App Icon

کلمه پایانی Final Word

  • کلمه پایانی Final Word

  • کلمه پایانی Final Word

کلمه پایانی Final Word

به‌روزرسانی‌های دوره - شکار اشکال و پاک‌سازی کد Course Updates - Bug Hunt & Code Cleanup

  • DataStore 1.0.0-alpha04 - مشکل بسته رفع شد DataStore 1.0.0-alpha04 - Package Issue Fixed

  • اشکال اتصال به اینترنت - رفع شد Internet Connection Bug - Fixed

  • اشکال اتصال به اینترنت - رفع شد Internet Connection Bug - Fixed

  • مهاجرت از افزونه 'kotlin-android-extensions' Migrate from 'kotlin-android-extensions' plugin

  • به ViewPager2 مهاجرت کنید Migrate to ViewPager2

  • به ViewPager2 مهاجرت کنید Migrate to ViewPager2

  • پاکسازی کد - RecipesBinding & RecipesRowBinding Code Cleanup - RecipesBinding & RecipesRowBinding

  • پاکسازی کد - RecipesBinding & RecipesRowBinding Code Cleanup - RecipesBinding & RecipesRowBinding

  • رفع نشت حافظه - RecipesBottomSheet Fix a Memory Leak - RecipesBottomSheet

  • FavoriteRecipesBinding - پاکسازی کد FavoriteRecipesBinding - Code Cleanup

  • FavoriteRecipesBinding - پاکسازی کد FavoriteRecipesBinding - Code Cleanup

  • مشکل ستاره زرد - رفع شد Yellow Star Issue - Fixed

  • مشکل ستاره زرد - رفع شد Yellow Star Issue - Fixed

  • حالت انتخاب چندگانه - ثابت شد Multi Selection Mode - Fixed

  • حالت انتخاب چندگانه - ثابت شد Multi Selection Mode - Fixed

  • RecyclerView - وضعیت انتخاب مورد - ثابت شد RecyclerView - Item Selection State - Fixed

  • به روز رسانی وابستگی - Dagger-Hilt و Data Store Dependency Update - Dagger-Hilt and Data Store

  • به روز رسانی وابستگی - Dagger-Hilt و Data Store Dependency Update - Dagger-Hilt and Data Store

  • به روز رسانی وابستگی - DataStore-Alpha07 Dependency Update - DataStore-Alpha07

  • به روز رسانی وابستگی - DataStore-Alpha07 Dependency Update - DataStore-Alpha07

  • OverviewFragment - پاکسازی کد OverviewFragment - Code Cleanup

  • Jcenter Migration + پاکسازی کد و رفع اشکال Jcenter Migration + Code Cleanup & Bug Fix

  • Jcenter Migration + پاکسازی کد و رفع اشکال Jcenter Migration + Code Cleanup & Bug Fix

  • اشکال RecipesBottomSheet رفع شد و به روز شد updateChip() fun RecipesBottomSheet bug fixed & Updated updateChip() fun

  • طرح بندی حرکت و تضاد حرکات پیجر را مشاهده کنید - رفع شد Motion Layout & View Pager gestures conflict - Fixed

  • تابع کلاس NetworkListener به روز شد NetworkListener's class function Updated

  • حذف کد منسوخ شده Removing Deprecated Code

  • حذف کد منسوخ شده Removing Deprecated Code

به‌روزرسانی‌های دوره - شکار اشکال و پاک‌سازی کد Course Updates - Bug Hunt & Code Cleanup

  • DataStore 1.0.0-alpha04 - مشکل بسته رفع شد DataStore 1.0.0-alpha04 - Package Issue Fixed

  • مهاجرت از افزونه 'kotlin-android-extensions' Migrate from 'kotlin-android-extensions' plugin

  • رفع نشت حافظه - RecipesBottomSheet Fix a Memory Leak - RecipesBottomSheet

  • RecyclerView - وضعیت انتخاب مورد - ثابت شد RecyclerView - Item Selection State - Fixed

  • OverviewFragment - پاکسازی کد OverviewFragment - Code Cleanup

  • اشکال RecipesBottomSheet رفع شد و به روز شد updateChip() fun RecipesBottomSheet bug fixed & Updated updateChip() fun

  • طرح بندی حرکت و تضاد حرکات پیجر را مشاهده کنید - رفع شد Motion Layout & View Pager gestures conflict - Fixed

  • تابع کلاس NetworkListener به روز شد NetworkListener's class function Updated

نمایش نظرات

نظری ارسال نشده است.

آموزش برنامه مدرن غذا - توسعه اندروید با Kotlin
خرید اشتراک و دانلود خرید تکی و دانلود | 160,000 تومان (5 روز مهلت دانلود) زمان تقریبی آماده سازی لینک دانلود این دوره آموزشی حدود 5 تا 24 ساعت می باشد.
جزییات دوره
16 hours
150
Udemy (یودمی) udemy-small
11 شهریور 1401 (آخرین آپدیت رو دریافت می‌کنید، حتی اگر این تاریخ بروز نباشد.)
4,036
4.6 از 5
دارد
دارد
دارد

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Stefan Jovanovic Stefan Jovanovic

برنامه نویس/طراح اندروید

Stefan Jovanovic Stefan Jovanovic

برنامه نویس/طراح اندروید

Udemy (یودمی)

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

یکی از ویژگی‌های برجسته یودمی، کیفیت بالای دوره‌ها و حضور استادان مجرب و با تجربه در هر حوزه است. این امر به کاربران اعتماد می‌دهد که در حال دریافت آموزش از منابع قابل اعتماد و معتبر هستند و می‌توانند به بهترین شکل ممکن از آموزش‌ها بهره ببرند. به طور خلاصه، یودمی به عنوان یکی از معتبرترین و موثرترین پلتفرم‌های آموزشی آنلاین، به افراد امکان می‌دهد تا به راحتی و با کیفیت، مهارت‌های مورد نیاز خود را ارتقا دهند و به دنبال رشد و پیشرفت شغلی خود باشند.